Meta a reconnu une faille d’exécution de code à distance dans son infrastructure Llama Stack, découverte par Oligo Security en 2024 et désormais répertoriée sous CVE‑2024‑50050. L’incident a révélé que la méthode recv_pyobj() de ZeroMQ, utilisée avec le module pickle de Python, permettait à un attaquant d’injecter du code arbitraire sur des serveurs d’inférence exposés au réseau.
Les chercheurs ont ensuite identifié la même logique vulnérable dans NVIDIA TensorRT‑LLM, Microsoft Sarathi‑Serve, vLLM, SGLang et Modular Max. Plusieurs fichiers avaient été copiés ligne pour ligne, parfois avec les commentaires d’origine. Le phénomène a reçu un nom évocateur ShadowMQ. Il traduit la propagation d’un code hérité et non audité au sein d’un écosystème où la vitesse de déploiement prime sur la vérification.
Oligo a recensé des milliers de sockets ZMQ diffusant leur bannière TCP sur Internet, dont certaines appartenaient à des environnements de production. Une seule requête malveillante pouvait donc compromettre un cluster complet, exfiltrer des modèles propriétaires ou installer des mineurs GPU. L’équipe a observé que les frameworks d’inférence, souvent interconnectés, traitent des données sensibles issues de clients et de partenaires industriels.
Meta a réagi rapidement en adoptant une sérialisation JSON. NVIDIA a ajouté une validation HMAC et obtenu un score CVSS de 9,3. vLLM a corrigé la faille dans son moteur V1 tandis que Modular Max a migré vers msgpack. En revanche Sarathi‑Serve reste vulnérable et SGLang n’a que partiellement corrigé le problème. Ces résidus de code exposent encore des serveurs à des attaques opportunistes.
Les causes sont structurelles. La pression de performance pousse les équipes à réutiliser des composants existants. Les avertissements sur recv_pyobj() sont discrets et les outils de génération de code reproduisent mécaniquement les mêmes schémas. Les audits de sécurité arrivent souvent après la mise en production. Il est donc probable que d’autres projets contiennent encore des fragments de ShadowMQ.
Les chercheurs recommandent de supprimer toute désérialisation pickle sur des flux non authentifiés et de restreindre les connexions ZMQ à des réseaux de confiance. Ils insistent sur la nécessité d’un cloisonnement fort des serveurs d’inférence et d’une surveillance continue des comportements anormaux. L’éducation des équipes de développement devient un levier stratégique pour éviter que ces erreurs ne se répètent.
ShadowMQ illustre la fragilité d’une chaîne logicielle où la réutilisation du code, censée accélérer l’innovation, peut aussi propager la vulnérabilité à grande échelle.

