SGLang CVE-2026-5760 (CVSS 9.8) : un modele GGUF piege declenche une SSTI Jinja2 puis une execution de code a distance sur le serveur d'inference.
En bref
- CVE-2026-5760 (CVSS 9.8) : injection de template Jinja2 dans SGLang conduisant a une execution de code arbitraire cote serveur.
- Vecteur : modele GGUF malveillant avec un tokenizer.chat_template piege, telecharge depuis un depot public comme Hugging Face.
- Action urgente : mettre a jour SGLang vers la version corrigee et n'importer que des modeles provenant de sources de confiance signees.
Les faits
La faille CVE-2026-5760 touche SGLang, framework open source tres utilise pour servir des modeles de langage en inference a haute performance. Publiee autour du 20 avril 2026 avec un score CVSS de 9.8 sur 10, elle permet a un attaquant de declencher une execution de code a distance sur le serveur hebergeant le moteur d'inference, simplement en faisant charger un modele GGUF piege par la victime. Selon la communaute de recherche specialisee dans la securite des chaines d'inference IA, le chemin vulnerable se situe dans entrypoints/openai/serving_rerank.py, ou SGLang instancie un environnement Jinja2 standard au lieu de la variante ImmutableSandboxedEnvironment. Quand l'endpoint /v1/rerank est appele, le moteur evalue le chat_template fourni par le modele, ce qui laisse executer n'importe quelle expression Python embarquee dans le template. C'est une variante directe de la famille Llama Drama (CVE-2024-34359) et du meme probleme corrige plus tard dans vLLM.
Le declenchement est d'une simplicite deconcertante : l'attaquant publie sur Hugging Face ou dans un registre prive un modele GGUF dont le fichier tokenizer.chat_template contient une charge utile SSTI, par exemple un acces aux globals Python via le mecanisme MRO pour atteindre os.system. Le template inclut le marqueur declenchant la route Qwen3 reranker. Lorsqu'un utilisateur telecharge ce modele et le charge dans une instance SGLang exposee, la premiere requete legitime envoyee sur /v1/rerank declenche l'evaluation du template empoisonne. Aucune authentification n'est requise dans la configuration standard des deploiements self-hosted, ce qui ouvre la porte a la compromission complete du conteneur d'inference.
Impact et exposition
L'exposition est tres large : SGLang est adopte par de nombreuses equipes MLOps pour servir Llama, Qwen, Mistral et d'autres modeles. Toute instance qui accepte des modeles tiers sans signature ni revue (pipelines CI/CD, plateformes d'experimentation, bac a sable recherche) est potentiellement vulnerable des qu'un ingenieur pointe vers un GGUF non verifie. Le mode d'attaque ne necessite ni identifiant ni position reseau privilegiee ; il suffit d'une chaine de confiance defaillante cote supply chain. Les instances exposant l'API publique d'inference sur Internet aggravent le risque car n'importe quel appelant peut declencher le rendu du template des que le modele compromis est en memoire. Les consequences typiques observees dans cette classe de vulnerabilites incluent exfiltration de cles API, pivot vers les credentials cloud, et deploiement de cryptomineurs sur des GPU couteux.
Recommandations immediates
- Mettre a jour SGLang vers la version corrigee publiee par les mainteneurs et verifier que serving_rerank.py utilise bien ImmutableSandboxedEnvironment.
- Auditer tous les modeles GGUF charges en production : inspecter le champ tokenizer.chat_template et refuser tout template contenant des acces a __globals__, __subclasses__, os ou subprocess.
- Appliquer une allow-list stricte des depots sources et exiger la signature des modeles via Sigstore ou un equivalent interne.
- Placer les endpoints /v1/rerank derriere une authentification forte et un WAF capable de bloquer les motifs SSTI Jinja2.
- Surveiller les journaux d'acces reseau sortants des workers d'inference pour detecter toute connexion suspecte.
⚠️ Urgence
Aucune authentification n'etant requise et le PoC etant trivial a reproduire, les equipes doivent considerer cette faille comme critique. Les plateformes d'inference exposees publiquement et chargeant des modeles communautaires sont en premiere ligne.
Comment savoir si mon instance SGLang est vulnerable ?
Verifier la version installee via pip show sglang et comparer avec la version corrigee annoncee par les mainteneurs. Inspecter egalement le code de serving_rerank.py : si la ligne contient jinja2.Environment() sans option de sandboxing, l'instance est exploitable des qu'un modele piege est charge.
Quel lien avec les precedents incidents IA ?
CVE-2026-5760 rejoint une famille grandissante de failles SSTI dans les frameworks d'inference. Voir aussi nos analyses sur PraisonAI sandbox escape, Marimo notebook RCE, aws-mcp-server et Thymeleaf SSTI Java.
Votre infrastructure est-elle exposee ?
Ayi NEDJIMI realise des audits cibles pour identifier et corriger vos vulnerabilites IA et moteurs d'inference.
Demander un auditÀ propos de l'auteur
Ayi NEDJIMI
Auditeur Senior Cybersécurité & Consultant IA
Expert Judiciaire — Cour d'Appel de Paris
Habilitation Confidentiel Défense
ayi@ayinedjimi-consultants.fr
Ayi NEDJIMI est un vétéran de la cybersécurité avec plus de 25 ans d'expérience sur des missions critiques. Ancien développeur Microsoft à Redmond sur le module GINA (Windows NT4) et co-auteur de la version française du guide de sécurité Windows NT4 pour la NSA.
À la tête d'Ayi NEDJIMI Consultants, il réalise des audits Lead Auditor ISO 42001 et ISO 27001, des pentests d'infrastructures critiques, du forensics et des missions de conformité NIS2 / AI Act.
Conférencier international (Europe & US), il a formé plus de 10 000 professionnels.
Domaines d'expertise
Ressources & Outils de l'auteur
Testez vos connaissances
Mini-quiz de certification lié à cet article — propulsé par CertifExpress
Articles connexes
CVE-2026-32604 : RCE critique Spinnaker Gitrepo (9.9)
CVE-2026-32604 (CVSS 9.9) : Spinnaker expose les pods clouddriver a une execution de commandes via les artefacts gitrepo mal assainis.
Cisco SD-WAN Manager : 3 failles ajoutees au KEV CISA
CISA ajoute CVE-2026-20122, CVE-2026-20128 et CVE-2026-20133 au catalogue KEV le 20 avril 2026 : exploitations actives sur Cisco Catalyst SD-WAN Manager.
CVE-2026-40478 : bypass sandbox Thymeleaf vers SSTI (9.1)
Un caractère de tabulation suffit à contourner le sandbox d'expressions de Thymeleaf. CVE-2026-40478 (CVSS 9.1) ouvre la porte à une SSTI non authentifiée.
Commentaires
Aucun commentaire pour le moment. Soyez le premier à commenter !
Laisser un commentaire