「ケータイキット for Movable Type」のOSコマンドインジェクションの修正
2016年4月26日(火曜日)
「ケータイキット for Movable Type」のOSコマンドインジェクションの修正
公開: 2016年4月26日11時35分頃
Movable Typeのプラグイン「ケータイキット for Movable Type」にOSコマンドインジェクションの脆弱性があったという話が出ており、J-WAVEの64万件の個人情報流出はこれが原因だったとされています。
- J-WAVEでも64万件の個人情報流出の可能性、原因ソフトの利用者は至急パッチ適用を (itpro.nikkeibp.co.jp)
- 「ケータイキット for Movable Type」にOSコマンドインジェクションの脆弱性、利用者は修正バージョンへアップデートを、すでにJ-WAVEへの攻撃で悪用 (internet.watch.impress.co.jp)
- ケータイキット for Movable Type の脆弱性についてまとめてみた (d.hatena.ne.jp)
配布元のアイデアマンズからは、4月22日にまず「緊急パッチファイル」が提供され、その後正式なアップデートが提供されました。
- [2016-04-22]緊急パッチファイルの提供を開始 (www.ideamans.com)
- [重要] ケータイキット for Movable Type 1.65 の提供を開始 (www.ideamans.com)
- 【重要】ケータイキット for Movable Typeの脆弱性をチェックする「KeitaiKit セキュリティチェック」プラグインを公開、[購入者向け]ケータイキットの脆弱性対策 特設ページを開設 (www.ideamans.com)
サイトでの情報提供のほか、登録ユーザーへのメールでの告知も行われているようです。
22日に公開された「緊急パッチファイル」の内容を見ると、plugins/keitaikit/php/KeitaiGraphic.php というファイルひとつだけであり、このファイルに問題のあったコードが含まれているらしいことが分かります。中身を見ると、KeitaiGraphic という名前の示すとおり、画像をケータイ用に変換する関連の処理が含まれているようです。
※Movable TypeはPerlで書かれており、プラグインも基本はPerlで書くのですが、ケータイキットはPerlとPHPが混ざった構成になっています。Perlで書かれたMTプラグインでHTMLにPHPのコードを吐いたりしつつ、画像変換などの処理はPHPで行っているようです。
修正の内容ですが、以下のような部分が、
$execute = "$convert $option $src $dest_temp";
exec($execute);
「緊急パッチファイル」では以下のように修正されています (この他にも同様の修正が数箇所あります)。
global $mtkk_no_exec_args_quote;
if ( $mtkk_no_exec_args_quote ) {
$execute = "$convert $option $src $dest_temp";
} else {
$execute = "$convert $option \"$src\" \"$dest_temp\"";
}
exec($execute);
※細かいところを説明しておきますと、$convert はGraphicConfig.php という設定ファイルで与えられた定数で、ImageMagickのconvertコマンドのパスが格納されます (デフォルトでは'/usr/bin/convert'がセットされています)。$mtkk_no_exec_args_quoteは、trueをセットすると従来どおりの (脆弱な) 挙動になるフラグと思われますが、特にセットしている箇所が見当たりませんので、基本的にはelse節の方が実行されて修正後の挙動となります。
一見して分かると思いますが、この修正内容は不十分であり、OSコマンドインジェクションの危険性はなくなっていないものと思われます。ただし、これはあくまで22日の時点で配布された「緊急パッチファイル」の内容です。配布元ではその後、23日に修正版をリリースし、あわせて以下のようにアナウンスしています。
ケータイキット for Movable Type で確認されたセキュリティ問題の修正バージョンとして、ケータイキット for Movable Type 1.65 の提供を開始します。すべてのケータイキット for Movable Type ユーザーは、修正版に必ずアップグレードしてください。
※1.641用の緊急パッチファイルを適用された場合でも、必ずアップグレードをしてください。
「緊急パッチファイル」のままでは駄目だという旨が告知されていますね。修正版の内容を見ると、該当箇所は最終的に以下のような形になったようです。
global $mtkk_no_exec_args_quote;
if ( $mtkk_no_exec_args_quote ) {
$execute = "$convert $option $src $dest_temp";
} else {
$execute = "$convert $option " . escapeshellarg($src) . " " . escapeshellarg($dest_temp);
}
結論としては、配布元でアナウンスされているとおり、「緊急パッチ」を適用していても修正版にアップデートする必要がある、ということで良いと思います。
- 「「ケータイキット for Movable Type」のOSコマンドインジェクションの修正」にコメントを書く
- 前(古い): アクセシビリティって何ていうか、つまり当たり前のこと






![Dreamweaver プロフェッショナル・スタイル [CS3対応] (Style for professional)](http://ecx.images-amazon.com/images/I/31YE7dzwWXL._SL75_.jpg)
