Des chercheurs dévoilent un outil LLM pour trouver les zero-days Python • The Register

Les chercheurs de Protect AI, basé à Seattle, prévoient de publier un outil open source gratuit capable de détecter les vulnérabilités du jour zéro dans les bases de code Python à l’aide du modèle Claude AI d’Anthropic.

Le logiciel, appelé Vulnhuntr, a été annoncé au Conférence sur la sécurité No Hat en Italie samedi.

“L’outil ne se contente pas de coller du code du projet et de demander une analyse”, a expliqué Dan McInerney, chercheur principal sur les menaces liées à l’IA chez Protect AI, qui a développé le logiciel avec son collègue Marcello Salvati.

“Il trouve automatiquement les fichiers de projet susceptibles de gérer les entrées d’un utilisateur distant, Claude les analyse pour détecter les vulnérabilités potentielles, puis pour chaque vulnérabilité potentielle, Claude reçoit une invite hautement optimisée spécifique à la vulnérabilité et entre dans une boucle.”

“Dans cette boucle, il demande continuellement des fonctions/classes/variables ailleurs dans le code jusqu’à ce qu’il termine toute la chaîne d’appels, de l’entrée utilisateur à la sortie du serveur, sans faire exploser sa fenêtre de contexte. L’avantage de ceci par rapport aux analyseurs de code statiques actuels est un énorme réduction des faux positifs/négatifs puisqu’il peut lire l’intégralité de la chaîne d’appels, et pas seulement de petits extraits de code un par un.”

Selon McInerney, cette approche peut révéler des vulnérabilités complexes en plusieurs étapes, par opposition au signalement de fonctions comme eval() avec des implications de sécurité connues.

“L’outil a été conçu à l’origine en utilisant Claude et a utilisé les meilleures pratiques de Claude en matière d’ingénierie rapide, de sorte qu’il fonctionne de loin de la meilleure manière avec Claude”, a déclaré McInerney. “Nous avons inclus la possibilité d’utiliser [OpenAI’s] GPT-4 et nous l’avons testé avec GPT-4o mais avons obtenu des résultats moins bons. Modifier les invites pour mieux s’adapter à GPT-4o est très simple et l’utilisation du modèle GPT-4o n’est qu’un changement dans 1 ligne de code. En le rendant open source, nous espérons encourager de telles modifications à mesure que de nouveaux modèles sortiront. »

Jusqu’à présent, dit McInerney, Vulnhuntr a trouvé plus d’une douzaine de vulnérabilités zero-day dans de grands projets Python open source.

L’outil se concentre actuellement sur sept types de vulnérabilités exploitables à distance.

  • Écrasement arbitraire de fichiers (AFO)
  • Inclusion de fichiers locaux (LFI)
  • Falsification de requêtes côté serveur (SSRF)
  • Scripts intersites (XSS)
  • Références d’objet directes non sécurisées (IDOR)
  • Injection SQL (SQLi)
  • Exécution de code à distance (RCE)

Les projets concernés comprennent :

  • gpt_academic, 64 000 étoiles sur GitHub, LFI, XSS
  • ComfyUI, 50 000 étoiles, XSS
  • FastChat, 35 000 étoiles, SSRF
  • Ragflow, 16 000 étoiles, RCE

D’autres projets avec du code vulnérable repéré il y a moins de 90 jours n’ont pas été identifiés pour laisser le temps aux responsables de corriger les choses.

Ragflow, a déclaré McInerney, est le seul projet dont il est au courant et qui a correction de son bug identifié.

Vulnhuntr a certaines limites. Cela ne fonctionne que sur le code Python pour le moment et cela dépend de l’accès à un analyseur statique Python. En conséquence, l’outil est plus susceptible de générer des faux positifs lors de l’analyse de projets Python intégrant du code dans d’autres langages (par exemple TypeScript).

Lors de la génération d’un exploit de preuve de concept (PoC), le logiciel génère un score de confiance allant de 1 à 10. Un score de 7 signifie qu’il s’agit probablement d’une vulnérabilité valide, bien que le code PoC puisse nécessiter quelques affinements. Un score de 8 ou plus a de fortes chances d’être valide. Il est peu probable que les scores de 6 ou moins soient valides.

Le résultat ressemble à ceci :

bloc-notes : 1. Analyse de la fonction add_llm dans llm_app.py. 2. Entrée utilisateur identifiée utilisée comme clés pour accéder aux dictionnaires : EmbeddingModel, ChatModel, RerankModel, CvModel et TTSModel. 3. Ces dictionnaires contiennent des références de classe, qui sont instanciées avec les paramètres fournis par l’utilisateur. 4. La variable d’usine est directement utilisée à partir de l’entrée utilisateur (req[‘llm_factory’]) sans validation appropriée. […]
—————————————- analyse : La fonction add_llm dans llm_app.py contient une vulnérabilité critique d’exécution de code à distance (RCE). La fonction utilise l’entrée fournie par l’utilisateur (req[‘llm_factory’] et demande[‘llm_name’]) pour instancier dynamiquement des classes à partir des dictionnaires EmbeddingModel, ChatModel, RerankModel, CvModel et TTSModel. Ce modèle d’utilisation des entrées utilisateur comme clé pour accéder aux classes et les instancier est intrinsèquement dangereux, car il permet à un attaquant d’exécuter potentiellement du code arbitraire. La vulnérabilité est exacerbée par le manque de validation ou de nettoyage complet des entrées sur ces valeurs fournies par l’utilisateur. […]
—————————————- poc : POST /add_llm HTTP/1.1 Hôte : target.com Type de contenu : application/json Autorisation : Porteur { “llm_factory”: “__import__(‘os’).system”, “llm_name”: “id”, “model_type”: “EMBEDDING”, “api_key”: ” dummy_key”} —————————————– trust_score : 8 —- ———————————— types_de_vulnérabilité : – RCE ———- ——————————-

Un autre problème est que les LLM ne sont pas déterministes : ils peuvent fournir des résultats différents pour la même invite à des moments différents ; plusieurs exécutions peuvent donc être nécessaires. Néanmoins, McInerney affirme que Vulnhuntr constitue une amélioration significative par rapport à la génération actuelle d’analyseurs statiques.

Il y a aussi un certain coût puisque l’API Claude n’est pas gratuite.

D’après nos recherches, la sortie de Vulnhuntr sera la première fois que des LLM trouveront des zéros jours dans la nature.

McInerney dit qu’il pense que les découvertes de Vulnhuntr représentent la première fois que de véritables vulnérabilités Zero Day sont identifiées dans des projets publics par un outil assisté par l’IA.

“De nombreux articles prétendent cela et tous sont trompeurs, car leur IA n’a pas découvert le jour zéro, elle a simplement été alimentée par des cibles vulnérables connues ou du code sur lequel elle n’avait pas été entraînée, puis a déclaré que c’était la preuve que son IA pouvait trouver le jour zéro. “, a-t-il déclaré. “D’après nos recherches, la sortie de Vulnhuntr sera la première fois que des LLM trouveront des zéros jours dans la nature.”

Daniel Kang, professeur adjoint d’informatique à l’Université de l’Illinois à Urbana-Champaign et co-auteur de l’article cité et d’autres articles similaires, a déclaré : Le registre que s’appuyer sur des données simulées est une pratique courante dans la recherche en sécurité.

“Il est largement admis que les simulations d’environnements réels sont des indicateurs acceptables du monde réel”, a-t-il déclaré. “Je peux créer des liens vers des centaines de documents de sécurité et de communiqués de presse dans lesquels des outils de sécurité sont utilisés dans des environnements simulés ou sur des vulnérabilités passées du monde réel, et personne ne conteste ces résultats. La chose correcte à dire est que nous simulons le paramètre Zero Day, mais encore une fois, cela est largement accepté comme pratique courante. »

L’article de Kang décrit l’utilisation d’équipes d’agents LLM pour exploiter les vulnérabilités du jour zéro, notant que Vulnhuntr ne gère pas l’exploitation. Il a également déclaré qu’en l’absence d’analyse des faux positifs ou de comparaison avec des outils tels que ZAP, Metasploit ou BurpSuite, il est difficile de dire comment l’outil se compare aux alternatives open source ou propriétaires existantes.

Selon McInerney, les vulnérabilités identifiées par Vulnhuntr sont très faciles à exploiter une fois identifiées.

“L’outil vous donne une preuve de concept une fois qu’il trouve une vulnérabilité”, a-t-il déclaré. “Il n’est pas rare de devoir apporter une sorte d’ajustement mineur au PoC pour le faire fonctionner, mais il est évident quels ajustements apporter après avoir lu l’analyse que le LLM vous donne quant aux raisons pour lesquelles il est vulnérable.”

On nous dit que Vulnhuntr sera publié sur GitHub, probablement via un dépôt associé à Protéger l’IA. Le secteur encourage également les chasseurs de bogues en herbe à essayer l’outil sur des projets open source répertoriés sur son site Web de bug bounty, huntr.com. ®

#Des #chercheurs #dévoilent #outil #LLM #pour #trouver #les #zerodays #Python #Register

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.