Buco di sicurezza in MySQL/MariaDB

È stato scoperto un pericoloso baco in MySQL/MariaDB che potrebbe permettere l’accesso come root ad un database server.

La vulnerabilità non funziona su tutte le installazioni di MySQL (inclusa CentOS) e dipende da come è stato compilato il server.

Il problema risiede nella routine di autenticazione di un utente. Quando viene aperta una connessione a MySQL/MariaDB viene generato un token calcolando un SHA della password fornita e di una stringa casuale; il token viene quindi confrontato con l’SHA calcolato con il valore corretto. Per un errore di cast potrebbe succedere che le due stringhe vengano considerate uguali anche se non lo sono e anche se memcmp() ritorna un valore diverso da zero; se si verifica questo caso, MySQL/MariaDB pensa che la password sia corretta e permette l’accesso. La probabilità che questo accada è di 1/256.

In base a ciò, se l’installazione è tra quelle vulnerabili, basta conoscere il nome di un utente valido (di solito root è un utente valido) e fare circa 200 tentativi per guadagnare l’accesso.

Questa command line bash riesce a far guadagnare quasi istantaneamente l’accesso ad un MySQL/MariaDB locale che presenta questo problema:

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

Ovviamente i server MySQL/MariaDB che non sono accessibili da Internet sono meno vulnerabili, posto che i binari siano soggetti a questo baco. (via ISC, The Hacker News)


Pubblicato

in

, ,

da

Commenti

6 risposte a “Buco di sicurezza in MySQL/MariaDB”

  1. […] una connessione a MySQL/MariaDB viene generato un token… Continua a leggere la notizia: Buco di sicurezza in MySQL/MariaDB Fonte: […]

  2. Avatar Kurgan

    E` sufficiente dare 200 volte la password errata? FANTASTICO. Ora sono contento di avere sempre bloccato l’accesso a mysql con regole di firewall, e di avere messo phpmyadmin sempre dietro una protezione con una password “aggiuntiva” di Apache.

  3. Avatar Chiccorosso
    Chiccorosso

    se come password usi “pippo” probabilmente in molti db accedi alla prima botta senza bisogno di falle nel software 😉

    Comunque si, il firewall davanti al db in questi casi è d’obbligo e solo se proprio si è COSTRETTI ad accedervi in remoto.

    1. Avatar Luigi Rosa

      La password “pippo” è, effettivamente, intenzionale 🙂

      Secondo me esporre un MySQL a tutto il mondo è un suicidio programmato.

  4. Avatar Kurgan

    Io ho diverse installazioni dove al DB si deve accedere da remoto, ma tipicamente solo da altre due o tre macchine, quindi firewallo banalmente per indirizzo ip di provenienza. Per la cronaca conosco diversi servizi di hosting che hanno il db aperto a tutti. Sempre per la cronaca, ho provato sulla mai Debian Squeeze e in 1000 tentativi non accede… forse su Debian il bug non si manifesta?

    1. Avatar Luigi Rosa

      Stamattina Ubuntu 12.04 mi ha proposto l’aggiornamento di MySQL.
      Credo che il problema sia limitato ad un ristretto numero di casi, nemmeno RedHat/CentOS sono interessate.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *