Genericons Example.html XSS脆弱性からWordPressサイトを保護する方法

前書き

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

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

脆弱性の説明

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

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

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

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

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

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

image:https://assets.digitalocean.com/articles/wordpress_genericons_vuln/update_warning.png [WordPress更新の警告]

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

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

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

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

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

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

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

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

image:https://assets.digitalocean.com/articles/wordpress_genericons_vuln/update_now.png [今すぐWordPressアップデート]

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

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

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

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

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

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

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

結論

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

Related