Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-52617 — Advisory e prova de conceito para injeção de comandos do sistema operacional em um auxiliar MCP ffmpeg, com análise de causa raiz, orientação para detecção e mitigações para um pacote npm não corrigido. | Kitploit
Ferramentas/GitHubGitHub/s1ko/cve-2026-52617
Análise de VulnerabilidadesAnálise de CódigoExploraçãoSegurança da Cadeia de Suprimentos
GitHubs1ko/cve-2026-52617

CVE-2026-52617

Advisory e prova de conceito para injeção de comandos do sistema operacional em um auxiliar MCP ffmpeg, com análise de causa raiz, orientação para detecção e mitigações para um pacote npm não corrigido.

Ver Repositório
há 1 diaAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-52617 — @sworddut/mcp-ffmpeg-helper: injeção de comandos do SO por meio de opções da ferramenta ffmpeg

runFFmpegCommand passa uma string construída a partir dos parâmetros da ferramenta MCP para spawn(…, { shell: true }), de modo que metacaracteres de shell em options, format, codec, pixelFormat ou extraOptions são executados no host que executa o servidor.

⚠ Não existe versão corrigida

Em 2026-08-22, o lançamento mais recente do npm é o 0.2.1, que é a versão afetada, e o sink ainda está presente no branch padrão do repositório. Não há para o que atualizar. Consulte Mitigação para saber o que os usuários podem fazer nesse meio-tempo.

Modelo de ameaça

Os argumentos de ferramentas MCP sofrem influência do atacante. Eles são produzidos por um LLM a partir do conteúdo que o agente processa — documentos, páginas da web, saída de ferramentas — portanto, injeção indireta de prompt coloca o atacante no controle dos valores que um manipulador de ferramentas recebe. Um manipulador que alimenta qualquer um desses valores em um shell transforma essa influência em execução de código no host que executa o servidor MCP. Este é o mesmo modelo do caso precedente aws-mcp-server / CVE-2026-5058.

Um servidor de conversão de mídia é um alvo particularmente natural para isso: os arquivos que ele é solicitado a processar são exatamente o conteúdo não confiável que um agente coleta de outros lugares.

Execução

src/utils/ffmpeg.ts — o comando é montado como uma string e o shell é habilitado explicitamente:

root@kitploit:~
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 }) executa a string inteira por meio de /bin/sh -c. Tudo o que o chamador contribuiu para command é sintaxe de shell.

src/tools/handlers.ts alcança esse auxiliar a partir de três ferramentas, interpolando parâmetros que nunca são validados quanto ao conteúdo:

FerramentaParâmetros injetáveis
convert_video

Apenas inputPath e outputPath são verificados de alguma forma, e os esquemas Zod validam o tipo (z.string()), nunca o conteúdo — portanto, metacaracteres passam direto.

Uma chamada convert_video com options definido como ; touch /tmp/marker ; produz:

root@kitploit:~
/bin/sh -c "ffmpeg -i /tmp/in.mp4 ; touch /tmp/marker ; /tmp/out.mp4"

Reprodução

poc/driver.mjs fala MCP via stdio: ele inicializa o servidor, emite uma chamada tools/call para convert_video com um valor options injetado e verifica a existência de um arquivo marcador. O payload é um touch inofensivo.

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

Esperado em uma versão afetada:

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

ffmpeg não precisa estar instalado — o comando injetado é executado na mesma string /bin/sh -c, independentemente de o binário inicial ser resolvido. Validado em 2026-06-01 em um contêiner isolado, revalidado em 2026-06-13, e o sink novamente confirmado no branch padrão em 2026-08-22. Execute-o apenas contra infraestrutura que você está autorizado a testar.

Detecção

  • Uma linha de comando ffmpeg contendo ;, &&, ||, |, uma crase ou $(. Invocações legítimas de ffmpeg deste servidor não contêm.
  • Um processo sh -c cuja linha de comando começa com ffmpeg e contém um segundo comando após um separador — um sinal na árvore de processos (auditd, eBPF, Falco, EDR) que não depende do registro de aplicação.
  • Filhos inesperados do processo do servidor MCP. ffmpeg e ffprobe são esperados; um shell, um interpretador ou um cliente de rede não são.
  • O servidor registra cada invocação em stderr como Running FFmpeg command: ffmpeg <command>, que é o lugar mais barato para identificar um valor injetado se os logs forem coletados.
  • Logs de chamadas de ferramentas MCP em que options, format, , ou contenham metacaracteres de shell.

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

Mitigação

Não existe lançamento corrigido, portanto as opções são contenção e remoção:

  • Pare de usar o pacote se o agente que ele atende processar qualquer conteúdo não confiável. Esta é a única mitigação completa disponível hoje.
  • Se for necessário mantê-lo, execute-o em um contêiner ou VM como um usuário sem privilégios, com um sistema de arquivos somente leitura além do diretório de trabalho de mídia, sem credenciais em seu ambiente e sem saída de rede. A execução de código então dá ao atacante uma sandbox em vez do host.
  • Não o exponha por meio de um transporte de rede. A implantação somente via stdio é o que mantém esse risco em 7.8 em vez de 9.8.
  • Crie um wrapper ou um fork do servidor para rejeitar metacaracteres de shell nos cinco parâmetros listados acima antes que eles cheguem a runFFmpegCommand.

A correção upstream é remover shell: true e passar ao ffmpeg um vetor de argumentos — spawn("ffmpeg", ["-i", inputPath, …]) — construindo esse array a partir de valores format, codec e pixelFormat permitidos (allowlist), em vez de strings de forma livre. Validação de conteúdo, não apenas validação de tipo Zod, é o requisito subjacente.

NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; mitigações CWE-78 M1 e M2.

Linha do tempo

Referências

  • Pacote npm — https://www.npmjs.com/package/@sworddut/mcp-ffmpeg-helper
  • Repositório — https://github.com/sworddut/mcp-ffmpeg-helper
  • Precedente para o modelo de ameaça MCP — CVE-2026-5058 (aws-mcp-server)

Avisos complementares da mesma rodada de pesquisa: CVE-2026-52616, CVE-2026-52618.

Licença

MIT — consulte LICENSE.

Baixar ferramenta
CVECVE-2026-52617
CWECWE-78 (Improper Neutralization of Special Elements used in an OS Command)
Pacote@sworddut/mcp-ffmpeg-helper (npm)
Afetado0.2.1 e anteriores — todas as versões publicadas
Corrigido emnenhuma
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 Alto (transporte stdio). AV:N → 9.8 Crítico se o servidor estiver envolvido em um transporte de rede.
Relatado pors1ko (github.com/s1ko, [email protected])
CVE atribuído2026-07-13, MITRE CNA-LR
options
extract_audioformat
create_video_from_imagescodec, pixelFormat, extraOptions
codec
pixelFormat
extraOptions
DataEvento
2026-05-29Vulnerabilidade identificada por revisão de código-fonte do tarball publicado
2026-06-01Validada dinamicamente via MCP stdio em um contêiner isolado
2026-06-13Revalidada em um segundo host; o repositório não possui Private Vulnerability Reporting habilitado, e os campos package.json repository/bugs/homepage permanecem no modelo github.com/yourusername, sem deixar um contato de segurança documentado
2026-07-13MITRE CNA-LR atribui CVE-2026-52617, com s1ko creditado como descobridor
2026-08-22Sink reconfirmado no branch padrão; o npm mais recente ainda é 0.2.1; este relatório publicado