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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
CVE-2026-52618 — executeDeployment extraVars を介した @webfer/mcp-ansible-drupal における OS コマンドインジェクションの PoC を含む CVE-2026-52618 を文書化し、さらに検出ガイダンスと緩和策も提供します。 | Kitploit
ツール/GitHubGitHub/s1ko/cve-2026-52618
脆弱性分析エクスプロイトAIセキュリティ
GitHubs1ko/cve-2026-52618

CVE-2026-52618

executeDeployment extraVars を介した @webfer/mcp-ansible-drupal における OS コマンドインジェクションの PoC を含む CVE-2026-52618 を文書化し、さらに検出ガイダンスと緩和策も提供します。

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-52618 — @webfer/mcp-ansible-drupal: executeDeployment extra vars による OS コマンドインジェクション

spawn(cmd[0], cmd.slice(1), { shell: true }) は、引数配列をエスケープせずに単一の /bin/sh -c 文字列へ再結合するため、executeDeployment MCP ツールに渡された extraVars 値内のシェルメタキャラクターが、サーバーが実行されているホスト上で実行されてしまいます。

この問題は修正済みです。2.0.3 以降にアップグレードしてください。

脅威モデル

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

その結果、「呼び出し元は信頼できる LLM である」ということは緩和策にはなりません。ツールの引数は信頼できない入力です。

実行

2.0.0 の src/helpers/runAnsible.ts は引数配列を構築し、シェルを有効にして実行していました:

root@kitploit:~
const proc = spawn(ansibleCmd[0], ansibleCmd.slice(1), { shell: true });

shell: true の場合、Node は残りの要素を argv として ansibleCmd[0] を実行しません。配列全体を 1 つの文字列に結合し、要素にクォートやエスケープを適用せずに /bin/sh -c へ渡します。したがって、;、&&、|、バッククォート、$() を含む要素は、意図されたコマンドから抜け出してしまいます。

到達可能な経路は executeDeployment MCP ツール(src/tools/executeDeployment.ts)です。このツールは、呼び出し元が指定した extraVars を --extra-vars key=value として配列に転送します。; touch /tmp/marker ; という値は次のようになります:

root@kitploit:~
/bin/sh -c "ansible-playbook -i inv.ini play.yml ... --extra-vars deploy_env=; touch /tmp/marker ; echo INJECTED"

同じバージョンの別のシンクは、projectRoot を execSync('ansible-vault encrypt ' + vaultPath) に補間していました。

再現

poc/driver.mjs は、細工された extraVars 値で runAnsible を直接呼び出し、マーカーファイルを確認します。ansible-playbook がインストールされている必要はありません。先頭のバイナリが解決されるかどうかに関係なく、インジェクションされたコマンドは同じ /bin/sh -c 文字列内で実行されるためです。

root@kitploit:~
npm pack @webfer/[email protected] && tar xf webfer-mcp-ansible-drupal-2.0.0.tgz
node poc/driver.mjs

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

root@kitploit:~
{"target":"@webfer/mcp-ansible-drupal 2.0.0","sink":"runAnsible -> spawn(cmd[0], cmd.slice(1), {shell:true})","vector":"executeDeployment extraVars value","marker":"/tmp/PWNED_ansible","created":true,"verdict":"CONFIRMED - command injection executed"}

2026-06-01 に隔離されたコンテナで検証し、2026-06-13 に無害な touch マーカーで再検証しました。テストを許可されたインフラストラクチャに対してのみ実行してください。

検出

  • ;、&&、||、|、バッククォート、$( のいずれかを含む、ansible-playbook に到達する --extra-vars 値。正当な Ansible 変数値にこれらが含まれることはほぼありません。
  • コマンドラインに ansible-playbook と、セパレーターに続く 2 番目のコマンドを含む sh -c プロセス — アプリケーションのログに依存しないプロセスツリーのシグナル(auditd、eBPF、Falco、EDR)
  • MCP サーバープロセスの予期しない子プロセス。ansible-playbook、git、ansible-vault は想定されますが、シェル、インタープリター、ネットワーククライアントは想定されません。
  • executeDeployment の引数にシェルメタキャラクターが含まれる MCP ツール呼び出しログ。ツールの引数をログに記録してください — ほとんどの MCP デプロイメントは記録しておらず、アプリケーション上でインジェクションされた値が見える唯一の場所です。

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

緩和策

@webfer/mcp-ansible-drupal 2.0.3 以降にアップグレードしてください。 現在のソースは shell オプションなしで spawn(ansibleCmd[0], ansibleCmd.slice(1), { … }) を呼び出すため、配列は argv として渡され、メタキャラクターはその意味を失います。

MCP ツールハンドラーに関する一般則、そして今回の修正が適用している内容は次のとおりです:

  • 引数配列がすでに利用可能な場合は、決して shell: true を有効にしないでください。配列形式はまさにシェルを回避するために存在します。
  • ツールの引数を文字列補間してコマンドを構築しないでください。明示的な引数ベクトルを指定して execFile/spawn を使用してください。
  • 型だけでなく内容を検証してください。Zod の z.string() は値が文字列であることを証明するだけで、その中身については何も証明しません。値のセットが既知の場合は許可リストを使用し、既知でない場合はシェルメタキャラクターを拒否してください。
  • MCP サーバーを、ツールが実際に必要とする最小限のファイルシステムおよびネットワーク到達範囲を持つ非特権ユーザーとして実行してください。

NIST SP 800-53r5 SI-10; OWASP ASVS v4 §5.3.8; CWE-78 の緩和策 M1 および M2。

タイムライン

日付内容
2026-06-01脆弱性を 2.0.0 に対して動的に検証

参考情報

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

同じ調査パスからの関連アドバイザリ: CVE-2026-52616、CVE-2026-52617。

ライセンス

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

ツールをダウンロード
CVECVE-2026-52618
CWECWE-78 (OS コマンドに使用される特殊要素の不適切な無害化)
Package@webfer/mcp-ansible-drupal (npm)
Affected2.0.0
Fixed in2.0.3 (公開日: 2026-06-01)
CVSS v3.1AV:L/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 7.8 High (stdio トランスポート)。サーバーがネットワークトランスポートでラップされている場合、AV:N → 9.8 Critical。
Reported bys1ko (github.com/s1ko, [email protected])
CVE assigned2026-07-13、MITRE CNA-LR
2026-06-01
shell: true を削除した 2.0.3 を npm に公開
2026-06-132 台目のホストで再検証
2026-07-13MITRE CNA-LR が CVE-2026-52618 を割り当て、発見者として s1ko をクレジット
2026-08-22本レポートを公開