本文へ移動
English version →
重大 9.8 急ぎ度: 至急

DB-GPTの既定設定でMySQLが無防備に、修正版は未公表

DB-GPT 0.8.2 までの既定の docker-compose.yml は、MySQL の root パスワードを固定値にしたまま、3306 番ポートをすべてのネットワークインターフェースに公開します。到達できる相手は認証なしの手間だけで root として入れるため、既定の構成で動かしている組織は影響を受けます。まず 3306 番が外部から届かない状態かを確かめ、パスワードの変更と接続元の制限を行ってください。

CVE-2026-77933 公開 生成 AI で作成
画像は生成 AI で作成したイメージです

急ぎ度: 至急

認証も利用者の操作も不要でネットワークから root 権限を得られ(CVSS 9.8)、固定パスワードが公開リポジトリの設定ファイルに書かれているため、3306 番に届く環境では待つ理由がありません。

関係があるか

DB-GPT 0.8.2 までの既定の docker-compose.yml を使って Docker 上に構築した環境が対象です。特に、3306 番ポートが社外やインターネット、または広い社内ネットワークから届く状態の環境が危険です。

製品影響を受ける版直った版
DB-GPT(既定の docker-compose.yml による構成) 0.8.2 までの版 修正版の有無や版番号は公表されていません。ベンダーの告知で確認してください。

確かめ方

  1. 1DB-GPT を docker-compose.yml でそのまま起動していないか、構築担当者に確認します。起動していれば対象の可能性があります。
  2. 2使っている docker-compose.yml に MYSQL_ROOT_PASSWORD の固定値と、3306 番ポートの公開設定(3306:3306 など)が残っていないか調べます。
  3. 3稼働中のコンテナで、3306 番がホストに公開されているか確認します。0.0.0.0:3306 と表示されれば、すべてのインターフェースで待ち受けています。
  4. 4ファイアウォールやクラウドのセキュリティグループで、3306 番に届く範囲を確認します。社外や無関係な社内セグメントから届くなら、すぐ遮断の対象です。

何が起きたか

DB-GPT の公式が配布する既定の docker-compose.yml に、MySQL の管理者(root)パスワードが固定値で書かれていることが分かりました。しかも、MySQL の待ち受けポートである 3306 番が、サーバーのすべてのネットワークインターフェースに公開される設定です。設定ファイルは公開リポジトリで誰でも読めるため、パスワードは事実上、誰でも知り得ます。この組み合わせにより、3306 番に届く相手は誰でも、管理者としてデータベースに入れてしまいます。

これは製品のプログラムの欠陥というより、既定の構成に起因する弱点です。分類は CWE-1392(既定の認証情報の使用)で、CVSS v3.1 は 9.8(重大)です。攻撃に必要な条件は、ネットワークから届くことだけです。

入れる相手は root@%、つまり任意の接続元からの root としてログインできます。この権限には FILE と SUPER が含まれます。FILE はデータベースサーバー上のファイル読み書きに関わる権限で、SUPER は管理用の強い操作に関わる権限です。データの閲覧や改ざんにとどまらず、サーバー自体への影響も考える必要があります。また、同じ dbgptnet ネットワークに参加する他のコンテナからも、同じ手段で入れる点に注意してください。

攻撃の流れ

  1. 1

    既定構成で起動

    既定の docker-compose.yml のまま DB-GPT を起動し、MySQL の 3306 番がすべてのインターフェースに公開されます。

  2. 2

    ポートに到達

    外部や社内の別端末、同じ dbgptnet 上のコンテナが 3306 番に届きます。

  3. 3

    固定パスワード

    公開されている固定の root パスワードで、認証を通過します。

  4. 4

    管理者権限を取得

    FILE や SUPER を含む root 権限で、データベースを完全に操作できる状態になります。

公開されている情報をもとにした流れの例です。

どう悪用されるか

悪用に必要な条件は、3306 番ポートまたは dbgptnet ネットワークに届くことだけです。事前のログインも、利用者に何かを操作させる必要もありません。攻撃の難易度は低く、固定パスワードが公開されているので、特別な技術がなくても成立する性質の弱点です。

成功した場合、DB-GPT が扱うデータベース内の情報の閲覧、改ざん、削除が可能になります。FILE と SUPER 権限があるため、データベースサーバー上のファイルや管理操作にも影響が及ぶ恐れがあります。DB-GPT に接続している他のデータ源の情報が MySQL 内に保存されている場合、その二次的な漏えいも考える必要があります。なお、実際の攻撃で悪用された事例があるかどうかは、現時点で明らかになっていません。

今すぐやること

  1. 1

    3306 番を外部に公開しない

    ファイアウォールやセキュリティグループで、3306 番への接続を必要な端末だけに絞ります。インターネットから届く状態なら、最優先で遮断してください。Docker の設定では、公開先を 127.0.0.1:3306:3306 のようにホスト内に限定するか、不要なら公開自体をやめます。

    docker ps --format "table {{.Names}}\t{{.Ports}}"
  2. 2

    設定ファイルの該当箇所を確認する

    使っている docker-compose.yml に、固定の root パスワードとポート公開の記述が残っていないか調べます。

    grep -n -E "MYSQL_ROOT_PASSWORD|3306" docker-compose.yml
  3. 3

    root パスワードを強いものに変更する

    推測されにくい長いパスワードに変えます。値は設定ファイルに直書きせず、環境変数ファイルやシークレット管理の仕組みから渡してください。既にデータが保存されている環境では、設定ファイルを書き換えて再起動するだけではパスワードが変わらない場合があります。MySQL 側でも変更が必要です。

  4. 4

    不審なアクセスの痕跡を調べる

    3306 番が公開されていた期間があるなら、MySQL の接続ログやアカウント一覧、不審なデータ変更がないかを確認します。不審な形跡があれば、パスワード変更に加えて、データの漏えいを前提とした対応を検討します。

  5. 5

    ベンダーの告知で修正状況を確認する

    修正版や公式の対処方針が出ていないか、DB-GPT のリポジトリと、記載の参考情報を定期的に確認してください。

すぐ更新できないとき

修正版の情報がないため、設定による対処が中心になります。次のとおり対応してください。
- 3306 番の公開をやめるか、127.0.0.1 のみに限定する
- ファイアウォールで 3306 番への接続元を最小限に絞る
- root パスワードを推測されにくい値に変更し、既存データがある場合は MySQL 側でも変更する
- 同じ dbgptnet ネットワークに、関係のないコンテナを参加させない

背景

DB-GPT は、大規模言語モデルを使ってデータベースとやり取りするためのオープンソースのプロジェクトです。社内ではデータ分析や問い合わせの自動化に使われることがあり、その裏側では MySQL などのデータベースが、設定や会話の情報、場合によっては業務データを保持します。そのため、データベースが無防備だと、アプリケーションの手前の防御をすべて迂回されてしまいます。

配布物の設定例やサンプル構成に初期パスワードが書かれ、それが本番にそのまま使われてしまう問題は、データベースやコンテナ製品でこれまでも繰り返されてきました。データベースのポートがインターネットに公開された状態は、攻撃者が日常的に探している典型的な隙でもあります。試験用に作った環境が、そのまま公開されたまま残る例も珍しくありません。

よくある質問

Q.DB-GPT を使っていますが、自社の環境は対象ですか。
A.0.8.2 までの既定の docker-compose.yml を使って構築していれば、対象の可能性があります。パスワードを変更し、3306 番を公開していなければ、影響は小さくなります。設定ファイルと稼働中のコンテナのポート公開状況を確認してください。
Q.社内ネットワークだけで使っているので安全ですか。
A.インターネットから届かなければ危険度は下がりますが、安全とは言えません。社内の他の端末や、同じ dbgptnet 上の他のコンテナからも入れてしまいます。接続元を必要な範囲に絞ってください。
Q.バージョンを上げれば解決しますか。
A.修正版の有無や版番号は公表されていません。版を上げる前に、設定ファイルの固定パスワードとポート公開の記述が改善されているか、ベンダーの告知や設定内容そのもので確認してください。当面は、パスワード変更と接続元の制限が有効な対策です。

まだ分かっていないこと

  • この弱点を解消した修正版があるかどうか、あればどの版かは公表されていません。
  • 実際の攻撃で悪用された事例があるかどうかは、現時点で明らかになっていません。
  • 0.8.2 より前のどの版から影響があるかは公表されていません。

この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。

原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

DB-GPT through 0.8.2 contains a hardcoded credentials vulnerability in its default docker-compose.yml that sets a static MYSQL_ROOT_PASSWORD and publishes port 3306 on all interfaces. Attackers reaching port 3306 or the shared dbgptnet network can authenticate as root@% to gain full database access including FILE and SUPER privileges.

出典: NIST National Vulnerability Database NVD GitHub Advisory

参照URL

当サイトでは、アクセス解析と広告の効果測定のために Cookie を使います。株式会社Game のサイト共通の設定です。 詳しく