Progresso na criação de um exploit para OpenSSH 9.1

A Qualys encontrou uma maneira de contornar a proteção malloc e double-free para iniciar uma transferência de controle para o código usando uma vulnerabilidade no OpenSSH 9.1 que foi determinada como tendo baixo risco de criar uma exploração funcional. Ao mesmo tempo, a possibilidade de criar uma exploração funcional continua a ser uma grande questão.

A vulnerabilidade é causada por uma pré-autenticação dupla gratuita. Para criar condições para a manifestação da vulnerabilidade, basta alterar o banner do cliente SSH para “SSH-2.0-FuTTYSH_9.1p1” (ou outro cliente SSH antigo) para definir os sinalizadores “SSH_BUG_CURVE25519PAD” e “SSH_OLD_DHGEX”. Depois de definir esses sinalizadores, a memória do buffer “options.kex_algorithms” é liberada duas vezes.

Pesquisadores da Qualys, ao manipularem a vulnerabilidade, conseguiram obter o controle do registro do processador “%rip”, que contém um ponteiro para a próxima instrução a ser executada. A técnica de exploração desenvolvida permite transferir o controle para qualquer ponto no espaço de endereço do processo sshd em um ambiente OpenBSD 7.2 não atualizado, fornecido por padrão com OpenSSH 9.1.

Observa-se que o protótipo proposto é uma implementação apenas do primeiro estágio do ataque - para criar um exploit funcional, é necessário contornar os mecanismos de proteção ASLR, NX e ROP, e escapar do isolamento da sandbox, o que é improvável. Para resolver o problema de contornar ASLR, NX e ROP, é necessária a obtenção de informações sobre endereços, o que pode ser conseguido identificando outra vulnerabilidade que leva ao vazamento de informações. Um bug no processo pai ou kernel privilegiado pode ajudar a sair da sandbox.

Fonte: opennet.ru

Adicionar um comentário