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

  1. #1
    Expert éminent sénior
    Avatar de Katleen Erna
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    1 547
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 547
    Points : 76 188
    Points
    76 188
    Par défaut Des millions de sites et de web apps vulnérables à des attaques par timing, d'après deux experts en sécurité
    Des millions de sites et de web apps vulnérables, les attaques par timing sont-elles une menace sérieuse ?

    Nate Lawson (fondateur de Root Labs) et Taylor Nelson sont deux experts en sécurité informatique qui viennent d'annoncer avoir découvert une faille de sécurité très répandue dans les applications Web utilisées quotidiennement par des millions d'internautes, et qui pourrait être exploitée par une attaque cryptographique populaire dans les milieux du hacking.

    Des dizaines de bibliothèques équipant des softwares open-source servant à vérifier les mots de passe et les noms d'utilisateur seraient ainsi concernées, dont celles des logiciels qui implémentent les standards OAuth et OpenID (ce sont les types d'authentifications utilisées par Twitter par exemple).

    D'après les chercheurs, certaines versions de ses systèmes de login seraient vulnérables aux attaques de type "timing" (qui sont connues depuis près de 25 ans par les cryptographes).

    Les "timing attacks" sont réputées être difficiles à mettre en oeuvre sur un réseau, et pourtant... Elles nécessitent juste une exacte précision dans les mesures. Pour rappel, elles fonctionnent en mesurant le laps de temps nécessaire à un ordinateur pour répondre à une demande de login. Dans certains systèmes, la machine vérifiera tous les caractères d'un mot de passe en une seule fois en renvoyant un "login failed" dès qu'elle détectera une lettre ou un signe erroné dans la combinaison.

    Alors forcément, à force d'essayer encore et encore, un programme spécifique aura vite fait de mesurer le temps de réponse de l'ordinateur et ainsi de deviner les premiers caractères du mot de passe jusqu'à le déchiffrer en entier.

    Il y a trois ans, cette technique avait été utilisée pour hacker le système Microsoft de la Xbox 360.

    Certains développeurs Web réfutent ces thèses et affirment que d'autres facteurs (les "network jitter") ont une influence sur le temps de réponse d'un PC et peuvent soit l'accélérer, soit le ralentir. DE ce fait, et selon eux, il serait impossible d'obtenir un résultat assez précis (de l'ordre de la nanoseconde) pour réaliser une timing attack sur Internet.

    Lawson et Nelson veulent prouver que ceci est faux et que ces risques sont trop souvent sous-estimés par les professionnels. Ils ont réalisé des tests sur ce type d'attaques sur le Net, mais aussi dans des environnements Cloud et sur des réseaux locaux. Dans les trois cas, ils ont été capables de cracker des mots de passe à l'aide d'algorithmes qui annulaient les effets du network jitter.

    Ceci leur a permis de découvrir que les programmes écrits avec des langages interprétés (comme Python ou Ruby) étaient plus vulnérables que les autres, car ils génèrent des réponses plus lentes.

    Les deux experts ont avertis les responsables et développeurs des programmes affectés par le problème. Ils ne dévoileront pas la liste des produits atteints tant qu'ils ne seront pas patchés. La solution qu'ils proposent : reprogrammer le système pour qu'il envoie une réponse d'un temps égal en cas de mot de passe correct comme de mot de passe erroné, ce qui ne prendrait que 6 lignes de code d'après Lawson.

    Source : L'annonce de la présentation de Lawson et Nelson à la Black Hat de Las Vegas, où ils donneront davantage de précisions.

    Beaucoup pensent que les timing attacks sont impossibles à réaliser. Pensez-vous qu'ils ont raison, ou qu'au contraire ils sous-estiment ce problème qui est plus sérieux qu'on ne le croit ?

  2. #2
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    Toutes failles sont graves mais il semble qu'encore plus de 90% des sites web contiennent toujours les failles populaires: XSS et Injections SQL
    En tant que développeur, j'admets que ce chiffre est vrai car moi-même, je n'ai jamais codé des codes évitant ces failles
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  3. #3
    Membre expérimenté
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    690
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Juillet 2005
    Messages : 690
    Points : 1 647
    Points
    1 647
    Par défaut
    T'as développé quoi comme site ?

  4. #4
    Membre expérimenté
    Avatar de randriano
    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    1 218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Madagascar

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 218
    Points : 1 437
    Points
    1 437
    Par défaut
    C'est vrai que ce j'ai dit c'est

    Ce sont surtout les forums qui présentent à 90% des failles mais il est vrai que vBulletin comme ici est assez sécurisé
    randriano.dvp.com
    Développeur. Product Owner [Agile]. Sites web, mobile apps, système d'information (SI).

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Février 2005
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 56
    Points : 219
    Points
    219
    Par défaut
    je comprends toujours pas pourquoi ils ne font pas comme gmail pour les login et passwords:
    x essais, si x est dépassé alors on demande en plus un captcha.
    Et ajouter un temps d'attente de plus en plus long entre chaque essais, du type exponentiel.(je sais pas si gmail fait ca par contre)
    Bref un système pour empêcher le brute forcing en gros, ce qui devrait limiter ce genre d'attaque même si la méthode n'est pas parfaitement adaptée au problème.

  6. #6
    Membre expert
    Avatar de FailMan
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2010
    Messages
    1 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 602
    Points : 3 917
    Points
    3 917
    Par défaut
    Citation Envoyé par zoonel Voir le message
    Bref un système pour empêcher le brute forcing en gros, ce qui devrait limiter ce genre d'attaque même si la méthode n'est pas parfaitement adaptée au problème.
    Il me semble que vBulletin te mets un délai de 15 minutes au bout de 5 mots de passe erronés, cependant pas de captcha.
    Une erreur fréquente que les gens font quand ils tentent de réaliser quelque chose à l'épreuve des imbéciles est de sous-estimer l'ingéniosité de ceux-ci. - Douglas Adams

  7. #7
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par zoonel Voir le message
    je comprends toujours pas pourquoi ils ne font pas comme gmail pour les login et passwords:
    x essais, si x est dépassé alors on demande en plus un captcha.
    Et ajouter un temps d'attente de plus en plus long entre chaque essais, du type exponentiel.(je sais pas si gmail fait ca par contre)
    Bref un système pour empêcher le brute forcing en gros, ce qui devrait limiter ce genre d'attaque même si la méthode n'est pas parfaitement adaptée au problème.
    En effet, ce n'est pas adapté, puisque ce n'est pas du bruteforcing. Il suffit de revenir le lendemain pour déchiffrer la suite.

    Moi je dis que ces experts ont raison et que ne serait-ce qu'au nom du principe de précaution, tout le monde devrait rajouter ces 6 lignes de code.

    Cela dit, je suis surpris de la technique car dans un système bien fait, les mot de passes sont cryptés, et la comparaison ne se fait donc pas caractère par caractère. Mot de passe stocké en clair => appli à éviter ! Ce seul fait les rend vulnérables, c'est bien connu et on a eu un bel exemple avec skyrock il n'y a pas longtemps.
    Find me on github

  8. #8
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Cela dit, je suis surpris de la technique car dans un système bien fait, les mot de passes sont cryptés, et la comparaison ne se fait donc pas caractère par caractère. Mot de passe stocké en clair => appli à éviter !
    Pas forcément. Mettons que tu "cryptes" le mot de passe avec un hash de type sha. Tu devras alors comparer 2 chaines de 40 caractères (dans le cas du sha1). Ici encore la comparaison se fait caractère par caractère.

    Cela dit, un petit sleep avec un temps aléatoire devrait supprimer la faille, à mon sens.

  9. #9
    Membre expert
    Avatar de FailMan
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Janvier 2010
    Messages
    1 602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1 602
    Points : 3 917
    Points
    3 917
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Mot de passe stocké en clair => appli à éviter !
    Je pensais que ça faisait 10 ans qu'on ne stockait plus les mots de passe en clair...
    Une erreur fréquente que les gens font quand ils tentent de réaliser quelque chose à l'épreuve des imbéciles est de sous-estimer l'ingéniosité de ceux-ci. - Douglas Adams

  10. #10
    Expert éminent sénior
    Avatar de Marco46
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2005
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2005
    Messages : 4 413
    Points : 19 609
    Points
    19 609
    Par défaut
    Ce que je comprends pas c'est comment ils font pour écrire leur algo.

    Je veux dire, pour déterminer le temps d'exécution de la procédure de vérification du mot de passe il faut bien déterminer le temps de circulation des messages sur le réseau. Les fonctions réseaux disponibles donnent des durées en milli-secondes, or il est indiqué dans la news qu'ils ont besoin d'une précision en nano-seconde.

    Donc je dis, balèze.
    Un problème avec Git ? Essayez la FAQ, sinon posez votre question sur le forum.



    "Toute personne croyant qu'une croissance exponentielle peut durer indéfiniment dans un monde fini est soit un fou, soit un économiste."
    Kenneth E. Boulding

    "Les richesses naturelles sont inépuisables, car, sans cela, nous ne les obtiendrions pas gratuitement. Ne pouvant être ni multipliées ni épuisées, elles ne sont pas l’objet des sciences économiques."
    Jean-Baptiste Say, Traité d'économie politique, 1803.

    "/home/earth is 102% full ... please delete anyone you can."
    Inconnu

  11. #11
    Membre régulier
    Inscrit en
    Mars 2009
    Messages
    60
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 60
    Points : 73
    Points
    73
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Cela dit, un petit sleep avec un temps aléatoire devrait supprimer la faille, à mon sens.
    Ou alors tout simplement au lieu de t'arrêter dès que tu vois que les 2 chaînes ne sont pas identiques, tu testes jusqu'à la fin et tu rends le résultat une fois que tu as tout parcouru.
    Et là je pense qu'au lieu de rajouter 6 lignes de code comme ils disent, tu en enlèves une

  12. #12
    Membre expert
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    1 415
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2007
    Messages : 1 415
    Points : 3 156
    Points
    3 156
    Par défaut
    Citation Envoyé par Antoine_935 Voir le message
    Pas forcément. Mettons que tu "cryptes" le mot de passe avec un hash de type sha. Tu devras alors comparer 2 chaines de 40 caractères (dans le cas du sha1). Ici encore la comparaison se fait caractère par caractère.
    Oui, mais il n'y a pas de correspondance avec le caractère du mot de passe entré. Si tu tapes le bon premier caractère du mot de passe, les premiers caractères du cryptage ne vont pas systématiquement correspondre, donc ça ne marche pas...
    Find me on github

  13. #13
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    394
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 394
    Points : 639
    Points
    639
    Par défaut
    Bonjour,

    Une question que je me pose est ce que PHP ou SQL font de la comparaison caractère par caractère ?

    C'est à dire si dans nos applications on a des choses du genre

    SELECT * FROM user WHERE username = '".$_POST['username']."' AND password = '".$_POST['password']."';

    if(rowCount() ==1){
    //connection
    }else{
    //erreur
    }

    est ce que ce problème nous concerne ?

    Merci d'avance pour vos réponses

    PS : Je n'ai pas échappé les variables ici c'est juste pour l'exemple.

  14. #14
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Citation Envoyé par jblecanard Voir le message
    Oui, mais il n'y a pas de correspondance avec le caractère du mot de passe entré. Si tu tapes le bon premier caractère du mot de passe, les premiers caractères du cryptage ne vont pas systématiquement correspondre, donc ça ne marche pas...
    Peu importe, le but du pirate est d'entrer dans un système, pas d'avoir ton mot de passe. Donc s'il arrive a trouver le hash de ton MDP plutôt que le MDP lui-même, le résultat est le même.

  15. #15
    Membre averti

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Points : 379
    Points
    379
    Par défaut
    Pour ma part je ne comprends pas vraiment comment cette technique peut-être utilisé avec des fonction de hash tel PASSWORD de MySQL par exemple. Si j'écris 'LOL' le résultat c'est *F6D37B11A6853D08BC1B65921397F95A5A154E67. Quelqu'un qui écrit 'LOTERIE' aura un résultat *20BAFE4D6919B48742ED969E7FF2070260BFAAE9 : il n'y a pas de correspondance entre le début LO de mon LOL et LO de LOTERIE après hashage.

    De plus, si notre site Web ajoute utilise un SALT (une chaine de caractère que notre site en début ou fin de chaine du mot de passe), alors on assure une meilleur sécurité, parce que même si un vilain hacker réussi à avoir une liste d'utilisateur avec leur mot de passe hasher, il pourrait ce construire une table de correspondance de mot de passe potentiel, (genre LOL, lol, maman, toutes les combinaisons de date par exemple) et ainsi avec accès à un certains pourcentage de compte. Cependant avec un SALT, la table ne sert plus à rien.

    j'admets que ce chiffre est vrai car moi-même, je n'ai jamais codé des codes évitant ces failles
    P.S. Pour éviter l'injection SQL le plus simple selon moi c'est de traiter ta chaine avant de faire quoi que se soit !
    ______________
    Never underestimated the browser
    Ne jamais sous-estimé le navigateur
    Vic Gundotra, Google IO 2009

  16. #16
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Citation Envoyé par CIFQ_Drew Voir le message
    Pour ma part je ne comprends pas vraiment comment cette technique peut-être utilisé avec des fonction de hash tel PASSWORD de MySQL par exemple. Si j'écris 'LOL' le résultat c'est *F6D37B11A6853D08BC1B65921397F95A5A154E67. Quelqu'un qui écrit 'LOTERIE' aura un résultat *20BAFE4D6919B48742ED969E7FF2070260BFAAE9 : il n'y a pas de correspondance entre le début LO de mon LOL et LO de LOTERIE après hashage.
    Parce que le pirate ne va pas entrer ni "LOL" ni "LOTERIE", mais "F6D37...". Le hashage est fait en local, donc rien n'empêche de faire une appli (et j'imagine qu'il faut de toutes façons en faire une pour mesurer précisément le timing) qui ne fait que le POST final (dans le cas d'une appli web, par exemple).

  17. #17
    Membre averti

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Points : 379
    Points
    379
    Par défaut
    Citation Envoyé par 10_GOTO_10 Voir le message
    Parce que le pirate ne va pas entrer ni "LOL" ni "LOTERIE", mais "F6D37...". Le hashage est fait en local, donc rien n'empêche de faire une appli (et j'imagine qu'il faut de toutes façons en faire une pour mesurer précisément le timing) qui ne fait que le POST final (dans le cas d'une appli web, par exemple).
    Tant qu'à moi dans mon PHP je fais un select du genre (ne vous inquiété pas c'est pas exactement comme ça) mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT pkusername FROM user WHERE pkusername = 'bob' and passwd = PASSWORD('LOL')
    . Si mon select me retourne une donnée, alors le passwd est bon, sinon il y a erreur.
    ______________
    Never underestimated the browser
    Ne jamais sous-estimé le navigateur
    Vic Gundotra, Google IO 2009

  18. #18
    Membre expérimenté Avatar de 10_GOTO_10
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    886
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 886
    Points : 1 526
    Points
    1 526
    Par défaut
    Ça veut donc dire que "LOL" a circulé en clair sur le réseau ? Ou bien je ne comprends pas comment tu fais.

  19. #19
    Membre averti

    Inscrit en
    Novembre 2007
    Messages
    197
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Novembre 2007
    Messages : 197
    Points : 379
    Points
    379
    Par défaut
    Euh... Je crois que tu comprends pas vraiment l'exemple.

    Nous avons une belle connexion SSL sécurisé entre un client (mon navigateur FireFox disons) et mon Serveur (mon facebook, disons).

    J'inscris dans la boite 'username' : bob.
    J'inscris dans la boite 'passwd' : LOL.

    J'envoie ça par POST à mon serveur.

    Mon serveur fait quelque chose du genre (il y a du traitement à faire avant on s'entend) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $result = mysql_query("SELECT pkusername FROM user WHERE pkusername = $_POST['username'] AND passwd = $_POST['passwd']);
    if (!$result) {
        // traitement erreur
    } else {
        // traitement succès
    }
    Ce que le serveur reçoit c'est le LOL et non la chaine déjà hasher. De plus PHP n'a même pas connaissance de la chaine hasher, c'est SQL qui s'occupe de faire la correspondance. Ainsi, si quelque tape le F6blablabla elle sera hasher puis comparer, ce qui donnera forcément un retour négatif.

    Est-ce que c'est plus clair?
    ______________
    Never underestimated the browser
    Ne jamais sous-estimé le navigateur
    Vic Gundotra, Google IO 2009

  20. #20
    Membre éprouvé
    Avatar de Antoine_935
    Profil pro
    Développeur web/mobile
    Inscrit en
    Juillet 2006
    Messages
    883
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur web/mobile

    Informations forums :
    Inscription : Juillet 2006
    Messages : 883
    Points : 1 066
    Points
    1 066
    Par défaut
    Citation Envoyé par CIFQ_Drew Voir le message
    Ce que le serveur reçoit c'est le LOL et non la chaine déjà hasher.
    Donc, comme le soulève boucle inf... "10 GOTO 10" pardon , le "LOL" se balade en clair sur le réseau entre le serveur web et MySQL. Ça va s'ils sont sur la même machine, mais c'est rarement le cas.

    Intéressante remarque, soit dit en passant, je n'y avais jamais pensé

    Edit:
    En réponse à
    Une question que je me pose est ce que PHP ou SQL font de la comparaison caractère par caractère ?
    Si tu veux dire qu'ils s'arrêtent à la première différence, c'est très probable.

Discussions similaires

  1. [SP-2010] Erreur d'affichage des documents dans le navigateur Office Web Apps
    Par Jean-Claude Dusse dans le forum SharePoint
    Réponses: 0
    Dernier message: 23/09/2011, 18h37
  2. Réponses: 1
    Dernier message: 07/10/2009, 23h15
  3. Réponses: 2
    Dernier message: 14/08/2008, 16h34
  4. Réponses: 4
    Dernier message: 18/06/2007, 16h15
  5. Tomcat 5.5 ( gestion des privilèges d'une web app )
    Par mick72 dans le forum Tomcat et TomEE
    Réponses: 1
    Dernier message: 03/09/2005, 06h54

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