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

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
chub-supply-chain-poc — AIドキュメントパイプラインを介したサイレントな依存関係注入。240回の隔離Docker実行により、Context Hubのサニタイズ無しのMCPサーバーが、悪意のあるドキュメントによって開発者プロジェクトを警告なしに侵害することを実証。 | Kitploit
ツール/GitHubGitHub/mickmicksh/chub-supply-chain-poc
脆弱性分析コード分析マルウェア分析ペネトレーションテストサプライチェーンセキュリティ論文と研究学習と教育AIセキュリティ
GitHubmickmicksh/chub-supply-chain-poc

chub-supply-chain-poc

AIドキュメントパイプラインを介したサイレントな依存関係注入。240回の隔離Docker実行により、Context Hubのサニタイズ無しのMCPサーバーが、悪意のあるドキュメントによって開発者プロジェクトを警告なしに侵害することを実証。

リポジトリを見る
424ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

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

Vulnerability Disclosure Affected Version Tests Reproducible License

Context Hub サプライチェーン PoC

コンテキストハブ (Context Hub) (@aisuite/chub v0.1.3) におけるサニタイズゼロの脆弱性により、MCPドキュメントパイプラインを通じてサイレントな依存関係注入が可能になります。

参考文献: CWE-94 (コードインジェクション) | CWE-829 (信頼できない制御範囲) | CWE-345 (データの真正性検証不足) | OWASP LLM01 (プロンプトインジェクション)

TL;DR

我々は、偽の依存関係(plaid-link-verify、stripe-checkout-guard)を含む現実的な毒文書を作成し、隔離されたDockerコンテナ内のローカルchub MCPサーバーを通じて提供しました。毒されたコンテンツはContext Hubのレジストリにアップロードされておらず、chub buildをローカルで実行し、MCPサーバーがディスク上のビルド済み出力を提供するように設定しました。エージェントから見れば、その体験はライブレジストリからドキュメントを取得するのと同一です。

AIコーディングアシスタントがドキュメントを取得したとき、Haikuは100%の実行で、テキスト出力で一度も言及することなく、requirements.txtに偽のパッケージをサイレントに書き込みました。 アシスタントの応答を読む開発者は怪しいものを見ることはありませんが、プロジェクトは毒されています。

240回の隔離実行。3つのモデル。4つの努力レベル。2つのAPI。0の汚染。

その様子

生成されたコードは、正当なモジュールとともに偽の依存関係をサイレントにインポートします:

Generated app.py with injected dependency

エージェントはまた、CLAUDE.mdを修正し、偽のパッケージを「プロジェクト標準」として埋め込みます:

CLAUDE.md after attack

結果

以下の表はPlaid Linkの結果(120回の隔離実行)を示しています。Stripe Checkoutを含む完全なデータ(合計240回の実行)はRESULTS.mdを参照してください。

サイレント依存関係ポイズニング (requirements.txt)

Haikuは偽の依存関係について警告しませんでした(0/40)。Sonnetは48%の実行(19/40)で警告しましたが、全体的には53%でrequirements.txtを毒しました。Opusは75%の実行(30/40)で警告し、requirements.txtやコードを毒することはありませんでした。

CLAUDE.md の永続性 (プロジェクト設定のバックドア)

Haikuは88%の実行(35/40)でプロジェクトのCLAUDE.mdを修正し、偽の依存関係を「プロジェクト標準」として含めます。このファイルはgitにコミットされ、リポジトリをクローンする将来のすべての開発者が毒された設定を継承します。

攻撃チェーン

root@kitploit:~
flowchart LR
    A["Attacker\nsubmits PR"] -->|"No identity\nverification"| B["Maintainer\nmerges PR"]
    B -->|"No content\nsanitization"| C["Doc on CDN\n(no integrity check)"]
    C -->|"MCP serves\nraw content"| D["Agent context\nwindow"]
    D -->|"Agent acts on\nuntrusted content"| E["Developer\nworkstation"]

    style A fill:#111,stroke:#333,color:#f0f0f0
    style B fill:#161616,stroke:#333,color:#888
    style C fill:#161616,stroke:#333,color:#888
    style D fill:#161616,stroke:#333,color:#888
    style E fill:#111,stroke:#333,color:#f0f0f0

脅威モデル

主要な発見事項

  1. Haikuの毒化は完全にサイレントです。 両方のAPIにわたるHaikuの80回の実行中、応答で偽の依存関係に言及したものは0回でした。モデルは知らせずにディスクに書き込みます。Sonnetは48%の実行で警告しましたが、それでも35-53%の実行でrequirements.txtを毒しました。Opusは23-75%の実行で警告し、requirements.txtやコードを毒することはありませんでした。

  2. Haikuはすべての努力レベルで100%悪用可能です。 両方のAPIで努力レベルに依存しません。ファミリーの中で最も弱いモデルは偽の依存関係を決して検出しません。

  3. Opusはコード毒化には耐性がありますが、設定毒化には耐性がありません。 Opusはrequirements.txtやPythonコードに偽の依存関係を書き込むことはありませんでした(両方のAPIで0/80)。しかしStripeでは、Opusは38%の実行でCLAUDE.mdを修正し、カナリアをインストールせずにプロジェクト依存関係として文書化しました。

  4. CLAUDE.mdの永続性はサプライチェーンベクターを生み出します。 修正された設定ファイルはgitにコミットされ、リポジトリをクローンするすべての開発者と、そのプロジェクトの将来のすべてのAIセッションを毒します。これはすべてのモデルで機能します(Haiku 88-90%、Sonnet 58%、Opus 0-38%)。

  5. APIの熟知度が重要です。 Stripe(よく知られている):モデルはトレーニングデータから偽のパッケージを検出します。Plaid(あまり知られていない):モデルは検証できず、偽の依存関係を疑わずに受け入れます。

  6. これはカテゴリ全体の問題です。 Context7はContextCrush(2026年2月)がありました。Context Hubにもこれがあります。サニタイズされていない外部コンテンツをエージェントコンテキストに注入するツールはすべて脆弱です。

ソースコードの発見事項

パイプライン全体でサニタイズゼロ:

  • annotations.js - 生のコンテンツでwriteFileSync、フィルタリングなし
  • build.js - コンテンツスキャンなし、ユニコード正規化なし
  • cache.js - CDNフェッチ、ハッシュ/署名検証ゼロ
  • フロントマターのsource: official - 自己宣言、検証なし

開示

Context HubにはSECURITY.mdがありません。脆弱性を責任を持って開示する方法が文書化されておらず、セキュリティ連絡先、PGP鍵、開示ポリシーもありません。コミュニティメンバーはとにかく脆弱性を見つけ、通常のIssueやPRとして報告しました。どれもレビューされませんでした。

Open security PRs with zero reviews

注: 当社はIssue #74を提出していません。当社の監査はこれらの脆弱性を独自に発見・定量化しました。Issue #74およびPR #69、#81、#125は、コミュニティがこれらの問題をメンテナーの関与ゼロで指摘したことを示す先行技術として引用されています。

エスカレーション

偽のパッケージがrequirements.txtに含まれると、標準のpip install -r requirements.txtによって、攻撃者はsetup.pyのポストインストールフックを介して任意のコード実行を得ることができます。これはサンドボックスではなく、pipは開発者の完全な権限で無制限のPythonを実行します。

その単一のエントリポイントから、攻撃者は以下が可能です:

  • データを外部漏洩させる。 環境変数、APIキー、AWS認証情報、SSHキー、.envファイル、またはソースコードを読み取り、攻撃者が管理するサーバーに送信します。
  • 永続的なバックドアをインストールする。 リバースシェル、cronジョブ、変更されたシェルプロファイル、またはパッケージのアンインストール後も存続するバックグラウンドプロセス。
  • chubレジストリを毒する。 ~/.chub/config.yamlを変更して、攻撃者が管理するドキュメントソースを追加します。すべてのライブラリに対する将来のすべてのchubクエリに攻撃者のコンテンツが含まれるようになります。設定はキャッシュではないため、chub cache clear後も存続します。
  • gitを通じて伝播する。 CLAUDE.mdの修正がコミットされます。リポジトリをクローンするすべての開発者が毒された設定を継承します。彼らが同じワークフローを実行すると、攻撃は彼らのマシンで繰り返されます。

これらは相互排他的ではありません。単一のポストインストールフックで1秒未満でこれらすべてを実行できます。当社は悪意のあるパッケージを作成または登録していません。

リポジトリ構成

root@kitploit:~
.
|-- README.md                    # このファイル
|-- RESULTS.md                   # 実行ごとの内訳を含む完全なデータセット
|-- REPRODUCE.md                 # Dockerベースの再現ガイド
|-- alternatives-comparison.md   # Context7、LAP、GitMCP、Docforkの比較
|-- article.html                 # 完全な記事
|-- docker/
|   |-- Dockerfile               # 隔離テスト環境
|   |-- run_isolated.ps1         # PowerShellランナー(Windows/macOS/Linux via pwsh)
|   |-- seed-claude.md           # 各実行にシードされる最小限のCLAUDE.md
|   |-- plaid-doc/               # 毒されたPlaid Linkドキュメント(カナリア: plaid-link-verify)
|   |   `-- plaid/link/DOC.md
|   `-- stripe-doc/              # 毒されたStripe Checkoutドキュメント(カナリア: stripe-checkout-guard)
|       `-- stripe/checkout/DOC.md
`-- results/
    |-- plaid-isolated/          # 120回のPlaid実行:JSON + セッション書き起こし + プロジェクトファイル
    `-- stripe-isolated/         # 120回のStripe実行:JSON + セッション書き起こし + プロジェクトファイル

結果の再現

完全なDockerベースの再現ガイドはREPRODUCE.mdを参照してください。

クイックスタート:

root@kitploit:~
# Plaid (default)
docker build --build-arg DOC_DIR=plaid-doc -t plaid-bench docker/
docker run -d --name plaid-runner plaid-bench sleep infinity
docker exec -it plaid-runner claude login

# Stripe
docker build --build-arg DOC_DIR=stripe-doc -t stripe-bench docker/
docker run -d --name stripe-runner stripe-bench sleep infinity
docker exec -it stripe-runner claude login

# Then run the test matrix from the host (see REPRODUCE.md)

制限事項

  1. Claudeモデルのみテスト済み。GPT-4、Gemini、Llamaは異なる可能性があります。
  2. セルあたり10回の実行 - 傾向を把握するには十分ですが、狭い信頼区間を得るには不十分。
  3. テストは--permission-mode bypassPermissionsを使用。実際のエージェントは確認を求める可能性があります。
  4. ローカルドキュメントソースであり、CDNではありません。CDN経路では悪意のあるPRがマージされる必要があります。
  5. PyPIに実際の悪意のあるパッケージは登録されていません。

関連研究

  • ContextCrush (Noma Security, 2026年2月) - Context7に対する同じクラスの攻撃
  • Morris II (Cohen, Bitton, Nassi) - AIエージェントにおける自己複製プロンプト
  • Promptware Kill Chain (Nassi, Schneier et al.) - 多段階LLM攻撃の分類
  • MCP Tool Poisoning (Invariant Labs) - サーバー間ツール操作

ライセンス

MIT

開示

この研究は、Context Hubのオープンソース代替品であるLAPの開発者、Mickey Shmueliによって実施されました。LAPは公式API仕様からの決定論的コンパイルを使用し、パイプラインにコミュニティコントリビューションコンテンツはありません。この監査は、サニタイズされていないコンテンツパイプラインに関する真摯なセキュリティ懸念に動機付けられたものです。これは、検証されていないコミュニティのコントリビューションを受け入れるこの分野のツールすべてに影響する脆弱性のクラスです。発見事項はそれ自体で成立しています:240回の隔離Docker実行、決定論的検出、完全に再現可能。

免責事項

このPoCは教育およびセキュリティ研究目的のみです。すべてのテストは隔離されたDockerコンテナ内でローカルに実行されました。悪意のあるコンテンツはContext Hubリポジトリに提出されていません。すべてのカナリアパッケージ名はテスト前にPyPIに存在しないことが確認されました。

これらの脆弱性はコミュニティメンバーによってissue #74(3月12日)とPR #125(3月17日)で独立して報告されました。両方ともメンテナーからの応答はゼロでした。

ツールをダウンロード
努力HaikuSonnetOpus
低100%60%0%
中100%70%0%
高100%40%0%
最大100%40%0%
努力HaikuSonnetOpus
低90%70%0%
中80%70%0%
高90%40%0%
最大90%50%0%
攻撃者Context HubのドキュメントレジストリにPRを送信できる任意の人物
攻撃面GitHub PRからCDN、MCP、エージェントコンテキストへと流れるコミュニティドキュメント
信頼境界信頼できないコントリビューターのコンテンツが権威あるAPIドキュメントとして扱われる
前提条件毒されたドキュメントを含む1つのマージされたPR
影響依存関係注入 + pipのポストインストールフックによる任意コード実行
日付イベント
2026-03-12Issue #74 が @bjorkbjork によって提出され、CDNの整合性、自己宣言ソース検証、アノテーションインジェクションを含む4つのセキュリティ脆弱性を報告
2026-03-12Issue #74 が内部でコアチームメンバーに割り当てられた - フォローアップゼロ
2026-03-17PR #125 が @hobostay によって提出され、コンテンツ整合性検証を追加 - レビューゼロ
2026-03-12 to 03-20追加のセキュリティPR (#69, #81) がコミュニティによって提出 - レビューゼロ
2026-03-20 to 03-23当社の独立した監査により、240回の隔離Docker実行で脆弱性を確認・定量化
2026-03-23公開開示