2012-06-12: MySQL - luka dająca dostęp do roota
Sergei Golubchik, koordynator projektu MariaDB, odkrył bardzo poważny błąd bezpieczeństwa w bazie danych MySQL. Polega on na ominięciu autoryzacji i uzyskaniu bardzo łatwego dostępu do bazy danych z prawami administratora. Błąd o oznaczeniu CVE-2012-2122, pozwala atakującemu wykonać błędne logowanie ze złym hasłem i dać szansę dostępu. Szanse na zalogowanie się do bazy na konto root z błędnym hasłem wynoszą 1 na 256 prób. Aby się to udało, wystarczy wykonać odpowiednią przygotowaną pętle od 300 do 512 razy.
Firma Oracle załatała problem w serwerze MySQL (#64884) w wydaniach 5.1.63 i 5.5.24, które pojawiły się ponad 2 miesiące temu. Poprawki w dystrybucjach Linuksa powinny pojawić się niebawem.
Błąd polega na założeniu, że funkcja memcmp() zawsze zwraca wartość z przedziału -128 do 127. Na niektórych platformach z włączonymi optymalizacjami, funkcja ta potrafi zwrócić wartość z poza tego przedziału, co w efekcie powoduje, że funkcja porównująca zahashowane hasło, zwróci TRUE, w przypadku podania błędnego hasła.
Przykładowy exploit:
- $ for i in `seq 1 1000`; do mysql -u root --password=zlehaslo -h 127.0.0.1 2>/dev/null; done
- mysql>
Systemy, które posiadają luki w serwerze bazy danych:
- Ubuntu Linux 64-bit ( 10.04, 10.10, 11.04, 11.10, 12.04 )
- OpenSuSE 12.1 64-bit MySQL 5.5.23-log
- Fedora 16 64-bit
- Arch Linux
Systemy, które nie są podatne na atak:
- Oficjalne paczki MySQL oraz MariaDB (w tym wersje na Windows)
- Red Hat Enterprise Linux, CentOS (32-bit and 64-bit) [ not conclusive ]
- Ubuntu Linux 32-bit (10.04, 11.10, 12.04, likely all)
- Debian Linux 6.0.3 64-bit (Version 14.14 Distrib 5.5.18)
- Debian Linux lenny 32-bit 5.0.51a-24+lenny5 ( via @matthewbloch )
- Debian Linux lenny 64-bit 5.0.51a-24+lenny5 ( via @matthewbloch )
- Debian Linux lenny 64-bit 5.1.51-1-log ( via @matthewbloch )
- Debian Linux squeeze 64-bit 5.1.49-3-log ( via @matthewbloch )
- Debian Linux squeeze 32-bit 5.1.61-0+squeeze1 ( via @matthewbloch )
- Debian Linux squeeze 64-bit 5.1.61-0+squeeze1 ( via @matthewbloch )
- Gentoo 64-bit 5.1.62-r1 ( via @twit4c )
- SuSE 9.3 i586 MySQL 4.1.10a ( via @twit4c )
Źródła
edytuj- Artykuł wykorzystuje materiał pochodzący z tekstu „MySQL - tragikomiczna luka dająca dostęp do roota”, którego autorem jest Kamil Porembiński, opublikowanego w serwisie OSWorld (więcej informacji).