IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MySQL Discussion :

MySQL/MariaDB : alerte à une faille de sécurité "tragiquement comique"


Sujet :

MySQL

  1. #1
    Expert éminent sénior
    Avatar de Idelways
    Homme Profil pro
    Développeur Ruby on Rails / iOS
    Inscrit en
    Juin 2010
    Messages
    1 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Développeur Ruby on Rails / iOS

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 374
    Points : 68 549
    Points
    68 549
    Par défaut MySQL/MariaDB : alerte à une faille de sécurité "tragiquement comique"
    MySQL et MariaDB : alerte à une faille de sécurité "tragiquement comique"
    50 % des serveurs seraient touchés


    MySQL et son fork MariaDB souffrent d'une grave vulnérabilité à une attaque de force brute, prodigieusement facile à exploiter.

    En peu de secondes, un pirate peut contourner l'authentification aux serveurs de base de données pour peu qu'il dispose d'un nom d'utilisateur correct (« root » est en général toujours présent et actif avec un maximum de prévilèges).
    Il suffit au pirate de répéter quelques centaines de tentatives de connexion avec un mot de passe erroné et le tour est joué, explique Sergei Golubchi, coordinateur sécurité à MariaDB sur le mailing-list oss-sec.

    La faille se situe au niveau d'une librairie C dont dépendent ces SGBD. Il s'agit d'une erreur de casting qui a une chance sur 256 fois de se produire lors de la vérification du résultat de comparaison des mots de passe fournis et attendus (avec la fonction memcmp). De ce fait, entre 300 et 512 tentatives de connexions devraient suffire pour gagner un accès non autorisé à la base.

    Code bash : Sélectionner tout - Visualiser dans une fenêtre à part
    $ for i in `seq 1 1000`; do mysql -u root --password=bad -h 127.0.0.1 2>/dev/null; done
    Boucle shell pour tester la vulnérabilité de son serveur

    Mais tous les builds ne sont pas vulnérables estime HD Moore, un expert en sécurité reconnu. Les builds officiels ne peuvent en l'occurrence être compromis à partir des versions 5.1.61, 5.2.11, 5.3.5 et 5.5.22.
    Ce n'est pas le cas de ceux d'Ubuntu Linux 64-bit (versions 8.04 jusqu'à la 12.04), OpenSuSE 12.1 64-bit MySQL 5.5.23-log, Debian Unstable 64-bit 5.5.23-2, Fedora, et Arch Linux.

    Les développeurs d'Ubuntu ont annoncé des mises à jour pour toutes les versions de MySQL depuis Ubuntu 8.04.

    Sur les 1.74 million de serveurs identifiés, Moore estime 50 % d'entre eux victimes d'une faille qu'il qualifie de « tragiquement comique ».

    En effet, le fix ne requiert la modification que d'une seule ligne de code.



    Sources :
    post de Sergei Golubchik
    post de HD Moor
    bulletin de sécurité
    Notice de sécurité d'Ubuntu

    Et vous ?
    Vos serveurs sont-ils vulnérables ?
    Que pensez-vous de cette vulnérabilité ?
    Images attachées Images attachées  

  2. #2
    Membre extrêmement actif

    Profil pro
    Grand Timonier des Chats
    Inscrit en
    Décembre 2011
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Grand Timonier des Chats

    Informations forums :
    Inscription : Décembre 2011
    Messages : 884
    Points : 3 321
    Points
    3 321
    Par défaut
    .....

    Comme quoi, à négliger les bases pour privilégier le haut niveau, on fait des grosses conneries.

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2010
    Messages
    657
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2010
    Messages : 657
    Points : 1 237
    Points
    1 237
    Par défaut
    wow ça fait peur...

  4. #4
    Membre expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Points : 3 675
    Points
    3 675
    Par défaut
    aie !

  5. #5
    Expert éminent
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Points : 9 402
    Points
    9 402
    Par défaut
    Je dirai même plus fortement sympathique. ^^'

  6. #6
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 372
    Points
    2 372
    Par défaut
    Bon bein je vais hacker de ce pas...

    Plus sérieusement cette nouvelle fait tache pour MySQL et MariaDB, mais bonne initiative de la part d'Ubuntu.

  7. #7
    Membre habitué
    Profil pro
    Inscrit en
    Août 2005
    Messages
    63
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 63
    Points : 144
    Points
    144
    Par défaut
    eh bien ça c'est de l'info avec en prime l'exemple exacte pour réaliser l'attaque Comme ça tous les apprentis sorciers vont devenir grands maitre en quelques secondes...

  8. #8
    Expert éminent
    Avatar de berceker united
    Profil pro
    SQL
    Inscrit en
    Février 2005
    Messages
    3 501
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : SQL
    Secteur : Finance

    Informations forums :
    Inscription : Février 2005
    Messages : 3 501
    Points : 6 088
    Points
    6 088
    Par défaut
    Citation Envoyé par Bart-Rennes Voir le message
    eh bien ça c'est de l'info avec en prime l'exemple exacte pour réaliser l'attaque Comme ça tous les apprentis sorciers vont devenir grands maitre en quelques secondes...
    Non le but, c'est que le entreprise puissent prendre le problème au sérieux de faire la correction très rapidement. C'est à dire de retirer [Root] .

  9. #9
    Membre habitué
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2011
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2011
    Messages : 108
    Points : 164
    Points
    164
    Par défaut
    Ça ne fait vraiment pas sérieux. Comment n'a-t-on pas pu s'en rendre compte avant !

  10. #10
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2009
    Messages
    383
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2009
    Messages : 383
    Points : 658
    Points
    658
    Par défaut
    La plupart du temps, il y a une restriction sur l'ip; soit uniquement en localhost (site web), soit l'utilisateur est restreint sur une ip. Quel est votre avis?

  11. #11
    Membre émérite

    Homme Profil pro
    Software Developer
    Inscrit en
    Mars 2008
    Messages
    1 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Software Developer

    Informations forums :
    Inscription : Mars 2008
    Messages : 1 470
    Points : 2 372
    Points
    2 372
    Par défaut
    Citation Envoyé par GATEN Voir le message
    Ça ne fait vraiment pas sérieux. Comment n'a-t-on pas pu s'en rendre compte avant !
    Ceux qui cherchent a pirater une base de données sont en général (juste en général ) mal intentionnés, et n'ont rien a gagner en donnant leurs petits secrets au monde entier.

    Je ne suis pas expert en sécurité, mais le probleme ici est qu'il faille effectuer une boucle, en général on teste une fonction sans faire une boucle de 300 passage consécutifs sur celle-ci.
    Le probleme était plus en bas-niveau

  12. #12
    Membre actif Avatar de buse974
    Homme Profil pro
    Développeur / Chef de projet informatique
    Inscrit en
    Février 2007
    Messages
    117
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur / Chef de projet informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2007
    Messages : 117
    Points : 245
    Points
    245
    Par défaut
    Salut.

    Perso mon serveur MySql et sur fedora, donc j'ai l'accès qu'en locahost a mon server SQL donc pas de problèmes au niveau de l'attaque car faut déjà entrer sur ma machine.

    J'ai quand même testé en local l'attaque pour le fun et ça fonctionne parfaitement, c'est pas très rassurant quand même.

  13. #13
    Expert confirmé Avatar de ManusDei
    Homme Profil pro
    vilain troll de l'UE
    Inscrit en
    Février 2010
    Messages
    1 624
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : vilain troll de l'UE

    Informations forums :
    Inscription : Février 2010
    Messages : 1 624
    Points : 4 391
    Points
    4 391
    Par défaut
    Bon, maintenant la question importante, developpez.net utilise MySQL ?

  14. #14
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2012
    Messages : 15
    Points : 17
    Points
    17
    Par défaut
    C'est marrant,

    j'ai vu en cours y'a pas si longtemps que ça qu'on pouvait attaquer memcmp de cette façon ...
    Testé en local avec une ubuntu 64 bits, pas eu de soucis (Et comme bien d'autres, j'avais activé l'accès en local exclusif pour la base ^^).

  15. #15
    Expert confirmé Avatar de fregolo52
    Homme Profil pro
    Développeur C
    Inscrit en
    Août 2004
    Messages
    2 366
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur C

    Informations forums :
    Inscription : Août 2004
    Messages : 2 366
    Points : 5 382
    Points
    5 382
    Par défaut
    Citation Envoyé par buse974 Voir le message
    Perso mon serveur MySql et sur fedora, donc j'ai l'accé qu'en locahost a mon server SQL donc pas de probléme au niveau de l'attaque car faut déja entrer sur ma machine.
    Donc, la question est : mon site est-il sécurisé contre les CSRF qui pourrait avoir accès à ma DB. Dans ce cas, l'attaque de la DB a lieu depuis localhost.

  16. #16
    Membre actif
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 66
    Points : 200
    Points
    200
    Par défaut
    « tragiquement comique ».
    Je n'ai jamais vu de faille qualifié ainsi. Cette faille est tellement facile à exploiter. Je me demande bien comment a-t-on fait pour ne pas s'en apercevoir avant?

    Quand on pense au nombre de serveurs utilisant MySQL, ça fait froid dans le dos.

  17. #17
    Membre extrêmement actif

    Profil pro
    Grand Timonier des Chats
    Inscrit en
    Décembre 2011
    Messages
    884
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Grand Timonier des Chats

    Informations forums :
    Inscription : Décembre 2011
    Messages : 884
    Points : 3 321
    Points
    3 321
    Par défaut
    Citation Envoyé par rhludovic Voir le message
    Je n'ai jamais vu de faille qualifié ainsi. Cette faille est tellement facile à exploiter. Je me demande bien comment a-t-on fait pour ne pas s'en apercevoir avant?

    Quand on pense au nombre de serveurs utilisant MySQL, ça fait froid dans le dos.
    Qui te dit que la faille n'a pas été déjà exploitée?

  18. #18
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 150
    Points : 28 130
    Points
    28 130
    Par défaut
    Citation Envoyé par Idelways Voir le message
    La faille se situe au niveau d'une librairie C dont dépendent ces SGBD. Il s'agit d'une erreur de casting qui a une chance sur 256 fois de se produire lors de la vérification du résultat de comparaison des mots de passe fournis et attendus (avec la fonction memcmp).


    Que pensez-vous de cette vulnérabilité ?
    Un peu plus d'explications : la lib teste le mot de passe sur plus de caracteres que ne le supporte mysql, qui tronque donc simplement (cast) avant de faire la comparaison. C'est ballot. Et pour repondre a javaBean, le fait de tronquer une valeur est une connerie du developpeur qui n'a rien a voir avec le langage utilise.

    Cette vulnerabilite montre bien que, lorsqu'on ne sait pas ce que l'on fait, il y a des chances pour que ca se passe mal.
    La securite est souvent ajoutee en dernier, apres que l'application ait ete developpee, par des gens n'y connaissant pas forcement grand chose. Dans ce cas, le bugfix est dramatiquement simple, mais il y a des cas ou c'est tout le design de l'application qu'il faut revoir, pour la meme faute de conception au demarrage.

  19. #19
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2011
    Messages
    214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2011
    Messages : 214
    Points : 338
    Points
    338
    Par défaut
    C'est pas trop étonnant quand on connaît l'histoire de ce "SGBD".

    Sinon c'est humain de faire des erreurs mais la question intéressante c'est de savoir avec qu'elle facilité on peut les détecter, surtout si elles sont critiques.

  20. #20
    Membre confirmé
    Avatar de gb_68
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2006
    Messages
    232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2006
    Messages : 232
    Points : 547
    Points
    547
    Par défaut
    J'avoue ne pas avoir tout de suite compris ce bug ayant une probabilité de 1/256.
    Voici quelques morceaux codes complémentaires :
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    /*
        Check that scrambled message corresponds to the password; the function
    [...]
      RETURN VALUE
        0  password is correct
        !0  password is invalid
    */
     
    my_bool
    check_scramble(const char *scramble_arg, const char *message,
                   const uint8 *hash_stage2)
    {
    Donc la fonction doit renvoyer 0 si le mot de passe est correcte et un nombre quelconque différent de zéro dans le cas contraire.
    C'est bien ce que fait memcmp
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    return memcmp(hash_stage2, hash_stage2_reassured, SHA1_HASH_SIZE);
    Le hic est que le type retourné par memcmp est un int alors que my_bool est défini comme suit (/include/my_global.h)
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    typedef char		my_bool; /* Small bool */
    Le cast int -> char revient à faire un modulo 256, soit transformer toutes les valeurs multiples de 256 en 0. Si l'on considère que memcmp va nous renvoyer de manière uniforme toutes les valeurs possibles alors l'on obtient cette roulette russe de 1/256 pour le mot de passe.

Discussions similaires

  1. Réponses: 34
    Dernier message: 19/06/2012, 09h05
  2. Réponses: 15
    Dernier message: 17/07/2009, 23h18
  3. Réponses: 0
    Dernier message: 15/07/2009, 12h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo