Les chercheurs en sécurité ont découvert deux vulnérabilités dans le populaire outil de création d’applications d’IA basé sur Python qui pourraient permettre aux attaquants d’extraire des informations d’identification et des fichiers – et d’obtenir un avantage latéral.
Deux vulnérabilités du cadre de développement d’IA populaire Chainlit pourraient permettre aux attaquants de lire des fichiers arbitraires et du contenu de bases de données à partir de serveurs. Si elles ne sont pas corrigées, les failles pourraient permettre aux attaquants de divulguer des clés API et d’autres jetons secrets pour faciliter les mouvements latéraux au sein de l’infrastructure de l’organisation.
« Ces vulnérabilités peuvent être déclenchées sans interaction de l’utilisateur », ont déclaré des chercheurs de la société de sécurité Zafran dans un rapport sur les failles de Chainlit. « Zafran a confirmé les vulnérabilités des applications Internet du monde réel exploitées par les grandes entreprises. »
Chainlit est un package basé sur Python permettant de créer des applications d’IA avec des interfaces de chatbot. Il gère l’authentification et propose des intégrations avec divers systèmes backend, bases de données et services cloud. Avec plus de 5 millions de téléchargements au cours de l’année écoulée à partir du Python Index (PyPI), Chainlit est souvent mentionné dans les didacticiels pour la création d’interfaces utilisateur pour les systèmes RAG et d’autres applications basées sur LLM.
Les deux vulnérabilités, identifiées comme CVE-2026-22218 et CVE-2026-22219, ont été corrigées dans la version 2.9.4, publiée le mois dernier. Les notes de publication de l’époque mentionnaient un « correctif de vulnérabilité de sécurité », mais aucun autre détail jusqu’à la publication de l’avis cette semaine.
Un fichier arbitraire lit des éléments personnalisés
La première vulnérabilité (CVE-2026-22218) est localisée dans la classe Element du framework. Dans Chainlit, les éléments sont des éléments de contenu qui peuvent être joints à un message, par exemple des images, des fichiers PDF, des vidéos, des fichiers audio et des trames de données, entre autres.
La classe Element du framework prend également en charge un type personnalisé pour afficher les fichiers JavaScript XML (JSX) dans un message. Les fichiers JSX étendent la syntaxe JavaScript pour afficher du HTML et sont couramment utilisés par des bibliothèques telles que React.
Les chercheurs de Zafran ont découvert que cet élément personnalisé donne aux attaquants le contrôle de toutes ses propriétés, car il ne valide pas les champs. Par exemple, si des attaquants envoient un élément personnalisé avec la propriété path définie à n’importe quel fichier du serveur, le fichier sera renvoyé à la session utilisateur.
Pour cette raison, la faille permet aux attaquants de lire n’importe quel fichier arbitraire du serveur, dont beaucoup pourraient contenir des informations sensibles. Par exemple, le /proc/self/environ Le fichier est utilisé pour stocker des variables d’environnement, et celles-ci peuvent contenir des clés API, des informations d’identification, des chemins de fichiers internes, des chemins de base de données, des jetons pour AWS et d’autres services cloud, et même CHAINLIT_AUTH_SECRETun secret utilisé pour signer les jetons d’authentification lorsque l’authentification est activée.
De plus, si LangChain est utilisé comme couche d’orchestration derrière Chainlit et que la mise en cache est activée, les invites utilisateur envoyées au LLM et les réponses correspondantes sont enregistrées dans un fichier appelé .chainlit/.langchain.db. Ce fichier stocke les invites des utilisateurs et des locataires, afin que les attaquants puissent l’exfiltrer périodiquement pour obtenir des informations sensibles. L’exploit de preuve de concept de Zafran impliquait la fuite de ce fichier.
Falsification de requêtes intersites
La deuxième vulnérabilité (CVE-2026-22218) utilise le même élément personnalisé comme vecteur d’attaque mais l’exploite de manière différente, via la propriété URL. En définissant ce champ, les attaquants peuvent forcer le serveur à déclencher une requête vers l’URL spécifiée pour récupérer son contenu et l’enregistrer dans la base de données.
Chainlit utilise PostgreSQL par défaut mais peut également utiliser SQLAlchemy avec différents backends tels que SQLite ou des fournisseurs de stockage cloud tels qu’AWS S3 ou Azure Blobs. En exploitant cette vulnérabilité, les attaquants peuvent déclencher une falsification de requête intersite (SSRF) pour obtenir des informations d’identification.
« Si Chainlit est déployé sur une instance AWS EC2 avec IMDSv1 activé, la vulnérabilité SSRF peut être utilisée pour accéder http://169.254.169.254/latest/meta-data/iam/security-credentials/ et récupérer les points de terminaison des rôles, permettant un mouvement latéral au sein du compte cloud », ont déclaré les chercheurs.
En combinant ces deux failles, les attaquants peuvent extraire de nombreuses informations et informations d’identification mais également la base de données elle-même ou les fichiers de code source de l’application pouvant contenir du code personnalisé.
« Une fois les informations d’identification cloud ou les jetons IAM obtenus du serveur, l’attaquant n’est plus limité à l’application », ont écrit les chercheurs dans leur rapport. « Ils ont accès à l’environnement cloud qui se cache derrière. Les compartiments de stockage, les gestionnaires de secrets, le LLM, les données internes et d’autres ressources cloud peuvent devenir accessibles à un attaquant. »
Le rapport Zafran contient des signatures pour le système de détection d’intrusion réseau Snort et pour le pare-feu d’application Web Cloudflare, qui peuvent être utilisés pour bloquer les tentatives d’attaque jusqu’à ce que les applications soient mises à jour vers une version corrigée de Chainlit.



