プロバイダから、脆弱性のあるコードが見受けられるので、対処するようにと連絡が来た。問題なのは、timthumb.php。少し調べてみたのでその覚え書き。
WordPressの画像サイズ変更ユーティリティ「timthumb.php」には2011年8月に発見された脆弱性が存在する。この脆弱性は、リモートからtimthumbのキャッシュディレクトリに任意のPHPコードをアップロードし、実行できてしまうというもの。
timthumb.phpは非常に便利なユーティリティコードなので、Wordpressのテーマやプラグインに広く使われている。そのため、被害が拡大しつつある。脆弱性が発見された当初は、timthumb.phpの作者のサイトもやられている。
【脆弱性に関するレポート】
(ニュースリリースなど(英語))
- Zero-day Vulnerability Found in a WordPress Image Utility
- August 04, 2011 – Current Activity August 3 WordPress Themes Vulnerability(http://www.us-cert.gov/current/archive/2011/08/04/archive.html#wordpress_themes_vulnerability)
- timthumb.phpの作者(Mark Maunder)のブログページ
- Zero Day Vulnerability in many WordPress Themes(ver1.33での対処方法)
- Technical details and scripts of the WordPress Timthumb.php hack(修正済みのバージョン、2.0リリース)
- A secure rewrite of timthumb.php as WordThumb(修正済みのバージョン、2.0の改造ポイント説明)
- Two techniques to scan your WordPress installation and check if you’re hacked.(ハッキングされている場合のハックファイルの探し方)
(ニュースリーリースなど(日本語))
【対応方法】
何通りかの方法がでている。
この脆弱性は、基本的にゼロデイ攻撃で行われるので、対処してしまえば問題なし。対処前にすでに攻撃されてしまっている場合(バックドアとか仕掛けられている)は、対処しても手遅れ。
- timthumb.phpが「現在使用していないテーマ」や「現在使用していないプラグイン」に含まれる場合:該当テーマやプラグインを削除する。
- timthumb.phpを利用しているテーマの配布元が、 脆弱性に対応したバージョンを提供している場合:該当テーマの最新版へのアップデートをおこなう。
- 上記に該当しない場合や個別対応を行う場合:専用のプラグイン(timthumb vulnerability scanner)を用いてTimThumbスクリプトの設置状況確認および最新化をおこなう。または、timthumb.php自体を書き直す。
(3)の場合の手順
基本は、Wordpressのプラグインであるtimthumb vulnerability scannerを使って、自分のサイト内にあるtimthumb.phpを探し、安全版(修正済み版)にアップデートする。
アップデートなどができない場合、あるいは書き直す場合は以下の通り。
(古いヴァージョン(ver1.33)を書き直す場合)
*脆弱性が発見されて直ぐ発表された方法。当時の最新版である1.33用の修正方法。修正版が出る前の方法。
- 自分のディレクトリ内のtimthumb.phpを探す
- テキストエディタでを開く
- 27行目の $allowedSites = array ( の文を見つける
- ( )内に記述されているサイトのドメイン名を全部削除し $allowedSites = array(); に変更する
- 次行の28行目が空白行で、29行目が STOP MODIFYING HERE となっているはずなので、保存して終了
(現在の一般的な方法)
問題が発覚してまもなく修正済みのバージョンが出た。これが2.0。従って、古いヴァージョンのtimthumb.phpを使っている人は、2.0にヴァージョンアップするようにアナウンスされている。
- TimThumb users and WordPress Theme users using TimThumb, please upgrade
- Vulnerability Found in timthumb.php
その上で、外部サイトの画像を引用して使わない人は、ソーススクリプトの中の下記のところを書き直すように、2.0が発表された当時はアナウンスされた。
これにより、外部サイトからの画像読み込みはできなくなる。その機能が必要な人は、別のphpをつかうという選択肢もあるが、最新版のtimthumb.phpでは解決しているかも?(2012.3.16時点でver 2.8.10までアップグレードしている)(プラグインであるtimthumb vulnerability scannerでは、ver2.8.2〜2.8.5が安全が確認された版であるとしている(2012.3.16時点))。
(timthumb.phpの中のコードを修正する方法;外部サーバーからの引用機能をオフにする)
(1)ALLOW_EXTERNAL True から false へ書き直す
[php]
define( ‘ALLOW_EXTERNAL’, true );
[/php]
↓ 書き直す
[php]
define( ‘ALLOW_EXTERNAL’, false );
[/php]
(2)外部サーバーのリストを空にする。
[php]
$allowedSites = array (
‘flickr.com’,
‘picasa.com’,
‘img.youtube.com’,
‘upload.wikimedia.org’,
);
[/php]
↓ 書き直す
[php]
$allowedSites = array();
[/php]
「timthumb.phpの脆弱性について」への1件のフィードバック
コメントは停止中です。