序章

2015年5月6日に、数百万人のユーザーに影響を与える可能性のある重大なWordPressバグが公開されました。 「Genericons」アイコンフォントパッケージを使用するコンポーネントに実際に起因する脆弱性により、サイトがクロスサイトスクリプティング(XSS)攻撃にさらされる可能性があります。

この記事では、脆弱性の影響、サイトが脆弱であるかどうかを確認する方法、および影響を受けていることがわかった場合に実行する必要があるアクションについて説明します。

脆弱性の説明

実際の脆弱性は「Genericons」と呼ばれるフォントパッケージに存在し、WordPressのコアインストールには存在しません。 残念ながら、このフォントパッケージは、WordPressにデフォルトでインストールされ、有効になっているテーマである「TwentyFifteen」によって使用されます。 この脆弱性は、「JetPack」と呼ばれる人気のあるWordPressのカスタマイズおよび拡張プラグインにも影響を及ぼしました。このプラグインには、100万を超えるアクティブなインストールがあり、プラグインやテーマも含まれている可能性があります。

この脆弱性は、Genericonパッケージに含まれているexample.htmlという単一のファイルに存在します。 これは、フォントを紹介するために含まれている必須ではないファイルです。 ただし、DOMベースのクロスサイトスクリプティングの悪用を可能にする可能性のある脆弱性を導入するjQueryスニペットが含まれています。 このファイルを削除せずに「Genericons」パッケージの最新バージョンを使用したテーマまたはプラグインはすべて脆弱でした。

DOMベースのクロスサイトスクリプティング攻撃は、ユーザーのブラウザによって解釈されるDOM環境を変更することで機能し、スクリプト化されたアクションを元の設計とは逆の方法で実行します。 この脆弱性を悪用するには、WordPressインストールにログインしているときに、特別に細工されたリンクをクリックするようにユーザーを誘導する必要があります。 アプリケーションにこの種の脆弱性がある場合、アクションはブラウザー自体の内部で発生するため、サーバーは望ましくない動作を簡単に防ぐことはできません。 幸い、この場合、脆弱性を取り除くのは簡単です。

私のサーバーにはこの脆弱性がありますか?

2015年5月7日に、この問題にパッチを適用するWordPress4.2.2がリリースされました。 この日付以降にWordPressの最新バージョンをインストールまたは更新した場合は、インストールを保護する必要があります。 この日付以降にWordPressのワンクリックで作成されたDigitalOceanドロップレットは、脆弱ではありません。

この日付より前にインストールされ、4.2.2に更新されていないWordPressインスタンスを操作している場合は、サイトが脆弱である可能性があります。 その場合、管理パネルには次のような警告が表示されます。

WordPress update warning

サーバーのドキュメントルートに移動して、example.htmlファイル自体を探すこともできます。 たとえば、サーバーのドキュメントルートにいる場合は、次のように入力できます。

  1. find . -path "*/genericons/example.html"

結果は次のようになります。

find output
./wp-content/themes/twentythirteen/genericons/example.html ./wp-content/themes/twentyfifteen/genericons/example.html ./wp-content/themes/twentyfourteen/genericons/example.html

上記の例では、example.htmlファイルがTwentyFifteenテーマで見つかりました。これは、このインストールが脆弱であることを示しています。 ここに示されている他のテーマ内のexample.htmlファイルは、問題のあるjQuery行が含まれていないため、実際には脆弱ではありません。 twentyfifteen/genericonsディレクトリ内またはお持ちのプラグイン内でexample.htmlファイルを探します。

インストールにパッチを適用する方法

システムにパッチを適用するための推奨される方法は、WordPressをアップグレードすることです。 これにより、この脆弱性からシステムが保護されるだけでなく、修正された可能性のあるその他の問題も保護されます。

権限で許可されている場合は、通常、管理パネルの更新コントロールを使用してインストールをアップグレードできます。 このオプションは、メインページのリンクとして表示される場合があります(前のスクリーンショットを参照)。 そうでない場合は、コントロールパネルの[更新]オプションに移動して、[今すぐ更新]ボタンをクリックします。

WordPress update now

また、テーマとプラグインを別々に更新する必要がある場合もあります。

WordPressを(影響を受けるテーマやプラグインとともに)完全に更新することを強くお勧めしますが、問題のあるファイルを手動で簡単に削除することもできます。

これを行うには、WordPressサーバーにログインし、ドキュメントのルートディレクトリに移動します。 次のように入力すると、問題のあるファイルを削除できます。

  1. sudo find . -path "*/genericons/example.html" -exec rm -f {} \;

その後、ディレクトリ構造を再度確認できます。

  1. find . -path "*/genericons/example.html"

genericonsディレクトリ内のすべてのexample.htmlインスタンスを削除する必要があります。

結論

このバグに対して脆弱なユーザーの数は非常に多かったものの、修正は非常に簡単で、通常のWordPressの更新方法で実行できます。 自分の目的またはクライアントのためにWordPressのインストールを管理している場合、4.2.2で利用可能なパッチにより、この脆弱性は簡単に解消されます。 いつものように、WordPressのインストールを安全に保つための最良の方法の1つは、セキュリティ更新プログラムをすぐに適用することです。