Chartbrewの脆弱性3件、修正版5.2.3が公開
Chartbrewに、公開チャートへのSQLインジェクション、既定の秘密鍵によるなりすまし、キュー管理画面の認証欠如の3件が公表されました。5.2.3以降に更新し、CB_SECRETの値と/apps/queuesの公開状況も確認してください。
同じ発表の脆弱性 4 件
- CVE-2026-54349 重大 9.8
- CVE-2026-85295 重大 9.8
- CVE-2026-86005 重大 9.3
- CVE-2026-68935 重大 9.1
急ぎ度: 至急
3件ともseverityはcriticalで、CVSSはv3が9.8を2件、v4が9.3を1件と高く、SQLインジェクションは勧告に再現手順も載っていますが、修正版5.2.3が出ているため至急で更新する価値があります。
関係があるか
Chartbrewを自社で動かしている組織が対象です。とくに、共有・埋め込みチャートを公開している環境、リポジトリ付属のDocker Composeなどで初期値のCB_SECRETのまま動かしている環境、/apps/queuesが外部から届く環境は、先に確認してください。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Chartbrew | 5.2.1未満(5.2.0以前)。3件すべてが対象 | 5.2.3以降で3件とも修正(SQLインジェクションは5.2.1で修正済み) |
| Chartbrew | 5.2.1以上5.2.3未満。CB_SECRETの件とBullMQ管理画面の件が対象 | 5.2.3 |
確かめ方
- 1Chartbrewの版を確認し、5.2.3未満であれば対象として扱います。
- 2共有・埋め込み(公開)チャートがあり、そのSQLクエリにURL由来の変数を使っていないか、管理画面で確認します。
- 3CB_SECRETが初期値・既知の値・短い値のままになっていないかを、.envやDocker Composeの設定で確認します。リポジトリ付属のDocker Composeをそのまま使っていれば該当し得ます。CB_SECRETを定義していない素のコンテナは、この件の対象外です。
- 4RedisとBullMQを有効にしているかを確認し、有効なら自社ネットワークの外から/apps/queuesに届くかを、リバースプロキシ越しに試します。
何が起きたか
Chartbrewは、データベースやAPIに直接つないでチャートを作るオープンソースのWebアプリケーションです。この製品に、外部から届く入口の入力処理と認証に関わる脆弱性が3件あり、2026年11月6日に公表されました。悪用されると、接続先データベースの読み取り・改ざん・削除、任意のユーザーへのなりすまし、ジョブキュー管理画面の閲覧と操作が起こり得ます。
- CVE-2026-54349: 公開・埋め込みチャートのSQL変数置換でSQLインジェクションが起き、接続先データベースのデータを読み書き・削除される(CVSS v3は9.8)
- CVE-2026-85295: 既知・脆弱・初期値のCB_SECRETで署名されたセッショントークンが受け入れられ、任意のユーザーになりすまされる(CVSS v3は9.8)
- CVE-2026-86005: BullMQの管理画面/apps/queuesが認証なしで開き、ジョブの内容やログの閲覧、キュー操作をされる(CVSS v4は9.3)
SQLインジェクションの原因は2つです。1つは、利用者の値をSQLに埋め込む置換処理で、置換文字列の特殊な記号の並びが展開され、DBの種類を問わずSQLが書き換わることです。もう1つは、MySQLとMariaDBでバックスラッシュが無害化されないことです。CWEは順にCWE-89、CWE-1394、CWE-306です。
SQLインジェクションについては、勧告に再現手順が掲載されています。
攻撃の流れ
-
1
入口に到達
外部から、公開チャートのURLや/apps/queuesなど、認証を通らない入口に届く。
-
2
入力や鍵を悪用
URLの値でSQLを書き換えるか、既知のCB_SECRETで署名したトークンを送る。管理画面はそのまま開く。
-
3
権限を獲得
DBアカウントの権限でSQLが実行される、またはほかのユーザーとして扱われる。
-
4
データ・処理に被害
データの読み取り・改ざん・削除、なりすました操作、ジョブの閲覧や改変につながる。
どう悪用されるか
3件の悪用条件は、それぞれ次のように異なります。
CVE-2026-54349は、ログインが不要で、ネットワーク越しに攻撃できます。公開または埋め込みのチャートが、SQLクエリの中でURLから渡される変数を使っている場合が対象です。細工したフィルター値をURLで送るだけで、利用者の操作は要りません。バックスラッシュの経路だけはMySQLとMariaDBに限られます。置換処理の経路は、DBの種類を問いません。被害は、設定されたデータベースアカウントが扱えるデータの読み取り・改ざん・削除です。
CVE-2026-85295は、リポジトリ付属のDocker Composeなどで、既知・脆弱・初期値のCB_SECRETが残っている構成が対象です。攻撃者は、狙うユーザーのIDを含むHS256のトークンを偽造して送ります。パスワードも二要素認証も不要で、そのユーザーとしてAPIとソケットの全体を操作されます。権限はそのユーザーの権限と同じです。
CVE-2026-86005は、RedisとBullMQが有効で、/apps/queuesにリバースプロキシなどの遮断がなく届く構成が対象です。認証なしで管理画面が開きます。ジョブの内容とログを読まれるほか、Bull Boardの版とキューの状態によっては、ジョブの再実行や削除などで処理を乱されます。
今すぐやること
-
1
運用中の版を確認する
5.2.3未満なら3件とも対象になり得ます。ソースをgitで取得して運用している場合は、次のコマンドでタグを確認できます。Docker Composeの場合は、使っているイメージのタグを確認してください。
git describe --tags -
2
5.2.3以降に更新する
5.2.3で3件とも解消します。更新後は、公開チャートとログインの動作を確認してください。実際の攻撃での悪用状況や5.2.3の変更点の詳細は、Chartbrewのリリースと勧告の案内で確認してください。
-
3
CB_SECRETを自社専用の長い値にする
初期値や使い回しの値のままなら、推測されにくい長いランダム値に変えます。変更の影響で既存のセッションが切れる可能性があるため、利用者に告知してから実施してください。
-
4
/apps/queuesを外部から遮断する
リバースプロキシやファイアウォールで、自社ネットワークの外から届かないようにします。更新後も、管理画面は社内からだけ見えるようにしておくと安全です。
-
5
侵害の跡を調べる
更新前に公開していたなら、Webサーバーのログで、共有・埋め込みチャートへのリクエストに通常と違う記号列がないかを確認します。あわせて、CB_SECRETが初期値だった期間のログイン履歴と操作履歴に身に覚えのないものがないか、接続先データベースの監査ログに不審なクエリがないかを見ます。
すぐ更新できないとき
すぐに更新できないときのつなぎです。Chartbrewが公式の回避策として案内しているわけではなく、更新までの暫定の対策になります。共有・埋め込みチャートのうち、SQLクエリにURL変数を使うものを非公開にします。CB_SECRETを自社専用の長い値に変えます。/apps/queuesをリバースプロキシで遮断します。いずれも更新の代わりにはなりません。
背景
Chartbrewは、データベースやAPIにつないで、ダッシュボードとチャートを作る製品です。勧告も、分析用に本番データベースへつなぐ前提の製品なので影響が大きくなり得ると述べています。共有・埋め込み用のチャートのURLは、ログインなしで見られるように作られており、今回のSQLインジェクションはまさにこの入口にあります。
SQL変数の処理は今回が初めてではありません。勧告によると、ダッシュボード変数の日付パラメーターに起きた過去のSQLインジェクション(CVE-2026-27005、4.8.3で修正)への対策として、引用符を二重にして無害化する処理が入っていました。今回は、その対策の置換処理と、バックスラッシュの扱いに抜けがあったことが原因です。ほかの2件は、既知・初期値のCB_SECRETでも署名を受け入れる旧来の検証と、ネットワークに届けば使えるものとして管理画面が公開されていた点が原因です。
よくある質問
Q.接続先データベースのアカウントは、どう見直せばよいですか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Chartbrew is an open-source web application that can connect directly to databases and APIs and use the data to create charts. Prior to 5.2.1, SQL dashboard-variable substitution used attacker-controlled JavaScript replacement strings unsafely across SQL connectors and separately failed to escape backslashes for MySQL and MariaDB quoted contexts. The vulnerable surface is public and embedded dashboard/chart requests that call applyMysqlOrPostgresVariables. An unauthenticated user sends crafted URL filter values to a public or embedded chart backed by a stored SQL query. Replacement-string dollar sequences can alter SQL independently of the database engine, while MySQL and MariaDB backslash handling provides a second quoted-string escape path. The target must expose a public or embedded chart using URL-controlled variables in a SQL query; only the backslash branch is specific to MySQL and MariaDB. Injected SQL can read, modify, or delete data available to the configured database account. This issue is fixed in version 5.2.1.
出典: CVE.org (CVE Program・cvelistV5) NVD
参照URL
- web github.com
- web github.com
- web github.com