Custom Tablesに任意ファイル書き込み、修正版あり
Joomla用拡張機能Custom Tablesの3.7.8未満に、ログインなしでファイルを置かれる脆弱性があります。公開の投稿フォームがあるサイトは3.7.8以降へ更新し、tmpディレクトリに見覚えのないファイルがないか確認してください。
急ぎ度: 早めに
CVSS v4は9.5で認証も不要ですが、KEVへの掲載はなく、修正版が出ているため、公開フォームがあるサイトは当日中、ないサイトも今週中の更新が妥当です。
関係があるか
Joomlaで、Custom Tablesの公開投稿フォームをログインなしで使える状態にしているサイトが対象です。フォームを公開していない場合は、この経路では狙われにくいと考えられます。
| 製品 | 影響を受ける版 | 修正版 |
|---|---|---|
| Custom Tables extension for Joomla(joomlaboat.com) | 3.7.8未満 | 3.7.8(以降の版) |
確かめ方
- 1Joomlaの管理画面で、拡張機能の管理からCustom Tablesの版を確認し、3.7.8未満かどうかを調べる。
- 2ログインせずに開ける、Custom Tablesの投稿フォームがサイト上にあるかを確認する。会員向けでも、登録が誰にでもできるなら公開と同じに扱う。
- 3ベンダー(joomlaboat.com)の告知で、影響する版の範囲と修正版の番号を確認する。
何が起きたか
Custom Tablesの公開投稿フォームから、ログインしていない第三者が任意のファイルをアップロードできる脆弱性です。ファイルはWebから見られるtmpディレクトリに置かれ、保存先のパスも応答の中で返されます。
アップロードされるファイルは、攻撃者が拡張子を決められます。複数の形式として読めるように作られたファイル(polyglot)が使われる想定です。既定の設定では、置かれたファイルは静的コンテンツとして配信されます。
このため主な影響は、Webから見える場所への任意ファイル書き込みです。サイトの持ち主のドメインの下に、攻撃者が用意した内容が置かれます。
攻撃の流れ
-
1
公開フォームを探す
Custom Tablesの投稿フォームを公開しているJoomlaサイトを見つける。
-
2
細工したファイルを送る
ログインなしで、拡張子を指定した細工済みファイルをフォームから送る。
-
3
tmpに保存される
ファイルがWebから見えるtmpディレクトリに置かれ、保存先のパスが応答で返る。
-
4
自社ドメインで配信
返されたパスのURLから、攻撃者のコンテンツが自社ドメインの下で配信される。
どう悪用されるか
ログインは要りません。ネットワーク越しに、公開されている投稿フォームへ送信できれば足り、利用者の操作も不要です。前提になるのは、Custom Tablesの公開投稿フォームがサイトにあることです。この前提があるため、CVSS v4の攻撃要件は「あり」と評価されています。
被害として説明されているのは、自社ドメイン上でのフィッシングページやマルウェア配布ページの設置です。見た目は正規サイトのURLなので、閲覧者は疑いにくく、サイトの信用や検索・ブラウザーでの評価にも傷がつきます。
CVSS v4では機密性・完全性・可用性とも高く評価されています。ただし、置かれたファイルがサーバー側で実行されるかどうかは、サーバーの設定しだいです。既定では静的配信とされているので、実行まで進むかどうかはベンダーの告知で確認してください。
今すぐやること
-
1
Custom Tablesを修正版に更新する
3.7.8以降へ更新します。本番に当てる前にテスト環境で投稿フォームの動作を確認し、更新後も版が上がっていることを管理画面で確かめます。
-
2
tmpディレクトリのファイルを点検する
公開の投稿フォームがあったサイトでは、tmpに見覚えのないファイルがないかを調べます。次の例は、直近30日に更新されたファイルの一覧です。パスは自サイトのものに置き換えてください。
find /path/to/joomla/tmp -type f -mtime -30 -
3
不審なファイルがあれば証拠を残して対処する
更新前にアップロードされたファイルは、更新で消えるとは限りません。見つけたら、削除の前にファイル名と更新日時、アクセスログを控えます。そのうえで外部から読めない状態にします。アップロード元と、そのファイルへのアクセスがなかったかもログで確認します。
-
4
ベンダーの告知を確認する
joomlaboat.comの告知で、影響する版の範囲、修正版の番号、更新後に確認すべき点を読みます。
すぐ更新できないとき
すぐに更新できない場合は、Custom Tablesの公開投稿フォームを一時的に非公開にするか、ログインした利用者だけが使える設定にします。あわせて、tmpディレクトリからファイルが配信されないよう、Webサーバー側で制限をかけておくと被害を抑えられます。いずれも修正版への更新までのつなぎです。
背景
Custom Tablesは、Joomla上に独自のデータ表を作り、一覧や入力フォームとして表示するための拡張機能です。会員の登録、問い合わせ、投稿の受付などをCMSの標準機能の外で組み立てたいサイトで使われます。今回の脆弱性は、こうした訪問者からデータを受け取る公開フォームが入口になる点に特徴があります。
分類はCWE-434で、種類や拡張子を十分に制限しないファイルアップロードにあたります。今回の説明では、攻撃者が拡張子を決められること、保存先のパスが応答で返ることが組み合わさっています。置いた側が自分でURLを知れるので、設置から配信までが一度の操作で済みます。
よくある質問
Q.更新したあと、すでに置かれたファイルはどうなりますか。
この記事は、取得元の公開情報をもとに、人が監修しながらAIを活用して執筆しています。執筆と監修は佐々木 航が担い、公開したあとも人が内容を確認しています。誤りに気づいたときは直し、記事の末尾に訂正の行を残します。対応を決める前に、下の原文と参照先も確認してください。
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
Joomla Extension - joomlaboat.com - Unauthenticated arbitrary file upload in Custom Tables < 3.7.8 - An unauthenticated attacker can upload a polyglot file with an attacker-controlled extension to the web-accessible tmp directory of any Joomla site that exposes a public Custom Tables submission form, and the stored path is disclosed in the response. By default the uploaded file is served as static content, so the primary impact is an unauthenticated arbitrary file write to a web-accessible directory, which allows hosting of attacker-controlled content (for example phishing or malware pages) under the victim's domain.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- web security@joomla.org
- web nvd.nist.gov
- web github.com