AIナレッジベースプラットフォーム「MaxKB」に存在する重大な脆弱性を悪用すれば、攻撃者はプロンプトインジェクションを利用して、脆弱な環境でオペレーティングシステムのコマンドを実行できることが分かりました。設定によっては、基盤となるホスト上で直接コマンドを実行することも可能です。
この脆弱性はCVE-2026-77521およびGHSA-f36j-f34j-h3rxとして追跡されており、MaxKBバージョン2.10.3-lts以前に影響します。認証なしでアクセス可能な公開・埋め込み型アシスタントについては、CVSS v3.1の最大値である10.0のスコアが付与されています。この脆弱性へのパッチは、MaxKBバージョン2.10.5-ltsに含まれています。
MaxKBのAIエージェントに存在する重大な欠陥
この脆弱性は特に、ツール、Model Context Protocol(MCP)ツール、スキル、またはサブアプリケーションを設定したMaxKBアシスタントに影響します。こうした構成では、ユーザーとのチャットがSandboxShellBackendを利用するdeepagentsベースのエージェントを経由して処理されます。
アドバイザリによると、このバックエンドをdeepagentsと組み合わせて使用すると、AIモデルに自動的にシェル実行機能が付与されます。生成されるエージェントは、コマンド実行、ファイルシステム操作、ディレクトリ検索を行うツールにアクセスできます。
MaxKBはexecuteツールを明示的に除外していないものの、write_file、read_file、edit_fileといったファイル操作についてはヒューマン・イン・ザ・ループによる制御が働く一方、コマンド実行についてはこの制御が及びません。
そのため、悪意あるプロンプトや、検索拡張生成(RAG)を通じて処理される文書に埋め込まれた間接的なプロンプトによって、モデルがシェルコマンドを呼び出してしまう可能性があります。
Lasso Securityの研究者らによると、この問題の悪用には必ずしもジェイルブレイクが必要というわけではないとのことです。テストでは、単純な操作コマンドだけでエージェントにシステム情報を取得するコマンドを実行させ、その結果をファイルに書き込ませることができたといいます。
Securityflaw reports
最もリスクが大きいのは、MAXKB_SANDBOX設定が明示的に有効化されていない、ソースコード版およびベアメタル環境でのMaxKB導入です。
該当するシェルバックエンドはSANDBOX設定値を確認しますが、この設定が存在しない場合はデフォルトで無効化されます。この場合、コマンドはPythonのsubprocess.run()を通じてshell=Trueで実行され、アプリケーションが持つホスト権限がそのまま使われます。
これにより、MaxKBのサービスアカウント権限でリモートコード実行が行われる恐れが生じます。アプリケーションが昇格した権限で動作している場合、攻撃者は認証情報や設定ファイルにアクセスしたり、内部サービスを探索したり、ネットワーク内を横方向に移動したり、永続化を確立したりできる可能性があります。
アドバイザリでは、マルチテナント環境ではテナント間への影響が及ぶ可能性があるとも警告しています。同時に、認証されていない攻撃者が公開されているアシスタントを標的にすることも考えられます。
さらに、間接的なプロンプトインジェクションによって脅威の対象範囲が広がります。攻撃者はMaxKBアシスタントと直接やり取りする必要すらなく、アシスタントにアップロードまたは取り込まれるコンテンツを制御できれば十分な場合があるのです。
MaxKBの公式コンテナイメージではMAXKB_SANDBOX=1が有効になっており、権限を低く抑えたサンドボックスユーザーの下でコマンドを実行しようとします。しかし研究者らは、コマンドラッパーがコマンドをshell=Trueの文字列として構築し、それをrootシェルが実行してしまうため、この保護機構は回避できることを突き止めました。
リダイレクト、パイプ、コマンドセパレータ、コマンド置換といったシェルのメタ文字は、コマンドが権限の低いプロセスに渡される前に、外側のシェルによって解釈されてしまう可能性があります。テストでは、サンドボックスユーザーの下で実行されたコマンド自体はブロックされていたにもかかわらず、単純なリダイレクトを使うことでroot所有のファイルを作成できてしまいました。
さらに、Dockerイメージにはリポートによると USERディレクティブが欠けており、デフォルトでUID 0として実行される状態になっています。これにより、サンドボックス回避が発生した場合の影響がさらに増幅されます。
管理者は直ちにMaxKBバージョン2.10.5-lts以降へアップグレードすべきです。また、組織はツール、MCP連携、スキル、サブアプリケーションに接続されているすべてのアシスタントを見直す必要があります。
推奨される防御策は以下の通りです。
- コード実行が明示的に必要でない限り、シェル実行機能を持つエージェントバックエンドを無効化する。
executeアクションの実行前には必ず人間による承認を必須とする。- プロンプトインジェクションに対するセキュリティ境界として、モデルのアラインメントに依存しない。
- 安全なサンドボックスが利用できない場合、ベアメタル環境での導入はフェイルクローズ(安全側に倒れる形で処理を停止)するようにする。
- コンテナは非rootユーザーで実行し、
shell=Trueを使ったコマンド文字列の構築を避ける。 - RAG文書、アップロードファイル、外部コンテンツは信頼できない入力として扱う。
この脆弱性は、CWE-78(OSコマンドインジェクション)、CWE-250(不要な権限での実行)、CWE-749(危険な機能の露出)に分類されています。
SOCのアラート調査時間を1件あたり21分短縮。即座のIOCコンテキストでSOCの即応力を強化: TI LookupをSOCに統合する
翻訳元: https://gbhackers.com/critical-maxkb-ai-agent-flaw/