何が起きたか
DB-GPT 0.8.2まで、/api/v1/chat/react-agentエンドポイントに認証なしRCEがあります。これは、すべての呼び出し元に管理者ロールを付与するモックのget_user_from_headers関数に依存しています。認証なしの攻撃者は、ReActエージェントのサンドボックス化されていないcode_interpreterおよびshell_interpreterツールを駆動するプロンプトを送信し、ウェブサーバーコンテナ内でrootとして任意のPython/bashを実行でき、デフォルト資格情報で同梱データベースに到達することもできます。
なぜ重要か
DB-GPTはLLMエージェントをデータベースに結び付けるオープンソースのエージェント型データフレームワークです。意図はエージェントをサンドボックス化することですが、モック認証オブジェクトがそれを無効にしています。攻撃者はコンテナ内で事前認証のrootを取得し、エージェントが提供するデータソースに直接アクセスできるため、データ流出、モデルパイプライン改ざん、横方向の移動が可能です。
攻撃経路
サンドボックス化されていないcode_interpreter/shell_interpreterツールを駆動する/api/v1/chat/react-agentへの認証なしプロンプト。
影響を受けるシステム
DB-GPT <= 0.8.2 (pypi dbgpt-app)
緩和策
修正済みリリースにアップグレードし、モックのユーザー解決を実際の認証/RBACに置き換え。エージェントのコード/シェルツールをサンドボックス化。