Le service cloud DeepCode qui exploite le machine learning pour rechercher des failles de sécurité et des bogues potentiels dans plusieurs bases de code est désormais capable d’analyser le code C et C++. Il analyse des milliers de projets open source et renvoie ses feedbacks aux plateformes d'hébergement de code ou à des référentiels locaux. Selon les créateurs de DeepCode, les feedbacks de leur service sont de meilleure qualité et plus détaillés que ceux des outils d'analyse de code classiques, car il analyse le code dans son contexte, c’est-à-dire pas uniquement comme du texte, mais comme un logiciel en cours d'exécution.
La plupart des vulnérabilités des logiciels proviennent des bases de code C ou C++. Aussi puissants que soient ces deux langages, ils n'offrent que peu ou pas de protection contre les erreurs des développeurs, et les versions plus récentes de ces langages sont obligées de conserver une compatibilité ascendante et restent donc vulnérables. La base de connaissances de DeepCode recouvre de nombreux problèmes courants rencontrés en C et C++ et dans d'autres langages : problèmes de style, de fuite de ressources, d'allocation de mémoire, de gestion des dates et d’incompatibilités entre les versions d'un même langage.
Repérer des erreurs dans le code C et C++
Au cours de l’analyse du noyau Linux, DeepCode a repéré plusieurs de ces problèmes dans les bases de code C, notamment des paramètres non nettoyés transmis par des arguments de ligne de commande ou des variables d'environnement, des problèmes de vulnérabilités dites « use-after-free » et des vérifications manquantes pour les pointeurs null. D'autres problèmes plus subtils peuvent affecter le code C, comme la création non sécurisée de fichiers temporaires, ou l’optimisation de certaines instructions lors de la compilation qui n’offre pas l'effet attendu.
Lors de son lancement, DeepCode prenait en charge les langages Java, JavaScript, TypeScript et Python, mais le service travaillait déjà sur le support des langages C, C++ et d'autres langages. D’après le message de blog annonçant le support C/C++, en raison de la complexité des fonctionnalités de bas niveau des langages C/C++, il a fallu trois mois de travail pour ajouter l’analyse de code pour les langages C/C++.
Commentaire