DB-GPTに認証なしRCE、修正版の情報は未公表
AIでデータベースを操作するOSS「DB-GPT」の0.8.2までに、認証なしで外部からサーバー内のコードを実行される欠陥が見つかりました。深刻度はCVSS 9.8(緊急)です。ネットワークから到達できるDB-GPTがある組織は、利用箇所の洗い出しとアクセス制限を先に行い、ベンダーの告知で修正版を確認してください。
急ぎ度: 至急
認証も利用者の操作も不要で、ネットワークから到達できれば root 権限でコードを実行される条件のため、外部や広い社内ネットワークに公開している環境は直ちに対処が必要です。
関係があるか
DB-GPT 0.8.2 以前を自社で動かしている組織が対象です。Web サーバーのコンテナに外部や他部署のネットワークから到達できる環境ほどリスクが高くなります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| DB-GPT(eosphoros-ai/DB-GPT) | 0.8.2 までのすべての版 | 公表されていません。ベンダーの告知とリポジトリのリリース情報で確認してください |
確かめ方
- 1社内でDB-GPTを試験導入または運用していないかを、情報システム部門と開発部門、データ分析部門に確認します。個人や部署単位で立てた検証環境も対象です。
- 2稼働中の版を確認します。コンテナで動かしている場合は、イメージのタグやビルド元のリポジトリの版を見てください。0.8.2 以前、または版が分からない場合は影響を受けるものとして扱います。
- 3ReAct エージェントの機能(
/api/v1/chat/react-agent)に、社外やほかのネットワークから到達できるかを、ファイアウォール、リバースプロキシ、クラウドのセキュリティグループの設定で確認します。 - 4Web サーバーのコンテナやリバースプロキシのログに、
/api/v1/chat/react-agentへのアクセスが残っていないかを調べます。身に覚えのない接続元があれば侵害の可能性があります。
何が起きたか
DB-GPT は、自然言語でデータベースに問い合わせたり、AI エージェントに作業をさせたりするためのオープンソースの基盤です。この製品の /api/v1/chat/react-agent という入口で、利用者が誰かを確かめる仕組みが正しく働いておらず、ログインしていない相手でも管理者として扱われます。その結果、外部の第三者が、サーバー内でプログラムを自由に実行できる状態になります。
原因は、開発用とみられる仮の認証処理(get_user_from_headers)が使われ続けていることです。この処理は、どんなリクエストにも管理者の役割を与えます。いわば、社員証を確認すべき入口の守衛が、誰にでも管理者用の通行証を渡している状態です。弱点の種類は、認証が必要な機能に認証がないことを指す CWE-306 に分類されています。
さらに、このエンドポイントが呼び出す ReAct エージェントには、Python や bash をそのまま実行する code_interpreter と shell_interpreter というツールがあり、隔離(サンドボックス)の仕組みがありません。細工した指示文(プロンプト)を送ると、エージェントがこれらのツールで任意のコードを、Web サーバーのコンテナ内で root 権限で実行してしまいます。同梱のデータベースが既定の認証情報のままなら、そこにも到達できます。
攻撃の流れ
-
1
到達できる
ネットワーク上で DB-GPT の Web サーバーに接続できる相手が対象で、事前のログインは要りません。
-
2
認証を素通り
仮の認証処理がすべての呼び出し元に管理者の役割を与えるため、本来必要な確認が行われません。
-
3
エージェントを悪用
ReAct エージェントに指示を送り、隔離されていないコード実行ツールを動かさせます。
-
4
root で実行
Web サーバーのコンテナ内で、Python や bash が root 権限で実行されます。
-
5
データへ到達
既定の認証情報のままのデータベースに、コンテナ内から接続されるおそれがあります。
どう悪用されるか
悪用に必要なのは、DB-GPT の Web サーバーにネットワークで到達できることだけです。認証は不要で、利用者に何かを操作させる必要もなく、CVSS の評価でも攻撃の難易度は低いとされています。
悪用されると、コンテナ内で root 権限のコードを実行され、保存されたデータの閲覧、改ざん、削除ができてしまいます。コンテナ内に置かれた API キーや接続情報なども読み取られるおそれがあります。同梱のデータベースの認証情報が既定のままなら、そのデータベースも影響を受けます。社内のほかのシステムへ足がかりにされる可能性もありますが、実際の被害の有無や範囲は、現時点で明らかになっていません。
実際の攻撃での悪用が確認されたという公表は、現時点では見当たりません。ただし、問題のコード位置を示す情報が公開されており、条件が単純なため、対応を遅らせる理由にはなりません。
今すぐやること
-
1
DB-GPT の稼働場所を洗い出す
本番環境だけでなく、検証用や個人が立てたサーバーも含めて、DB-GPT を動かしている場所と版を一覧にします。コンテナ環境では、起動中のコンテナとイメージ、公開ポートを確認します。
docker ps --format '{{.Names}}\t{{.Image}}\t{{.Ports}}' -
2
ネットワークからの到達を止める
インターネットや広い社内ネットワークに公開している場合は、ファイアウォールやセキュリティグループで、利用者が限られた管理用ネットワークだけに絞ります。修正版が確認できるまでは、使わない環境を停止することも検討してください。
-
3
修正版の有無を確認して更新する
修正版の版番号は公表されていません。DB-GPT のリポジトリのリリース情報と、VulnCheck などの勧告を確認し、修正版が出たら検証してから更新します。
-
4
アクセスの記録を調べる
/api/v1/chat/react-agentへの身に覚えのないアクセスや、見慣れないプロセス、ファイルの作成がないかを確認します。ログの保存先は構成によって異なるため、リバースプロキシのログも併せて見てください。docker logs <コンテナ名> 2>&1 | grep "/api/v1/chat/react-agent" -
5
同梱データベースの認証情報を変更する
既定の認証情報のまま使っている場合は、パスワードを変更し、外部から接続できないことを確認します。この対応だけでは今回の欠陥は防げないため、ほかの対策と併せて行います。
-
6
侵害の疑いがあれば秘密情報を入れ替える
不審なアクセスが見つかった場合は、コンテナ内に置かれた API キー、データベースの接続情報、各種トークンを失効させ、新しいものに交換します。環境の作り直しも検討してください。
すぐ更新できないとき
修正版を当てられない間は、DB-GPT へのアクセスを信頼できる管理用ネットワークだけに限定してください。あわせて、リバースプロキシや WAF で /api/v1/chat/react-agent へのリクエストを遮断します。ただし、同じ仮の認証処理がほかの入口でも使われているかは明らかになっていません。そのため、パスの遮断だけに頼らず、ネットワーク全体での制限を優先してください。
背景
DB-GPT は、大規模言語モデル(LLM)を使ってデータベースの問い合わせや分析を自然言語で行えるようにするオープンソースの基盤です。社内のデータ分析や、AI エージェントによる業務の自動化に使われます。そのため、データベースの接続情報や API キーなど、重要な情報が同じ環境に集まりやすい製品です。
AI エージェントがコードやコマンドを実行できる機能は、便利な反面、入口の認証や実行環境の隔離が弱いと、そのまま遠隔操作の入口になります。認証が必要な機能に認証がない弱点は CWE-306 として知られ、さまざまな製品で繰り返し問題になってきました。開発用の仮実装が、本番向けの版に残ったまま公開される例もその一つです。AI 関連の OSS を試験導入するときも、通常の業務システムと同じように、公開範囲の確認と更新の管理が欠かせません。
よくある質問
Q.社内ネットワークだけで使っていれば安全ですか。
Q.すでに悪用されていますか。
Q.認証の設定を有効にすれば防げますか。
まだ分かっていないこと
- 修正版の版番号と公開時期は公表されていません。
- 同じ仮の認証処理が、ほかのエンドポイントでも使われているかは明らかになっていません。
- 実際の攻撃での悪用の有無や被害の規模は、現時点で明らかになっていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
DB-GPT through 0.8.2 contains an unauthenticated remote code execution vulnerability because the /api/v1/chat/react-agent endpoint relies on a mock get_user_from_headers function that grants every caller the admin role. Unauthenticated attackers can send prompts that make the ReAct agent's unsandboxed code_interpreter and shell_interpreter tools run arbitrary Python or bash as root in the webserver container, including reaching the bundled database with default credentials.
出典: NIST National Vulnerability Database NVD GitHub Advisory
参照URL
- web github.com
- web github.com
- web lasso.security
- web vulncheck.com
- web nvd.nist.gov
- web github.com