WordPress AMPプラグインの脆弱性が悪用される――コードインジェクションの危険性と対策
WordPress AMPプラグインの脆弱性が悪用される――コードインジェクションの危険性とは
本記事では、WordPressのAMPプラグインの旧バージョン(バージョン0.9.97.20以下)に存在するコードインジェクション脆弱性について詳しく解説します。そもそもAMPとは何か、そしてWordPress AMPプラグインにどのような悪用可能な脆弱性が含まれていたのかを順を追って見ていきましょう。
Accelerated Mobile Pages(AMP)とは
AMPはGoogleが主導するウェブ技術プロジェクトで、モバイルユーザー向けにサイトの表示速度を劇的に向上させることを目的として開発されました。公式プロジェクトサイトによると、AMPはオープンソースのライブラリであり、ユーザーにとってほぼ瞬時に読み込まれるウェブページを簡単に作成する手段を提供します。AMPページは通常のウェブページと同様にリンクを張ることができ、サイト運営者自身が管理できます。
AMPページは、以下の3つのコンポーネントで構成されています。
- AMP HTML: AMPページ用のHTMLは通常のHTMLとは若干異なり、いくつかの制限が設けられています。これにより、サイトを開いた際にすべての機能を読み込む必要がなくなります。
- AMP JS: この中核コンポーネントは、サイトを開いたときにすべてのリソースの読み込みを担当します。受信コンテンツをすべて非同期化することで、ページ内のコンテンツが他のコンテンツのレンダリングを妨げることがありません。
- AMP Cache: 有効なAMPドキュメントを配信するためのプロキシ型コンテンツデリバリーネットワーク(CDN)です。すべてのドキュメント、JSファイル、画像は同一オリジンからHTTP/2.0を使用して読み込まれ、最大限の効率が確保されます。
「AMP for WP」プラグインにおけるコードインジェクション脆弱性
問題となったプラグインは「AMP for WP – Accelerated Mobile Pages」です。このプラグインは、ページをAccelerated Mobile Pages形式でレンダリングし、モバイル環境での高速な読み込みを実現するためのものです。旧バージョンのプラグイン(バージョン0.9.97.20以下)における根本的な脆弱性は、「認証およびセッション管理の不備(Broken Authentication and Session Management)」です。
実際にこの脆弱性を突く攻撃として、ファイルインジェクション、バックドアファイルのダウンロード(wp-config.phpを含む)、DDoS脆弱性、データベースのアップグレード、オプションや投稿メタデータの上書き、帯域幅の不正利用(WPメディアライブラリ全体のダウンロード)、フィルタリングされていないWordPress投稿の注入など、多様な手法が確認されています。コードインジェクション脆弱性では、Cookieやブラウザ側スクリプトなどを通じて悪意のあるコードがウェブサイトに注入されます。その結果、機密情報の窃取やデータ漏洩が引き起こされる恐れがあります。
なぜこの問題が発生するのか?
この問題は、セッション管理に関わる要素が適切に保護されていないことが原因です。具体的には、以下のようなケースが挙げられます。
- ユーザーの認証情報が、ハッシュ化や暗号化して保存しても適切に保護されていない。
- 脆弱なアカウント管理機能(アカウント作成、パスワード変更・復元、弱いセッションIDなど)により、認証情報が推測または上書きできてしまう。
- URLにセッションIDが露出している(URLリライトなど)。
- セッションIDがセッションフィクセーション攻撃に対して脆弱である。
- ログアウト時に、セッションID、ユーザーセッション、認証トークン(特にシングルサインオン(SSO)トークン)が適切に無効化されていない。
- ログイン成功後にセッションIDがローテーション(更新)されていない。
- パスワード、セッションID、その他の認証情報が暗号化されていない接続で送信されている。
この脆弱性は、Common Weakness Enumeration(CWE)の一覧においてCWE-287として分類されています。
この脆弱性によって生じうる影響としては、意図しないユーザーへ機密リソースや機能が露出することが挙げられます。その結果、攻撃者が機密情報へアクセスできるだけでなく、ウェブサイト上で任意のコードを実行される危険性もあります。また、ユーザー登録を許可しているウェブサイトにとって、このプラグインの脆弱性は特に深刻な問題となります。
対策方法
この脆弱性から身を守るための最も簡単な対策は、以下の通りです。
- 最新版のWordPress AMPプラグイン(バージョン0.9.97.20以降にリリースされたもの)へアップデートする。
- 脆弱性が解決されるまで、現在使用中のプラグインを無効化する。
最後に、AMPを有効化したサイトの脆弱性調査をご希望の場合は、ぜひ当社のウェブサイトまでお気軽にお問い合わせください。
注:対象のプラグインは、脆弱なコードが原因で最近WordPressプラグインディレクトリから一時的に削除されましたが、開発元もWordPressチームもプラグインの具体的な問題点については公表していません。
-
WPFormsプラグインに認証済み保存型XSSの脆弱性(CVE-2020-10385)が発見 ― バージョン1.5.9への即時アップデートを
WordPressの人気フォームプラグイン「WPForms」において、バージョン1.5.8.2以前に認証済みユーザーによる保存型XSS(クロスサイトスクリプティング)の脆弱性が存在することが、プラグイン監査の過程で確認されました。データのサニタイズ(無害化処理)を強化したバージョン1.5.9は、2020年3月5日にリリースされています。 CVE ID: CVE-2020-10385 概要 WPFormsは、300万以上のアクティブインストール数を誇るWordPress向けフォーム作成プラグインです。今回、認証済みユーザーによって悪用可能なクロスサイトスクリプティング(XSS)の脆弱性が発見
-
WordPressプラグインに潜むPHP実行型マルウェアの駆除・対策ガイド
最近、WP Super Cache、Akismet、Elementorといった人気WordPressプラグインが生成するファイルと酷似したファイル名・内容を持つ悪意あるファイルを、ハッカーが密かに仕込んでいるサイトが複数確認されました。これらのファイルに含まれるコードは、リダイレクトハック、サーバー上への不正ファイルの作成、お問い合わせフォームやメールマガジンへのスパム送信を引き起こし、最悪の場合はホスティング会社によるアカウント停止につながることもあります。本記事では、プラグインに潜むこの隠蔽マルウェアの実態と、その除去方法について詳しく解説します。 WP Super Cacheプラグイン