Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2026-52617 — Avis de sécurité et preuve de concept pour une injection de commandes OS dans un assistant MCP ffmpeg, avec analyse des causes profondes, conseils de détection et mesures d'atténuation pour un paquet npm non corrigé. | Kitploit
Outils/GitHubGitHub/s1ko/cve-2026-52617
Analyse des VulnérabilitésAnalyse de CodeExploitationSécurité de la Chaîne Logistique
GitHubs1ko/cve-2026-52617

CVE-2026-52617

Avis de sécurité et preuve de concept pour une injection de commandes OS dans un assistant MCP ffmpeg, avec analyse des causes profondes, conseils de détection et mesures d'atténuation pour un paquet npm non corrigé.

Voir le dépôt
40il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

CVE-2026-52617 — @sworddut/mcp-ffmpeg-helper : injection de commandes OS via les options de l'outil ffmpeg

runFFmpegCommand transmet une chaîne construite à partir des paramètres de l'outil MCP à spawn(…, { shell: true }), de sorte que les métacaractères du shell présents dans options, format, codec, pixelFormat ou extraOptions s'exécutent sur l'hôte exécutant le serveur.

⚠ Aucune version corrigée n'existe

Au 2026-08-22, la dernière version publiée sur npm est la 0.2.1, qui est la version affectée, et le point d'injection est toujours présent sur la branche par défaut du dépôt. Il n'y a rien vers quoi effectuer une mise à niveau. Voir Atténuation pour ce que les utilisateurs peuvent faire en attendant.

CVECVE-2026-52617
CWECWE-78 (Neutralisation incorrecte des éléments spéciaux utilisés dans une commande OS)
Paquet@sworddut/mcp-ffmpeg-helper (npm)
Affecté0.2.1 et antérieures — toutes les versions publiées
Corrigé dansaucune
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 8.4 Élevé (transport stdio). AV:N → 9.8 Critique si le serveur est encapsulé dans un transport réseau.
Signalé pars1ko (github.com/s1ko, [email protected])
CVE attribué2026-07-13, MITRE CNA-LR

Modèle de menace

Les arguments des outils MCP sont influencés par l'attaquant. Ils sont produits par un LLM à partir du contenu que l'agent traite — documents, pages web, sortie d'outils — de sorte qu'une injection de prompt indirecte place un attaquant aux commandes des valeurs que reçoit un gestionnaire d'outil. Un gestionnaire qui injecte l'une de ces valeurs dans un shell transforme cette influence en exécution de code sur l'hôte exécutant le serveur MCP. C'est le même modèle que le cas précédent aws-mcp-server / CVE-2026-5058.

Un serveur de conversion de médias est une cible particulièrement naturelle pour cela : les fichiers qu'on lui demande de traiter sont exactement le contenu non fiable qu'un agent récupère ailleurs.

Exécution

src/utils/ffmpeg.ts — la commande est assemblée sous forme de chaîne et le shell est activé explicitement :

function runProcess(command: string, args: string[], useShell = false) {
  const child = spawn(command, args, { shell: useShell, windowsHide: true });
  …
}

export async function runFFmpegCommand(command: string): Promise<string> {
  const { stdout, stderr, code } = await runProcess(`ffmpeg ${command}`, [], true);
  …
}

spawn("ffmpeg " + command, [], { shell: true }) exécute la chaîne entière via /bin/sh -c. Tout ce que l'appelant a contribué à command est de la syntaxe shell.

src/tools/handlers.ts atteint ce helper depuis trois outils, en interpolant des paramètres qui ne sont jamais validés quant à leur contenu :

OutilParamètres injectables
convert_videooptions
extract_audioformat
create_video_from_imagescodec, pixelFormat, extraOptions

Seuls inputPath et outputPath sont vérifiés, et les schémas Zod valident le type (z.string()), jamais le contenu — les métacaractères passent donc directement.

Un appel convert_video avec options défini à ; touch /tmp/marker ; produit :

/bin/sh -c "ffmpeg -i /tmp/in.mp4 ; touch /tmp/marker ; /tmp/out.mp4"

Reproduction

poc/driver.mjs communique avec MCP via stdio : il initialise le serveur, émet un tools/call pour convert_video avec une valeur options injectée, et vérifie la présence d'un fichier marqueur. La charge utile est un touch bénin.

npm pack @sworddut/[email protected]
tar xf sworddut-mcp-ffmpeg-helper-0.2.1.tgz && cd package && npm install
node ../poc/driver.mjs

Attendu sur une version affectée :

==== POC RESULT (@sworddut/mcp-ffmpeg-helper) ====
marker /tmp/PWNED_ffmpeg created: true
verdict: CONFIRMED — command injection executed

ffmpeg n'a pas besoin d'être installé — la commande injectée s'exécute dans la même chaîne /bin/sh -c, que le binaire de tête soit résolu ou non. Validé le 2026-06-01 dans un conteneur isolé, revalidé le 2026-06-13, et le sink reconfirmé présent sur la branche par défaut le 2026-08-22. Ne l'exécutez que contre une infrastructure que vous êtes autorisé à tester.

Détection

  • Une ligne de commande ffmpeg contenant ;, &&, ||, |, un backtick ou $(. Les invocations ffmpeg légitimes de ce serveur n'en contiennent pas.
  • Un processus sh -c dont la ligne de commande commence par ffmpeg et contient une seconde commande après un séparateur — un signal d'arbre de processus (auditd, eBPF, Falco, EDR) qui ne dépend pas de la journalisation applicative.
  • Des processus enfants inattendus du processus du serveur MCP. ffmpeg et ffprobe sont attendus ; un shell, un interpréteur ou un client réseau ne le sont pas.
  • Le serveur journalise chaque invocation sur stderr sous la forme Running FFmpeg command: ffmpeg <command>, ce qui est l'endroit le moins coûteux pour repérer une valeur injectée si les journaux sont collectés.
  • Les journaux d'appels d'outils MCP où options, format, codec, pixelFormat ou extraOptions contiennent des métacaractères de shell.

MITRE ATT&CK T1059.004 Command and Scripting Interpreter: Unix Shell.

Atténuation

Aucune version corrigée n'existe, les options sont donc le confinement et la suppression :

  • Cessez d'utiliser le paquet si l'agent qu'il sert traite du contenu non fiable. C'est la seule atténuation complète disponible aujourd'hui.
  • S'il doit rester, exécutez-le dans un conteneur ou une VM en tant qu'utilisateur non privilégié, avec un système de fichiers en lecture seule hormis le répertoire de travail des médias, sans identifiants dans son environnement et sans sortie réseau. L'exécution de code n'offre alors à l'attaquant qu'un bac à sable plutôt que l'hôte.
  • Ne l'exposez pas sur un transport réseau. Le déploiement stdio uniquement est ce qui maintient ce score à 8.4 plutôt que 9.8.
  • Enveloppez ou forkez le serveur pour rejeter les métacaractères de shell dans les cinq paramètres listés ci-dessus avant qu'ils n'atteignent runFFmpegCommand.

Le correctif amont consiste à supprimer shell: true et à passer à ffmpeg un vecteur d'arguments — spawn("ffmpeg", ["-i", inputPath, …]) — en construisant ce tableau à partir de valeurs format, codec et pixelFormat figurant sur une liste autorisée plutôt qu'à partir de chaînes libres. La validation du contenu, et pas seulement la validation de type Zod, est l'exigence sous-jacente.

NIST SP 800-53r5 SI-10 ; OWASP ASVS v4 §5.3.8 ; atténuations CWE-78 M1 et M2.

Chronologie

DateÉvénement
2026-05-29Vulnérabilité identifiée par revue du code source du tarball publié
2026-06-01Validée dynamiquement via MCP stdio dans un conteneur isolé
2026-06-13Revalidée sur un second hôte ; le dépôt n'a pas le Private Vulnerability Reporting activé, et les champs repository/bugs/homepage de package.json sont restés au modèle github.com/yourusername, ne laissant aucun contact de sécurité documenté
2026-07-13Le CNA-LR du MITRE attribue CVE-2026-52617, s1ko crédité comme découvreur
2026-08-22Sink reconfirmé sur la branche par défaut ; npm latest toujours 0.2.1 ; publication de cette analyse

Références

  • Paquet npm — https://www.npmjs.com/package/@sworddut/mcp-ffmpeg-helper
  • Dépôt — https://github.com/sworddut/mcp-ffmpeg-helper
  • Précédent pour le modèle de menace MCP — CVE-2026-5058 (aws-mcp-server)

Avis complémentaires issus de la même passe de recherche : CVE-2026-52616, CVE-2026-52618.

Licence

Télécharger l’outil