WordPress 4.7, 4.7.1 脆弱性の検証

ホーム > セキュリティ > サイバーセキュリティ > WordPress 4.7, 4.7.1 脆弱性の検証

WordPress4.7脆弱性

皆様はじめまして、新人エンジニアの小松と申します。

本日は最近起きたWordPressの脆弱性についての記事を書くことにします。

WordPress 4.7 / 4.7.1 における脆弱性

WordPress4.7

昨今では多くのブログサイトで使用されているWordPress

WordPressは豊富なプラグインや多彩な外見テーマのおかげでphpに詳しくなくとも手軽に編集できるのを強みとしているオープンソースのブログ/CMS プラットフォームです。しかしそんなWordPressで最近、ショッキングなニュースが話題となりました。
バージョン4.7, 4.7.1のWordPressに脆弱性があり、専門的な知識がなくても悪用することができる深刻なものでした。事態が事態だけにWordPress側もすぐにはその脆弱性を公表できませんでした。

その脆弱性を突かれるとどうなるかですが、攻撃側が容易にコンテンツを望むように改ざんできてしまいます。ブログサイトが台無しにされるだけでなく、悪意のある攻撃の踏み台にされる、そのブログサイトそのものに罠を埋め込むこまれるなど攻撃者の道具として悪事に加担させられる可能性もあります。

技術的な説明として徳丸氏のサイトより引用させていただきます。

>存在しないコンテンツが指定された場合、update_item_permissions_checkメソッドの様々なチェックをすべてくぐり抜け、メソッド最後のreturn文にて true が返されるところが恐ろしいですね。
しかし、この「存在しないコンテンツ」については、以下の update_item メソッドの 526行目にてエラーが返され、結果としては何もしない *はず* でした。
ところが、id=1A が指定された場合に、update_item_permissions_checkメソッドとupdate_itemメソッドの両方で呼ばれている get_post関数が受け取るパラメータを確認してみましょう。

>update_item_permissions_checkでは、get_post(‘1A’)が呼ばれ、1AをIDとするコンテンツはないため、「コンテンツは存在しない」が返され、チェック結果は true となります(!)。
一方、update_itemメソッドは、$id を整数にキャストしているため、get_post(1)が呼ばれ、ID=1 のコンテンツが変更されることになります。これにより、本来権限のないコンテンツ ID=1 に対する更新ができてしまうことになります。

@see WordPress 4.7.1 の権限昇格脆弱性について検証した

今回私は、実際に自らの手でWordPressの脆弱性を突いてみて結果を観測してみることとしました。

実験

WordPress4.7脆弱性

EXPLOIT DATABASEにて公開されているコード。赤枠で括られた部分がコンテンツとして改ざんされます

用意したものはOracle VM VirtualBoxで立ち上げたCentos6.8にWordPressのバージョン4.7をサーバー側として設定

一方で攻撃側は、サーバー側と同じくOracle VM VirtulboxでKali Linux(amd64)を攻撃側として用意しました。
インジェクションに使うスクリプトはrubyなので、攻撃側にはrubyを使える環境に整える必要があります。(今回は攻撃者というイメージでKali Linuxを指定しましたが、rubyを使える環境であればほかのディストリビューションでも問題ありません。)

ローカルでWordPressのブログサイトを立ち上げればサーバー側は準備完了です。EXPLOIT DATABASEにて公開されているコードを攻撃側がスクリプトとして実行します。

この後に対象のWordPressのURLを指定します。そしてその次にポストIDが問われますが、本来なら存在しないIDは弾くこの部分が存在しないIDを弾かずに通してしまいます。
従って、例えばここで

とだけ入力することで認証を通過し、標的となったサイトを改ざんするスクリプトのリクエストが通ってしまいます。

WordPress脆弱性

赤枠で括られた部分が改ざんされたもの

恐ろしいことに、たったこれだけで4.7または4.7.1バージョンのWordPressの改ざんは可能なのです。このシンプルかつ深刻な脆弱性は、バージョンを4.7.2にあげることで防ぐことができます。もしもご利用のWordPressのバージョンが未だに4.7または4.7.1でしたのなら即刻バージョンアップさせることを推奨します。

小松( エンジニア )

この記事を書いた人:小松( エンジニア )

去年の6月にセキュリティカンファレンスで弊社に出会い、10月中旬に入社しました。現在はシステムセキュリティ分野を専攻しています。

この記事に関してのお問い合わせ
御連絡・ご返信は原則2営業日以内を予定しております。
お急ぎの場合は、お手数ですが下記電話でもご対応をしております。

システムガーディアン株式会社
受付時間:平日9:00~18:00
受付担当:坪郷(つぼごう)・加藤
電話:03-6758-9166