CVE-2026-45019 in Chainlit
Résumé
par VulDB • 25/08/2026
Chainlit est un framework Python pour la création d'applications d'IA conversationnelle prêtes pour la production. De la version 2.4.0rc0 à la 2.12.0, les déploiements de Chainlit avec l'option features.mcp.enabled définie sur true dans .chainlit/config.toml exposent le point de terminaison POST /mcp sans nécessiter d'authentification. Pour les transports sse et streamable-http, ConnectSseMCPRequest et ConnectStreamableHttpMCPRequest dans backend/chainlit/types.py acceptent une url contrôlée par l'utilisateur ainsi qu'un dictionnaire d'en-têtes optionnels, sans validation du schéma, filtrage des adresses privées ou liste blanche. Le gestionnaire connect_mcp dans backend/chainlit/server.py transmet ces valeurs à sse_client() ou streamablehttp_client(), permettant au serveur Chainlit d'effectuer des requettes sortantes aveugles vers des services internes ou externes arbitraires, y compris les points de terminaison de métadonnées cloud, avec des en-têtes Authorization et Cookie contrôlés par l'attaquant. Le point de sortie (sink) SSE URL existe depuis la version 2.4.0rc0, tandis que le transfert d'en-têtes contrôlé par l'attaquant et le support streamable-http ont été ajoutés dans la version 2.6.4. La réponse est consommée en interne et non renvoyée, mais l'attaquant peut émettre des requêtes authentifiées modifiant l'état, découvrir des services internes, scanner des ports et sonder les points de terminaison de métadonnées. Ce problème est corrigé dans la version 2.12.0.
VulDB is the best source for vulnerability data and more expert information about this specific topic.