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

Algorithmes et structures de données Discussion :

Des chercheurs du MIT mettent au point un algorithme pour détecter les erreurs du type débordements d'entier


Sujet :

Algorithmes et structures de données

  1. #1
    Chroniqueur Actualités

    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Mars 2013
    Messages
    8 382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Mars 2013
    Messages : 8 382
    Points : 196 416
    Points
    196 416
    Par défaut Des chercheurs du MIT mettent au point un algorithme pour détecter les erreurs du type débordements d'entier
    Des chercheurs du MIT mettent au point un algorithme pour détecter les erreurs du type débordements d'entier
    et proposent en parallèle un outil pour les éliminer

    Un entier ayant une taille fixe, il y a une valeur maximale qu'il peut stocker. Quand une tentative est faite de stocker une valeur supérieure à cette valeur maximale, nous parlons alors de débordement d'entier (integer overflow). Les débordements d'entiers peuvent être problématiques par exemple dans le cas où le calcul doit gérer la taille d'un tampon ou jusqu'où un index peut aller dans un tableau.

    Des chercheurs du MIT s’y sont intéressés et expliquent que non seulement ils peuvent faire planter un programme mais ils peuvent également le laisser vulnérable aux attaques. « Les débordements d’entier sont une source insidieuse de défaillances logicielles et de vulnérabilités de la sécurité. Parce que des programmes comportant des erreurs latentes de débordement traitent souvent correctement les entrées, ce genre d’erreurs peut aisément échapper à la détection durant la phase de test pour apparaître plus tard dans la production » ont-ils expliqué dans un billet.

    Aussi, pour résoudre ce problème, les chercheurs du laboratoire d’intelligence artificielle et de sciences informatiques du MIT ont mis au point un moteur de découverte de dépassement d’entier (DIODE – Directed Integer Overflow Discovery Engine -) afin de détecter automatiquement les bugs de dépassement d’entier. L’algorithme a été testé dans cinq programmes open-source populaires comportant trois bugs de ce type connus. DIODE a trouvé les trois … et en a décelé 11 autres.

    « DIODE est conçu pour identifier les tests pertinents auxquels les entrées doivent être soumises pour déclencher des débordements sur les sites d’allocation de mémoire cible, ensuite générer ces entrées » ont expliqué les chercheurs. Ils rappellent qu’un débordement d’entier en lui-même ne fera pas planter un programme mais qu’un problème pourrait survenir lorsque le programme va essayer d’utiliser un entier ayant déjà subi un débordement. « C’est comme un compteur kilométrique de voiture. Une fois que vous êtes allé au-delà d’un certain nombre de kilomètres vous revenez à zéro », a expliqué Stelios Sidiroglou-Douskos, l’un des chercheurs.

    En marge de DIODE, les chercheurs ont développé CodePhage, un système automatique de transfert de code qui élimine les erreurs du type débordement d’entier une fois que DIODE les a repérées. « La combinaison de CodePhage et DIODE apporte un système qui détecte et élimine automatiquement les erreurs de débordement d’entier. DIODE génère des entrées qui mettent en exergue les erreurs ; CodePhage utilise ces entrées pour localiser et transférer le code depuis les applications afin d’éliminer les erreurs » ont expliqué les chercheurs.

    Source : blog MIT

    Et vous ?

    Qu'en pensez-vous ?
    Contribuez au club : Corrections, suggestions, critiques, ... : Contactez le service news et Rédigez des actualités

  2. #2
    Expert éminent sénior Avatar de Uther
    Homme Profil pro
    Tourneur Fraiseur
    Inscrit en
    Avril 2002
    Messages
    4 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Tourneur Fraiseur

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 552
    Points : 15 463
    Points
    15 463
    Par défaut
    Il faudrait sans doute détailler ce qu'il y a de nouveau(vitesse, analyse statique, ...) parceque pour le moment je vois pas.

    Détecter les overflows, ça fait très longtemps qu'on sait faire ça. Si ce n'est pas fait systématiquement c'est surtout parce que que ça impacte sur les performance, donc le plus souvent on ne le fait pas

  3. #3
    Expert confirmé
    Avatar de TiranusKBX
    Homme Profil pro
    Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Inscrit en
    Avril 2013
    Messages
    1 476
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur C, C++, C#, Python, PHP, HTML, JS, Laravel, Vue.js
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2013
    Messages : 1 476
    Points : 4 805
    Points
    4 805
    Billets dans le blog
    6
    Par défaut
    je pense qu'au début de ta boucle tu teste si ta valeur est négative (dans le cas de la variable est incrémenté) et si c'est la cas tu fait un petit break
    Rien, je n'ai plus rien de pertinent à ajouter

  4. #4
    Expert éminent Avatar de marsupial
    Homme Profil pro
    Retraité
    Inscrit en
    Mars 2014
    Messages
    1 760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Mars 2014
    Messages : 1 760
    Points : 7 185
    Points
    7 185
    Par défaut
    En langage machine, la contrainte pourrait peut-être disparaître ?
    Repeat after me
    Le monsieur lutte pour la défense des libertés individuelles et collectives

    Repeat after me...

  5. #5
    Expert éminent Avatar de BufferBob
    Profil pro
    responsable R&D vidage de truites
    Inscrit en
    Novembre 2010
    Messages
    3 035
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : responsable R&D vidage de truites

    Informations forums :
    Inscription : Novembre 2010
    Messages : 3 035
    Points : 8 400
    Points
    8 400
    Par défaut
    si j'ai bien compris, l'algorithme fonctionne sur des binaires x86 directement (donc sur le code machine) et non sur le code source, et pas non plus pendant son exécution (ce qui est différent de détecter un overflow quand il se produit via un canary sur la stack par exemple)

    le PDF précise par ailleurs :
    Because programs with latent overflow errors often process typical inputs correctly, such errors can easily escape detection during testing only to appear later in production.
    je sais pas si ça va véritablement révolutionner l'industrie mais il est évident que ça faisait un sujet tout trouvé pour jouer avec les techniques d'exécution concolique assez récentes et très à la mode

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2011
    Messages
    25
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2011
    Messages : 25
    Points : 68
    Points
    68
    Par défaut
    Salut,

    Citation Envoyé par Stéphane le calme Voir le message
    Quand en tentative est faite de stocker une valeur supérieure à cette valeur maximale, nous parlons alors de débordement d'entier (integer overflow).
    Juste pour dire, un débordement d'entier intervient quand une opération (comme une addition) produit un résultat supérieur à la capacité d'un type donné. Le passage cité donne plutôt l'impression de parler d'une affectation, qui n'est précisémment pas un cas de débordement.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/01/2014, 23h22
  2. Des chercheurs du MIT créent KLOS, un algorithme puissant de parcours de graphe non orienté
    Par Cedric Chevalier dans le forum Algorithmes et structures de données
    Réponses: 11
    Dernier message: 21/01/2014, 23h46
  3. Des chercheurs mettent au point une méthode pour déchiffrer une clé RSA
    Par Stéphane le calme dans le forum Sécurité
    Réponses: 25
    Dernier message: 15/01/2014, 17h13
  4. Des chercheurs mettent un point un algorithme contre les cyberattaques
    Par Cedric Chevalier dans le forum Algorithmes et structures de données
    Réponses: 1
    Dernier message: 17/05/2013, 12h56
  5. Réponses: 9
    Dernier message: 14/08/2012, 17h38

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