本文へ移動
English version →
重大 9.8 急ぎ度: 早めに

blueprintUEのDBがパスワードなしで開く脆弱性、修正版あり

blueprintUE Self-Hosted EditionのDocker Composeサンプルどおりに構築すると、MariaDBのrootがパスワードなしでネットワークから使える状態になります。該当する環境では4.3.7へ更新し、ポート3306の公開範囲とrootのパスワードを確認してください。

CVE-2026-126812 公開 更新 執筆・監修: 佐々木 航 人が監修しながらAIを活用して執筆
画像は生成 AI で作成したイメージです

急ぎ度: 早めに

CVSS v3は9.8で認証も不要ですが、影響はComposeサンプルの設定で構築した環境に限られ、修正版4.3.7も出ているため、ポート3306に外から届く環境を先に洗い出して早めに対応する段階です。

関係があるか

blueprintUE Self-Hosted Editionを、リポジトリのdocker-examples配下にあるDocker Composeのサンプル設定をもとに自社サーバーや検証機で動かしている組織が対象です。サンプルをそのまま本番や社内共有環境に流用していると、当てはまる可能性が高くなります。

製品影響を受ける版修正版
blueprintUE Self-Hosted Edition 1.0.0以上4.3.7未満(4.3.6以前) 4.3.7

確かめ方

  1. 1稼働中のblueprintUEが、docker-examples配下のcompose設定(docker-compose-smtp.ymlなど)とdatabase.envから作られたものか、構築した担当者に確認します。
  2. 2database.envにMYSQL_ALLOW_EMPTY_PASSWORD=yesの行が残っていないか調べます。
  3. 3composeファイルのMariaDBサービスに3306:3306のポート公開があるか、docker psでホスト側に3306が出ているかを確認します。
  4. 4Dockerホストのポート3306に、社内の別セグメントやインターネット側から届くかを、ネットワーク担当と一緒に確認します。

何が起きたか

blueprintUE Self-Hosted EditionのDocker Composeサンプルには、MariaDBのrootアカウントをパスワードなしで作り、そのデータベースをホストのネットワークに公開する設定が入っています。サンプルのまま構築すると、ポート3306に届く相手が誰でもrootとしてデータベースに入れます。

原因は2か所の設定です。database.envにMYSQL_ALLOW_EMPTY_PASSWORD=yesがあり、composeファイルのMariaDBサービスが3306:3306でポートを公開しています。さらに、MariaDBの公式Dockerイメージはrootの接続元をどのホストにも許す%で作るため、リモートからの接続が通ります。CWEの分類はCWE-258(設定ファイル内の空パスワード)です。

勧告によると、報告者は別の端末から実際にパスワードなしで接続でき、全データベースへの全権限と権限付与の権限を持つrootとして認証されることを確認しています。修正版は4.3.7です。

攻撃の流れ

  1. 1

    3306が到達可能

    サンプルのcomposeがMariaDBのポートをホストに公開しているため、ホストに届く相手から3306が見えます。

  2. 2

    パスワードなし接続

    rootのパスワードが空で、接続元の制限もないため、認証を通過します。

  3. 3

    全DBの操作

    ユーザーアカウントやブループリントを含む全データベースを読み、書き換え、削除できます。

  4. 4

    権限の追加

    データベースのアカウントを作ったり、権限を付与したりして、足場を残せます。

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

どう悪用されるか

認証は要りません。Dockerホストのポート3306にネットワーク経由で届けば足り、利用者の操作も不要です。攻撃の難しさは低く、サンプルの設定が残っていれば条件はそろいます。

悪用されると、rootの権限でデータベース全体を操作されます。ユーザーアカウントやブループリントなどの保存データを読み取られ、改変や削除をされるほか、データベースのアカウントを作られたり、ほかのアカウントに管理権限を与えられたりします。勧告は、MariaDBのインスタンスとその中のデータが完全に侵害されうると説明しています。

今すぐやること

  1. 1

    ポート3306の公開状況を確認する

    まず、稼働中のコンテナがホストのどのアドレスで3306を待ち受けているかを見ます。0.0.0.0など外向きのアドレスで公開されていれば、更新を待たずに、下の回避策で公開を止めることを優先してください。

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

    database.envの設定を確認する

    空パスワードを許す行が残っていないかを調べます。ファイルはcomposeファイルと同じ場所にあります。

    grep -n "MYSQL_ALLOW_EMPTY_PASSWORD" database.env
  3. 3

    4.3.7へ更新し、サンプル設定を見直す

    blueprintUE Self-Hosted Editionを修正版の4.3.7に更新し、composeファイルとdatabase.envも新しい版の内容に合わせて作り直します。自社で手を加えた設定がある場合は、空パスワードの許可とポート公開が残っていないかを差分で確かめます。

  4. 4

    rootのパスワードを実際に設定する

    MariaDBの公式イメージは、環境変数を最初の初期化のときに使います。すでに空のパスワードで初期化したデータベースは、設定ファイルを直しただけでは空のまま残る可能性があります。更新後は、rootに強いパスワードが設定されているか、rootの接続元がローカルに限られているかをデータベース側で確認してください。

  5. 5

    公開されていた期間は侵害の跡を調べる

    3306が外から届く状態だった期間があれば、データベースに身に覚えのないアカウントや権限がないか、データの改変や削除がないかを調べます。疑わしい点があれば、アプリ側で保存している資格情報の入れ替えも検討します。

すぐ更新できないとき

更新がすぐにできないときは、composeファイルのMariaDBサービスからports: の3306:3306を削除するか、127.0.0.1にだけ割り当てて、コンテナを作り直します。アプリのコンテナが同じComposeのネットワーク内からデータベースに接続しているなら、これで動作を保ったまま外部からの到達を止められます。あわせて、ホストのファイアウォールで3306への接続元を必要な相手に絞り、rootに強いパスワードを設定してください。

背景

blueprintUE Self-Hosted Editionは、ユーザーアカウントやブループリントを保存するWebアプリで、MariaDBをデータベースとして使います。リポジトリのdocker-examples配下にあるcomposeファイルは、アプリとデータベースを1台のホストでまとめて立ち上げるための手本です。手本の設定が検証用のつもりで書かれていても、そのまま社内の共有サーバーに置かれると、データベースのポートまで一緒に公開されます。

Dockerでポートを公開すると、Dockerが自前でネットワーク規則を追加するため、ホストのファイアウォール設定をすり抜けて外から届くことがあります。ufwなどで3306を塞いだつもりの環境でも、実際に届くかどうかは外側から確認する必要があります。サンプルの設定ファイルに空パスワードが残っていた今回の事例は、運用担当者が手を入れる前の初期状態が、そのまま攻撃面になるという構図です。

よくある質問

Q.社内ネットワークだけで使っている場合も更新が必要ですか。
A.必要です。ポート3306を公開する設定と空のrootパスワードは、外部公開の有無に関係なく残っています。社内の別端末や別セグメントから届く環境なら、同じ状態になります。更新とあわせて、3306の公開範囲をホスト内に絞る見直しもしてください。
Q.アプリの利用者にパスワード変更を案内する必要はありますか。
A.不正アクセスの跡が見つかった場合は検討してください。今回の脆弱性では、データベース内のユーザーアカウント情報が読み取られうるためです。跡がなければ、更新とrootのパスワード設定を優先して進めれば足ります。

まだ分かっていないこと

  • この脆弱性を狙った実際の攻撃が確認されているかは、勧告に書かれていません。
  • 4.3.7への更新だけで、すでに空のパスワードで初期化された既存データベースのrootが保護されるかは、勧告に書かれていません。

この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。

影響パッケージ

パッケージ影響を受ける版 → 修正版
blueprintueblueprintue-self-hosted-edition
1.0.0 以上 4.3.7 未満→ 4.3.7
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。

blueprintUE Self-Hosted Edition before 4.3.7 contains an insecure default configuration in its Docker Compose examples that sets MYSQL_ALLOW_EMPTY_PASSWORD=yes in database.env and publishes MariaDB on port 3306. Unauthenticated attackers reaching the Docker host on port 3306 can log in as root without a password to read, modify, or delete user accounts, blueprints, and all databases.

出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory

参照URL

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