Joomla拡張Gridboxに認証不要のSQLインジェクション、修正版あり
Joomla用の拡張機能Gridboxに、ログインなしでデータベースを不正に操作されるおそれのある脆弱性が見つかりました。Gridboxを入れたJoomlaサイト、とくにストア機能を公開している組織が対象です。版を確認し、2.20.4.2より前なら修正版へ更新してください。
急ぎ度: 早めに
CVSS v4は9.3で認証なしにネットワーク越しで悪用できる条件ですが、実際の悪用は確認されておらず、修正版がすでに出ています。
関係があるか
Joomlaにbalbooa.comのGridboxを入れ、インターネットに公開している組織が対象です。ストアの商品一覧ページがある通販サイトは、優先して確認してください。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| Gridbox extension for Joomla(balbooa.com) | 2.20.4.2より前の版 | 2.20.4.2 |
確かめ方
- 1Joomlaの管理画面で「システム」から拡張機能の管理を開き、Gridboxの版を確認します。2.20.4.2より前なら対象です。
- 2複数サイトを運用している場合は、サイトごとにGridboxの導入有無と版を一覧にします。ステージング環境や、使っていない古いサイトも含めてください。
- 3ストア機能(商品一覧ページ)を公開しているかも、あわせて確認します。
何が起きたか
Joomlaの拡張機能Gridboxに、SQLインジェクションの脆弱性があります。ログインしていない第三者が、サイトのデータベースに対する問い合わせを不正に書き換えられるおそれがあります。
原因は、ストアの商品一覧ページで商品を並び替える処理です。URLで受け取った並び替えの指定値が、文字列フィルターを通っただけで、GridboxHelper::getBlogPosts()に渡されます。指定値が既知の並び替えキーに当てはまらない場合は、テーブルの別名を前に付けてそのままORDER BY句に組み込まれ、許可リストとの照合はありません。
分類はCWE-89で、GitHubのアドバイザリではGHSA-hqjq-crc6-5fp3として公開されています。公表日は2026年10月27日です。
攻撃の流れ
-
1
対象を見つける
Gridboxのストアを公開しているJoomlaサイトを、外部から探します。
-
2
商品一覧へ送信
商品一覧ページの並び替え指定に、細工した値を入れたリクエストを送ります。
-
3
検証なしで反映
値が許可リストで確認されないまま、データベースへの問い合わせに組み込まれます。
-
4
データを操作
データベースの内容を読まれたり、書き換えられたりするおそれがあります。
どう悪用されるか
悪用にログインは不要です。ネットワーク越しに商品一覧ページへアクセスできれば足り、管理者や利用者に操作させる必要もありません。攻撃の難易度は低く、特別な前提条件は見当たりません。
想定される被害は、データベースに保存された情報の漏えい、内容の改ざん、サービスの停止です。ストアを運用していれば、会員情報や注文情報が保存されていることが多く、影響が大きくなりやすいでしょう。一方、データベースの外にあるほかのシステムへの直接の波及は、評価では想定されていません。
今すぐやること
-
1
Gridboxの版を確認する
管理画面で、対象サイトのGridboxが2.20.4.2より前かどうかを確かめます。公開サイトを先に、検証用のサイトはあとに回して構いません。
-
2
修正版に更新する
ベンダーのbalbooa.comの案内に従い、Gridboxを2.20.4.2に更新します。更新の前にファイルとデータベースのバックアップを取ってください。
-
3
更新後に動作を確認する
商品一覧ページの表示と、並び替えの動作を確かめます。表示が崩れていないか、エラーが出ていないかも見ます。
-
4
公開から更新までのログを見る
更新前の期間について、商品一覧ページへのアクセスログに、並び替え指定の不自然な値やエラーの多発がないかを確認します。データベースのエラーログも合わせて見ると、異常に気づきやすくなります。
-
5
不審な点があれば認証情報を見直す
不審な形跡が見つかった場合は、管理者アカウントのパスワードを変更し、データベースの接続情報も見直します。ユーザーテーブルに、身に覚えのない変更がないかも確認してください。
すぐ更新できないとき
すぐに更新できない場合は、WAFで商品一覧ページへのリクエストを検査し、並び替えを指定するURLパラメーターに想定外の値が入ったものを遮断します。これは暫定の対策にすぎず、すべての細工を防げる保証はありません。ストアが止められるなら、更新が済むまで商品一覧ページを非公開にする方法もあります。ベンダーが案内する公式の回避策は確認できていません。
背景
Gridboxは、balbooa.comが提供するJoomla用の拡張機能です。ページの作成やブログに加え、ストア機能も備えており、商品一覧のように外部へ公開するページの表示にデータベースへの問い合わせが使われます。公開サイトの表側にあるため、外部から直接リクエストを受けやすい位置にあります。
今回の問題は、並び替えの指定がORDER BY句に入る点が特徴です。値を入れる位置を決めておくプレースホルダーは、検索条件の値には使えますが、列名や並び順のような構文の一部には使えません。そのため、この種の箇所では、受け取った値を許可リストと照合する実装が欠かせません。原因は、その照合が抜けていたことにあります。
よくある質問
Q.ストア機能を使っていなければ、更新しなくてもよいですか。
Q.更新したあと、侵害されていないかも調べる必要はありますか。
まだ分かっていないこと
- 実際の悪用や、攻撃手法の公開の有無は分かっていません。ベンダーのbalbooa.comの告知と、GitHubのアドバイザリで続報を確認してください。
- 商品一覧ページ以外の経路が影響を受けるか、また2.20.4.2より前のどの版から影響があるかは、示されていません。
- 更新できない場合にベンダーが案内する、公式の回避策は確認できていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| balbooa.com | Gridbox extension for Joomla | — | — |
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Joomla Extension - balbooa.com - Unauthenticated SQL injection in Gridbox < 2.20.4.2 - On store product list pages, the value of the sort-by URL parameter is retrieved using a string filter and passed directly to GridboxHelper::getBlogPosts(). When the parameter does not match known sorting keys, it is prefixed with a table alias and inserted into the ORDER BY clause without checking against an allowlist
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web security@joomla.org
- web nvd.nist.gov
- web github.com