Empresa Qualys quatro no OpenBSD, uma das quais permite a conexão remota sem autenticação a alguns serviços de rede, enquanto as outras três elevam suas permissões no sistema. No relatório da Qualys, a rápida resposta dos desenvolvedores do OpenBSD é destacada — todos os problemas foram em e resolvidos dentro de 40 horas após a notificação privada.
A vulnerabilidade explorável remotamente é causada por um erro na organização da chamada do manipulador de autenticação na biblioteca libc, que chama
o programa /usr/libexec/auth/login_style passando argumentos na linha de comando. Incluindo ao chamar login_style utilizando o parâmetro opcional «-s service», é permitido passar o nome do protocolo. Se o nome de usuário começar com o símbolo «-«, esse nome será tratado como uma opção ao iniciar o login_style. Assim, se especificar como nome de usuário «-schallenge» ou «-schallenge:passwd» durante a autenticação, o login_style interpretará a chamada como um pedido para usar o manipulador .
O problema é que o protocolo S/K no login_style é suportado apenas formalmente, sendo de fato ignorado, mostrando um sinal de autenticação bem-sucedida. Assim, um atacante pode, ao se passar por um usuário «-schallenge», contornar a autenticação e obter acesso sem fornecer senha ou chaves. Potencialmente, todos os serviços de rede que utilizam chamadas padrão da libc para realizar autenticação estão vulneráveis. Por exemplo, a possibilidade de contornar a autenticação foi confirmada no smtpd (AUTH PLAIN), ldapd e radiusd.
No sshd, a vulnerabilidade não se manifesta, pois há uma proteção adicional com verificação da presença do usuário no sistema. No entanto, o sshd pode ser usado para verificar a vulnerabilidade do sistema — ao tentar conectar com o nome de usuário «-sresponse:passwd», a conexão congela, pois o sshd aguarda o retorno dos parâmetros de chamada (challenge) do login_passwd, enquanto o login_passwd aguarda a transmissão dos parâmetros ausentes (o nome «-sresponse» é percebido como uma opção). Potencialmente, um atacante local pode tentar contornar a autenticação na ferramenta su, mas passar o nome «-sresponse» causa a falha do processo devido ao retorno de um ponteiro nulo ao executar a função getpwnam_r(«-schallenge», …).
Outras vulnerabilidades:
- CVE-2019-19520 — elevação local de privilégios através de manipulações com a ferramenta xlock, que é fornecida com a flag sgid, alterando o grupo para "auth". No código do xlock, a redefinição de caminhos para bibliotecas é proibida apenas ao mudar o identificador de usuário (setuid), o que permite que um atacante altere a variável de ambiente "LIBGL_DRIVERS_PATH" e organize o carregamento de sua própria biblioteca compartilhada, cujo código será executado após a elevação de privilégios para o grupo "auth".
- CVE-2019-19522 — permite que um usuário local, que pertence ao grupo "auth", execute código com privilégios de root ao habilitar a autenticação no sistema através do S/Key ou YubiKey (não ativados por padrão). A entrada no grupo "auth", que pode ser obtida através da exploração da vulnerabilidade acima mencionada no xlock, permite gravar arquivos nos diretórios /etc/skey e /var/db/yubikey. Por exemplo, um atacante pode adicionar um novo arquivo /etc/skey/root para gerar chaves de uso único para autenticação como o usuário root através do S/Key.
- CVE-2019-19519 — possibilidade de elevação de limites de recursos através de manipulações com a ferramenta su. Ao especificar a opção "-L", que implica a repetição cíclica das tentativas de autenticação em caso de falha, a classe de usuário é definida apenas uma vez e não é redefinida nas tentativas seguintes. Um atacante pode executar "su -l -L" e na primeira tentativa inserir um login de outra pessoa com outra classe de conta, mas na segunda tentativa autenticar-se com sucesso sob sua própria conta. Nessa situação, os limites do usuário serão definidos de acordo com a classe de usuário especificada na primeira tentativa (por exemplo, o número máximo de processos ou o tamanho da memória para o processo). O método funciona apenas para emprestar limites de usuários não privilegiados, pois para o usuário root é necessária a presença no grupo wheel).
Adicionalmente, pode-se destacar no OpenBSD, um novo método de verificação de validade de chamadas de sistema, que complica ainda mais a exploração de vulnerabilidades. O método permite a execução de chamadas de sistema apenas se forem referenciadas de áreas de memória previamente registradas. Para marcar as áreas de memória nova chamada de sistema .
Fonte: opennet.ru
