Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-52617 — MCP ffmpegヘルパーにおけるOSコマンドインジェクションに関するアドバイザリと概念実証(PoC)。根本原因の分析、検出の指針、および未修正のnpmパッケージに対する緩和策を備えています。 | Kitploit
ツール/GitHubGitHub/s1ko/cve-2026-52617
脆弱性分析コード分析エクスプロイトサプライチェーンセキュリティ
GitHubs1ko/cve-2026-52617

CVE-2026-52617

MCP ffmpegヘルパーにおけるOSコマンドインジェクションに関するアドバイザリと概念実証(PoC)。根本原因の分析、検出の指針、および未修正のnpmパッケージに対する緩和策を備えています。

リポジトリを見る
1日前未レビュー

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

CVE-2026-52617 — @sworddut/mcp-ffmpeg-helper: ffmpegツールオプションを介したOSコマンドインジェクション

runFFmpegCommand は、MCPツールのパラメータから構築した文字列を spawn(…, { shell: true }) に渡すため、options、format、codec、pixelFormat、extraOptions に含まれるシェルのメタ文字が、サーバーを実行しているホスト上で実行されます。

⚠ 修正版は存在しません

2026-08-22現在、最新のnpmリリースは 0.2.1 であり、これが影響を受ける バージョンです。また、シンクはリポジトリのデフォルトブランチに依然として 存在します。アップグレード先はありません。それまでの間のユーザー向けの 対応策については 回避策 を参照してください。

脅威モデル

MCPツールの引数は攻撃者の影響を受けます。これらはLLMが、エージェントが処理するコンテンツ(ドキュメント、Webページ、ツールの出力)から生成されるため、間接的なプロンプトインジェクションにより、攻撃者はツールハンドラーが受け取る値を制御できます。これらの値のいずれかをシェルに渡すハンドラーは、その影響力をMCPサーバーを実行しているホスト上でのコード実行に変えてしまいます。これは先行事例である aws-mcp-server / CVE-2026-5058 と同じモデルです。

メディア変換サーバーは、この種の攻撃にとって特に自然な標的です。処理を依頼されるファイルは、まさにエージェントが外部から取得する信頼できないコンテンツだからです。

実行

src/utils/ffmpeg.ts — コマンドは文字列として組み立てられ、シェルが明示的に有効化されています:

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 }) は、文字列全体を /bin/sh -c で実行します。呼び出し元が command に含めたものはすべてシェル構文になります。

src/tools/handlers.ts は、3つのツールからこのヘルパーに到達し、内容が一切検証されないパラメータを文字列に補間します:

ツールインジェクション可能なパラメータ
convert_video

チェックされているのは inputPath と outputPath だけで、Zodスキーマは型(z.string())のみを検証し、内容は検証しません。したがって、メタ文字はそのまま通過します。

options を ; touch /tmp/marker ; に設定した convert_video 呼び出しは、次の結果を生成します:

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

再現

poc/driver.mjs はstdio上でMCPを話します。サーバーを初期化し、インジェクションされた options 値を使用して convert_video の tools/call を1回発行し、マーカーファイルを確認します。ペイロードは無害な touch です。

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

影響を受けるバージョンでの期待される出力:

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

ffmpeg がインストールされている必要はありません。インジェクションされたコマンドは、先頭のバイナリが解決されるかどうかに関係なく、同じ /bin/sh -c 文字列内で実行されます。2026-06-01に隔離されたコンテナで検証し、2026-06-13に再検証し、2026-08-22にデフォルトブランチでシンクの存在を再確認しました。テストを許可されたインフラストラクチャでのみ実行してください。

検知

  • ;、&&、||、|、バッククォート、$( を含む ffmpeg コマンドライン。このサーバーからの正規のffmpeg呼び出しにはこれらは含まれません。
  • コマンドラインが ffmpeg で始まり、区切り文字の後に2つ目のコマンドが続く sh -c プロセス — アプリケーションのログに依存しないプロセスツリーシグナル (auditd、eBPF、Falco、EDR)。
  • MCPサーバープロセスの予期しない子プロセス。ffmpeg と ffprobe は想定内ですが、シェル、インタプリタ、ネットワーククライアントは想定外です。
  • サーバーはすべての呼び出しを stderr に Running FFmpeg command: ffmpeg <command> として記録します。これは、ログが収集されていれば、インジェクションされた値を最も低コストで発見できる場所です。
  • options、format、codec、、 にシェルのメタ文字が含まれるMCPツール呼び出しログ。

MITRE ATT&CK T1059.004 コマンドおよびスクリプトインタプリタ: Unixシェル。

回避策

修正済みリリースが存在しないため、選択肢は封じ込めと削除です:

  • パッケージの使用を中止する — 提供するエージェントが信頼できないコンテンツを処理する場合。これが現時点で唯一の完全な回避策です。
  • どうしても使用を続ける場合は、非特権ユーザーとしてコンテナまたはVM内で実行し、メディアの作業ディレクトリ以外は読み取り専用のファイルシステムにし、環境に認証情報を置かず、ネットワーク出口も設けないでください。そうすれば、コード実行が攻撃者に与えるのはホストではなくサンドボックスだけになります。
  • ネットワークトランスポートで公開しないでください。stdioのみのデプロイが、これを9.8ではなく7.8に保っています。
  • runFFmpegCommand に到達する前に、上記の5つのパラメータ内のシェルのメタ文字を拒否するよう、サーバーをラップまたはフォークしてください。

上流での修正は、shell: true を削除し、ffmpegに引数ベクトル — spawn("ffmpeg", ["-i", inputPath, …]) — を渡し、その配列を自由形式の文字列ではなく許可リスト化された format、codec、pixelFormat の値から構築することです。Zodの型検証だけでなく、コンテンツの検証が根本的な要件です。

NIST SP 800-53r5 SI-10、OWASP ASVS v4 §5.3.8、CWE-78の軽減策M1およびM2。

タイムライン

参考情報

  • npmパッケージ — https://www.npmjs.com/package/@sworddut/mcp-ffmpeg-helper
  • リポジトリ — https://github.com/sworddut/mcp-ffmpeg-helper
  • MCP脅威モデルの先行事例 — CVE-2026-5058 (aws-mcp-server)

同じ調査パスから得られた関連アドバイザリ: CVE-2026-52616、 CVE-2026-52618。

ライセンス

MIT — LICENSE を参照してください。

ツールをダウンロード
CVECVE-2026-52617
CWECWE-78 (OSコマンドで使用される特殊要素の不適切な無害化)
パッケージ@sworddut/mcp-ffmpeg-helper (npm)
影響を受けるバージョン0.2.1以前 — 公開された全バージョン
修正版なし
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 高(stdioトランスポート)。AV:N → 9.8 重大(サーバーがネットワークトランスポートでラップされている場合)
報告者s1ko (github.com/s1ko、[email protected])
CVE割り当て2026-07-13、MITRE CNA-LR
options
extract_audioformat
create_video_from_imagescodec、pixelFormat、extraOptions
pixelFormat
extraOptions
日付イベント
2026-05-29公開されたtarballのソースレビューにより脆弱性を特定
2026-06-01隔離されたコンテナでMCP stdioを介して動的に検証
2026-06-132台目のホストで再検証。リポジトリではPrivate Vulnerability Reportingが有効になっておらず、package.json の repository/bugs/homepage フィールドは github.com/yourusername テンプレートのままで、文書化されたセキュリティ連絡先が存在しない
2026-07-13MITRE CNA-LRがCVE-2026-52617を割り当て、s1koが発見者としてクレジットされる
2026-08-22デフォルトブランチでシンクを再確認。npmの最新版は依然として0.2.1。本稿を公開