VulnHuntr - L'IA qui trouve des failles 0day dans votre code Python
Bon, là on va parler d’un truc qui va faire trembler pas mal de développeurs. VulnHuntr, c’est le nouveau joujou de Protect AI qui utilise l’intelligence artificielle pour dénicher des vulnérabilités 0-day dans du code Python. Et quand je dis dénicher, c’est pas pour rigoler car en quelques heures seulement, cet outil a trouvé plus d’une douzaine de failles critiques dans des projets open source ayant plus de 10 000 étoiles sur GitHub !
Le principe c’est qu’au lieu de balancer tout le code source dans un LLM et espérer qu’il trouve quelque chose, VulnHuntr découpe le code en petits morceaux digestes. Puis il analyse méthodiquement la chaîne complète depuis l’entrée utilisateur jusqu’à la sortie serveur, en demandant uniquement les portions de code pertinentes.
L’outil peut ainsi détecter sept types de vulnérabilités majeures : exécution de code à distance (RCE), inclusion de fichiers locaux (LFI), falsification de requêtes côté serveur (SSRF), cross-site scripting (XSS), références directes non sécurisées (IDOR), injection SQL et écrasement arbitraire de fichiers.
Pas mal pour un outil gratuit et open source, non ?
Et puis il y a la liste des victimes… euh pardon, des projets où VulnHuntr a trouvé des failles. Je vous présente gpt_academic (67k étoiles), ComfyUI (66k étoiles), Langflow (46k étoiles), FastChat (37k étoiles), et j’en passe. Des projets ultra populaires dans l’écosystème IA qui se sont fait épingler avec des vulnérabilités critiques. Par exemple, Ragflow s’est retrouvé avec une belle RCE qui a été corrigée depuis.
Pour l’utiliser, c’est assez simple puisque ça s’installer avec pipx ou Docker (d’ailleurs ils recommandent Python 3.10 spécifiquement à cause de bugs dans Jedi). Ensuite, vous exportez votre clé API Anthropic ou OpenAI, et vous lancez l’analyse sur votre repo. Attention quand même, les développeurs préviennent que ça peut vite coûter cher en tokens si vous n’avez pas mis de limites de dépenses !
Je trouve son workflow plutôt bien pensé, car le LLM résume d’abord le README pour comprendre le contexte du projet et fait ensuite une première analyse afin d’identifier les vulnérabilités potentielles. Pour chaque faille détectée, VulnHuntr relance alors une analyse spécifique avec un prompt adapté au type de vulnérabilité. Puis il continue à demander du contexte (fonctions, classes, variables d’autres fichiers) jusqu’à avoir reconstruit toute la chaîne d’appel. À la fin, vous avez un rapport détaillé avec le raisonnement, un exploit proof-of-concept, et un score de confiance.
D’après les retours, un score de confiance inférieur à 7 signifie qu’il n’y a probablement pas de vulnérabilité. Un score de 7, c’est à investiguer. Et 8 ou plus, c’est très probablement une vraie faille. Les développeurs recommandent d’ailleurs d’utiliser Claude plutôt que GPT, car apparemment les résultats sont meilleurs, ce qui ne m’étonne pas.
Malheureusement, pour le moment, ça ne fonctionne que sur du code Python et même s’ils ont ajouté le support d’Ollama pour les modèles open source, les résultats ne sont pas terribles avec ces derniers car ils galèrent à structurer correctement leur output. A voir avec le dernier modèle OSS d’OpenAI cela dit…
Alors d’un côté, je trouve ça génial d’avoir un outil aussi puissant pour sécuriser nos propres projets mais de l’autre, ça montre à quel point nos codes sont vulnérables et combien il est facile pour quelqu’un de mal intentionné de trouver des failles. Voilà, donc si vous développez en Python, je vous conseille vraiment de tester VulnHuntr sur vos projets car mieux vaut découvrir les failles vous-même plutôt que de les voir exploitées dans la nature !