Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
cve-2026-77521-lab — CVE-2026-77521(MaxKBのプロンプトインジェクションによるコマンド実行)の無害で自己完結した再現 | Kitploit
ツール/GitHubGitHub/inertfluid/cve-2026-77521-lab
脆弱性分析エクスプロイトウェブアプリケーション悪用学習と教育AIセキュリティラボと実践
GitHubinertfluid/cve-2026-77521-lab

cve-2026-77521-lab

CVE-2026-77521(MaxKBのプロンプトインジェクションによるコマンド実行)の無害で自己完結した再現

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

人気

すべて見る →

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

すべてのツールを探索

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

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

CVE-2026-77521 — MaxKB プロンプトインジェクション可能なエージェント → コマンド実行ラボ

GHSA-f36j-f34j-h3rx / CVE-2026-77521 を再現する、自己完結型の無害なラボです。MaxKB(オープンソースのエンタープライズ AI アシスタント / RAG プラットフォーム)では、ツール、MCP ツール、スキル、またはサブアプリケーションを持つあらゆるアシスタントに、シェルの execute ツールが自動注入されます。このツールは人間による承認ゲートの背後にありません。そのため、プロンプトインジェクション(チャットまたは取り込まれたドキュメントから)がシェルに到達します。サンドボックスがそれを封じ込めるはずでしたが、shell=True の文字列によってメタ文字が脱出できてしまいました。

アドバイザリGHSA-f36j-f34j-h3rx
CVECVE-2026-77521
プロジェクト1Panel-dev/MaxKB
影響を受けるバージョン< 2.10.5-lts
修正済み2.10.5-lts(コミット 594f50f)— 部分的、以下を参照
CVSS10.0 CRITICAL (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H)
弱点CWE-78(OS コマンドインジェクション) · CWE-250(不要な権限) · CWE-749(危険なメソッドの露出)

⚠️ 倫理的な使用

これは、教育および防御目的のために、修正済みで公開開示された脆弱性を再現するものです。完全にローカルで無害に動作します:

  • 決定論的な PoC は無害なコマンド(id、PoC が削除するマーカーファイルの書き込み)のみを実行します。実際の gosu/サンドボックス/root は関与しません — 権限降下ラッパーは不活性な env マーカーに置き換えられているため、デモはどこでも実行できます。
  • PoC 3 は実際のモデルを呼び出しますが、発行されるツール呼び出しを観察するだけで、実行はしません。注入されるコマンドは無害です。必ず自分が所有するインフラに対してのみ実行してください。

バグの概要(1段落)

何らかの機能が付与された MaxKB アシスタントは、SandboxShellBackend を備えた deepagents 上に構築されます。deepagents はシェルの execute ツール(および read_file/write_file/…)を自動注入し、MaxKB は excluded_tools を使用しないため、execute は常に存在します。人間の承認が必要なものを決定する interrupt_on 設定は {"write_file": False, "read_file": False, "edit_file": False} です:execute が含まれていないため、承認なしで実行されます。 したがって、モデルを誘導できるあらゆるテキスト(チャットメッセージ、または RAG パイプラインが取り込む汚染されたドキュメント)が、エージェントにシェルコマンドを実行させることができます。ソースインストールでは SANDBOX がデフォルトでオフになるため、コマンドはアプリユーザーとして実行されます。公式(root)コンテナでは、サンドボックスラッパーが shell=True の文字列であったため、;/>/$() が gosu の外で root として実行されました。

これが証明するもの

  1. 人間参加型(human-in-the-loop)ゲートの欠如(CVSS-10 の中核)。 MaxKB の実際の interrupt_on では、注入された execute 呼び出しが承認なしで実行されます。"execute": True を追加するとゲートされます。→ poc/01_missing_hitl_gate.py
  2. シェルメタ文字によるサンドボックス脱出。 ;+リダイレクトが単一文字列の gosu プレフィックスを脱出します。2.10.5-lts の _build_sandbox_command() が再クォートすることで無効化されます。→ poc/02_sandbox_escape.py
  3. 実際のモデルがそれを実行する。 汚染された取り込み済みドキュメントのみを与えられた実際のモデルが、攻撃者のコマンドで execute を呼び出します(クリーンなドキュメントでは呼び出しません)。→ poc/03_real_llm.py

修正は穴の半分に過ぎない

同梱されている 2.10.5-lts パッチ(コミット 594f50f)は サンドボックスエスケープのみを強化する — これは _build_sandbox_command() を追加し、 シェル演算子で分割し、各トークンを shlex.quote で再クォートし、 各単純コマンドを gosu プレフィックスでラップする。v2.10.5-lts ソース に対して検証したところ、エージェントコアは変更されていない: interrupt_on は依然として execute を省略し、 バックエンドは依然として SandboxShellBackend であり、SANDBOX は依然として 0 がデフォルトである。したがって 修正後も、プロンプトインジェクションされた execute は人間の承認なしに実行される — 内側の壁は強化されたが、ゲートは開いたままだった。PoC 1 は ベンダーが提供しなかった推奨の緩和策(execute をゲートする)を実証する。

実行する

PoC 1/2 に依存関係は不要(Python 3.9+):

./run.sh                               # all three (PoC 3 skips without an endpoint)
python3 poc/01_missing_hitl_gate.py    # missing approval gate
python3 poc/02_sandbox_escape.py       # metacharacter sandbox escape

これを発表しますか? DEMO.md はランブックであり、demo.sh がキー入力ごとに実行します。

オプション: 実際の LLM に対する PoC 3

任意の OpenAI 互換エンドポイント(セルフホストまたはホスト型のオープンモデル)。例(Groq):

export OPENAI_BASE_URL=https://api.groq.com/openai/v1
export OPENAI_API_KEY=$GROQ_API_KEY     # read from env only; never logged
MODEL="openai/gpt-oss-20b" python3 poc/03_real_llm.py

TLS検査プロキシの背後では、警告付きで検証なしの再試行を行います (強制するには INSECURE_SSL=1)。エンドポイントが設定されていない場合はクリーンにスキップします。

ファイル

パス内容
sandbox_shell.pyMaxKBの execute() コマンド構築の無害なモデル — 脆弱な文字列 vs パッチ適用済みの _build_sandbox_command()
agent_sim.pydeepagents の interrupt_on 人間承認ゲートの最小モデル
payloads/poisoned-document.md攻撃者によって汚染されたKBドキュメント(間接インジェクション)
poc/01_missing_hitl_gate.py注入された execute が承認なしで実行される;ゲートによりブロックされる
poc/02_sandbox_escape.pyメタ文字が gosu プレフィックスを脱出する;2.10.5 のパーサーはそれらを封じ込める
poc/03_real_llm.py実際のモデルが汚染ドキュメントから execute を呼び出す(クリーン vs 汚染)
DEMO.md / demo.shプレゼンター用ランブックとペース配分されたデモドライバー
assets/attack-flow.{svg,png}攻撃フロー図(ブログのヒーロー画像)
assets/poc3-groq-sample.txt記録された PoC 3 の出力(デモのフォールバック)
ツールをダウンロード