
le MIT remet en cause la gestion du code instable
Le compilateur, l’outil de base dont ne peut se passer un développeur, pourrait être la cause des vulnérabilités de certaines applications. C’est en tout cas ce que concluent de nouvelles recherches qui ont été dévoilées par le MIT.
Menées par quatre chercheurs en informatique du laboratoire d’intelligence artificielle de la prestigieuse institution, les recherches révèlent que pour optimiser le code, les compilateurs peuvent supprimer certaines portions du code, pouvant conduire à la génération d’une application plus vulnérable.
Les chercheurs se sont penchés essentiellement sur l’optimisation du code instable, qui est en quelque sorte le traitement du code qui peut se comporter de façon imprévisible. Il s’agit par exemple de la division par zéro, le déréférencement d’un pointeur NULL, les dépassements de tampon, etc.
Pour ces cas de figure, plusieurs éditeurs de compilateurs ont choisi de supprimer complètement les portions de code pouvant entrainer un comportement imprévisible, lors de la transformation du langage source en langage machine. Cette pratique pourrait conduire à des vulnérabilités si le code en question contient des contrôles de sécurité, d’après les chercheurs du MIT.
Ceux-ci ont mené une étude sur plus d’une douzaine de compilateurs C/C++ pour voir leur comportement face au code pouvant entrainer un comportement imprévisible. Ils ont constaté qu’au fil du temps, ces compilateurs sont de plus en plus agressifs dans la façon de traiter un tel code, à cause des optimisations apportées à celui-ci. « Nous prévoyons une augmentation des bogues dus au code instable », concluent les chercheurs.
Ils ne se sont pas arrêtés là, et ont développé un correcteur statique pour les bouts de code identifiés comme instables. Baptisé STACK, leur correcteur fonctionne uniquement pour le code écrit en C/C++. D’après la description de STACK, il permet de détecter et avertir le programmeur lorsqu’il découvre un code instable dans son application, afin que celui-ci puisse corriger le problème au lieu de laisser le compilateur ignorer cette portion de code.
Les résultats des tests de STACK sur quelques programmes open source populaires sont impressionnants. Il a trouvé 160 problèmes dans les applications testées, y compris le noyau Linux (32 problèmes identifiés), PostgreSQL (9) et Python (5). Sur les 8 575 paquets de l’archive Debian Wheezy qui contenaient du code C/C++, STACK a détecté un code instable dans 3 471 paquets.
STACK est téléchargeable gratuitement sur GitHub.

Source : les résultats de l’étude au format PDF
Et vous ?


Vous avez lu gratuitement 5 articles depuis plus d'un an.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.
Soutenez le club developpez.com en souscrivant un abonnement pour que nous puissions continuer à vous proposer des publications.