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.
Télécharger STACK sur GitHub
Source : les résultats de l’étude au format PDF
Et vous ?
Que pensez-vous de cette conclusion des chercheurs du MIT ?
Avez-vous testé STACK ? Si oui, a-t-il signalé des problèmes dans votre code ?
Les compilateurs pourraient être à l'origine des vulnérabilités de certaines applications
Le MIT remet en cause la gestion du code instable
Les compilateurs pourraient être à l'origine des vulnérabilités de certaines applications
Le MIT remet en cause la gestion du code instable
Le , par Hinault Romaric
Une erreur dans cette actualité ? Signalez-nous-la !