2007-05-16
晴れ

カスタム 404 ページの脆弱性

yuriko による 11:37:03 の投稿
カテゴリー: WordPressハック

CVE-2007-2627 の対策として、カスタム 404 ページのテンプレートから get_sidebar() 関数を除去しました。そのままではレイアウトが崩れてしまったので、適宜 <div id="sidebar"> </div> などの記述を足しています。(追記: この修正は意味がないので記述削除)

脆弱性の概要は以下の通りです。WordPress 2.2 では修正されるのかな??(WP2.1 の時点で OK でした)

Overview

Cross-site scripting (XSS) vulnerability in sidebar.php in WordPress, when custom 404 pages that call get_sidebar are used, allows remote attackers to inject arbitrary web script or HTML via the query string (PHP_SELF), a different vulnerability than CVE-2007-1622.

[追記 20:45] 本日、WordPress 2.2 本家版がリリースされましたが、どうも直ってなさそうです。template-loader.php, theme.php を見ても 404.php を読み込む処理に手が入ってるように見えませんから。

[追記 21:40] これは WordPress コアの脆弱性じゃなくて、テーマの作り方によって脆弱性が起きるという話でした (なのでタイトルと記述を大幅修正)。詳細によると、WordPress の sidebar.php にある検索フォームが <form method="get" id="searchform" action="<?php echo $_SERVER['PHP_SELF']; ?>"> となっているからヤバイ、というものです。でも、WordPress 2.1 に同梱されているテーマは、もはやそんな記述になっていません。classic, default ともに <form id="searchform" method="get" action="<?php bloginfo('home'); ?>"> となっていて安全です (WordPress 2.2 の default テーマは action="<?php bloginfo('url');?>" に修正されています)。しかし、ME 版附属の EasyAll はモロ $_SERVER['PHP_SELF']; を使っていて危険です!! WordPress 2.2 ME 版ではぜひ直してもらわないと……。

なお、当サイトのテーマは PHP_SELF を使っていないので、最初に投稿した修正は不要でした。