2019年3月13日
JP-Secure Labs

本レポートでは、当社サービスパートナーの協力のもと、対象サービスで集計期間中に確認された攻撃・検出の分類に加えて、脅威動向やインシデントの事例などについて取り上げます。

サマリ

検出総数1億3752万件/1日あたり約75万件の検出

ユーザー数40万超の「ロリポップ!レンタルサーバー」で検出した攻撃の総数は、6ヶ月間で137,527,354件となり、1日あたりの検出数は約75万件となりました。
1日あたりの検出数は、Vol.01の50万件、Vol.02の65万件から増加の傾向にあります。

WordPressのテーマ・プラグインの脆弱性を悪用する攻撃に注意

2018年8月、WordPressで構築したサイトを複製できる人気プラグイン「Duplicator」にリモートコード実行の脆弱性が発見され、実際に被害が生じるなど話題になりました。
また、2018年12月に特定のテーマやプラグインに対するWordPressの設定ファイル(wp-config.php)読み取りを試みる攻撃が大幅に増加しました。本章で解説します。

【集計期間】
2018年7月1日 ~ 2018年12月31日

【協力会社・対象サービス】
GMOペパボ株式会社「ロリポップ!レンタルサーバー」

  • 本レポートは、情報提供を目的としています。
    本レポートの記述を利用した結果に生じた損失等について、株式会社ジェイピー・セキュアは責任を負いかねます。
  • 本レポートのデータをご利用いただく際には、出典元の明記をお願いいたします。
     (例 出典:株式会社ジェイピー・セキュア『JP-Secure Labs Report Vol.03』)
  • 本レポートに記載されている製品・サービス名、社名は各社の商標または登録商標です。

1. 検出統計(全体)

対象サービスのウェブサイトにおいて、集計期間中(2018年7月~2018年12月)に検出した攻撃の総数は、およそ1億3752万件137,527,354)でした。
サイトによる検出数の差異や日毎の変動はありますが、平均すると毎日75万件の攻撃を検出していることになります。

  • 対象サービスで稼働しているWAF(ウェブアプリケーションファイアウォール)「SiteGuardシリーズ」の検出情報(検出ログ)をもとに集計しています。
    (SQLインジェクションに代表されるウェブアプリケーションの脆弱性を悪用した攻撃やWordPressの脆弱性を悪用した攻撃等を検出・防御した総数です。)
  • 検出名や分類は、「SiteGuardシリーズ」による検出情報をもとにした表記になっています。
  • 対象サービスの利用者によるセキュリティ診断等のアクセスが集計対象に含まれている場合があります。
    不正ログインの試行(ログインの失敗)のほか、ウェブ以外の不正アクセス(スパムメールやマルウェア等)の情報は含まれていません。

1.1 攻撃種別の分類(全体)

検出した攻撃を分類すると図1.1-Aのようになり、5割を超えるSQLインジェクションに次いで、クロスサイトスクリプティングを多数検出し、この2つの検出で75%を占めるという結果になりました。

図1.1-A 攻撃種別の分類(全体)

図1.1-A 攻撃種別の分類(全体)

攻撃種別 検出した件数
SQLインジェクション 77,302,993
クロスサイトスクリプティング 26,169,061
ディレクトリトラバーサル 9,050,414
OSコマンドインジェクション 6,967,000
バッファオーバーフロー 676,444
改行コードインジェクション 566,305
その他の攻撃 16,795,137
合計 137,527,354

表1.1-A 攻撃種別の分類(全体)

SQLインジェクションおよびクロスサイトスクリプティングは、ウェブアプリケーションの脆弱性を悪用した攻撃の代表的な手法であり、脆弱性の届け出件数も多い傾向にあるため、特に注意が必要な対策として取り上げられることがあります。

Vol.01およびVol.02では、バッファオーバーフローに分類される攻撃が上位に入りましたが、2018年1月までに集中しており、以降は大きく減少し、今回の集計期間においても全体としての検出数は下位となりました。

  • バッファオーバーフロー攻撃の可能性について、「SiteGuardシリーズ」では、長いURLやパラメータの入力があった場合に検出します。

分類の対象外となった「その他の攻撃」は、全体の12%を占める結果となりました。
内訳は、図1.1-Bとなり、今回の集計期間においても、WordPressの設定ファイル(wp-config.php)の読み取りを試みる攻撃が最も多いという結果になりました。WordPressのテーマ・プラグインの脆弱性の悪用によるものが殆どで、この傾向は今後も続くと考えられます。

図1.1-B その他の攻撃(内訳)

図1.1-B その他の攻撃(内訳)

攻撃種別 検出した件数
WordPress設定ファイルの読み取り 11,159,765
PHP-CGIリモートコード実行 2,307,894
Joomla!リモートコード実行 1,104,093
不正なリクエストヘッダ 745,091
Apache Struts 2の脆弱性悪用 462,652
WordPress REST API脆弱性の悪用 372,201
Drupalの脆弱性悪用(Drupalgeddon 2.0) 256,579
timuthumb.phpの脆弱性悪用 241,372
ShellShock 100,139
その他 45,351
合計 16,795,137

表1.1-A 攻撃種別の分類(全体)

なお、全体から見た検出数としては少数であるものの、Apache Struts 2の脆弱性を悪用する攻撃の検出が増加しました。対象サービスではApache Struts 2は稼働していないため、影響を受けることはなく、機械的な攻撃の検出が増加したと判断することができますが、2017年3月に大きな話題となったS2-045を悪用する攻撃パターンを中心に検出しています。Apache Struts 2では、リモートコード実行などの深刻な脆弱性が大きな話題になることがあります。Apache Struts 2.3系については、サポート終了が間近に迫っています。ライフサイクルを把握し、適切に管理・運用することが大切です。

1.2 月別の統計

集計期間の月別の検出数は、図1.2-Aのようになり、12月の検出数が最も多いという結果になりました。12月は全体的に検出数が増えていましたが、WordPress設定ファイルの読み取りを試みる攻撃のが増加が目立ちました。(2章で解説します。)

図1.2-A 月別統計(グラフ)

図1.2-A 月別統計(グラフ)

集計対象(月) 検出した件数
2018年7月 18,791,077
2018年8月 24,040,651
2018年9月 19,717,080
2018年10月 21,248,264
2018年11月 21,504,183
2018年12月 32,226,099
合計 137,527,354

表1.2-A 月別統計(検出数)

1.3 接続元(国別)の分類

攻撃に使用された接続元IPアドレスを国別で集計した結果が図1.3です。今回の集計期間においては、中華人民共和国とロシア連邦が増加しています。中華人民共和国の増加は、主に12月に集中していました。接続元は、踏み台として経由されることが多いという前提はありますが、日本も全体の13%を占めるという結果になっています。

図1.3 接続元(国別)の分類

国名 検出した件数
1 中華人民共和国 23,624,503
2 ロシア連邦 21,411,011
3 アメリカ合衆国 18,825,573
4 日本 17,927,407
5 オランダ 9,675,617
6 イギリス 8,846,991
7 ウクライナ 6,332,280
8 フランス 5,753,734
カナダ 4,897,618
10 パナマ 2,868,941
その他の国 17,363,679
合計 137,527,354

表2.3 接続元(国別)の分類

対象サービスのようなレンタルサーバーでは、CMSの管理画面など、攻撃を受けやすいページについて、海外IPアドレスからのアクセスを禁止する機能が提供されていることがあります。前述の国別の分類のように、海外からの不正アクセスは多いと考えられますので、有効活用してください。

WordPressに対する攻撃の検出傾向

攻撃の検出傾向(全体)1億3752万件137,527,354)について、WordPressに対する攻撃を対象に集計すると、明らかにWordPressを対象にした検出、またはその可能性が高い検出が5050万件以上50,513,454)になりました。
WordPressは、世界的に有名なCMSであり、CMSのシェアの大半を占めると言われています。
本レポートの集計対象のサービスでも、広くWordPressが有効活用されており、Vol.1, Vol.02同様に、WordPressを対象とした攻撃の検出が多く、全体の37%を占める結果となりました。

  • WordPressのコア(本体)に関するディレクトリである「/wp-includes/」やテーマ・プラグインがインストールされる「/wp-content/」、管理ページ「/wp-admin/」のほか、WordPressに関連するファイルへの検出など、WordPressへの攻撃である、またはその可能性が高いと判定できる条件で集計しています。(WordPressのディレクトリ構成や機能を把握した攻撃と考えられる検出を対象に集計しています。)

2.1 WordPressに対する攻撃(攻撃種別)

検出した攻撃を分類すると図2.1-Aのようになり、全体の検出傾向と同様にSQLインジェクションが最も多く、WordPressの設定ファイル(wp-config.php)の読み取りを含むディレクトリトラバーサル系の攻撃と合わせると8割を超えるという結果になりました。

図2.1-A WordPressに対する攻撃(攻撃種別)

図2.1-A WordPressに対する攻撃(攻撃種別)

攻撃種別 検出した件数
SQLインジェクション 23,324,990
WordPress設定ファイルの読み取り 11,159,765
ディレクトリトラバーサル 7,347,106
クロスサイトスクリプティング 4,357,693
OSコマンドインジェクション 2,569,112
改行コードインジェクション 535,167
WordPress REST API脆弱性の悪用 372,560
その他の攻撃 847,061
合計 50,513,454

表2.1-A WordPressに対する攻撃(攻撃種別)

WordPress設定ファイルの読み取りの検出については、2018年12月に多数の検出がありました。集計期間中のWordPress設定ファイルの読み取りを試みる攻撃の検出総数は、11,159,765件でしたが、中華人民共和国を接続元とした攻撃が急増し、12月だけで6,483,863件の検出となり、半数以上の検出が12月に集中していました。

集計対象(月) WordPress設定ファイル読み取りの検出数
2018年7月 1,706,283
2018年8月 859,438
2018年9月 741,293
2018年10月 411,722
2018年11月 957,166
2018年12月 6,483,863
合計 11,159,765

表2.1-B WordPress設定ファイル読み取りの検出数(月別)

2.2 WordPressに対する攻撃(検出箇所)

検出箇所で分類したのが図2.2-Aです。2018年12月にWordPress設定ファイルの読み取りを試みる攻撃が増加した関係で、テーマ・プラグインともに検出数が大幅に増加し、「/wp-content/plugins/」と「/wp-content/themes/」の検出で7割近くを占めました。一方で、前回レポートで検出の多かった「xmlrpc.php」の検出は大きく減少するという結果になっています。

図2.2-A WordPressに対する攻撃(検出箇所)

図2.2-A WordPressに対する攻撃(検出箇所)

検出した箇所 検出した件数
/wp-content/plugins/ 22,497,132
/wp-content/themes/ 12,232,621
/wp-json/ 5,614,897
/wp-admin/admin-ajax.php 3,322,402
/wp-includes/ 2,049,902
/wp-content/ 1,761,529
xmlrpc.php 1,501,571
/wp-admin/ 244,082
その他 1,289,318
合計 50,513,454

表2.2-A WordPressに対する攻撃(検出箇所)

図2.2-Bは、wp-config.phpの読み取りを試みる攻撃リクエストの例です。

/wp-content/themes/urbancity/lib/scripts/download.php?file=../../../../../wp-config.php
/wp-content/themes/trinity/lib/scripts/download.php?file=../../../../../wp-config.php
/wp-content/themes/MichaelCanthony/download.php?file=../../../wp-config.php
/wp-content/themes/TheLoft/download.php?file=../../../wp-config.php
/wp-content/themes/lote27/download.php?download=../../../wp-config.php
/wp-content/themes/authentic/includes/download.php?file=../../../../wp-config.php
/wp-content/plugins/membership-simplified-for-oap-members-only/download.php?
download_file=.././.././.././wp-config.php
/wp-content/plugins/ajax-store-locator-wordpress_0/sl_file_download.php?
download_file=../../../wp-config.php

図2.2-B wp-config.phpの読み取りを試みる攻撃リクエストの例

../」を指定し、ディレクトリを遡ることで、本来アクセスが禁止されているディレクトリ、ファイルにアクセスを試みる攻撃で、WordPressのインストールディレクトリにあるwp-config.phpを不正に読み取ろうとしていることが分かります。本レポートでは、WordPress設定ファイルの読み取りと他のディレクトリトラバーサルの検出を別に分類していますが、脆弱性および攻撃手法は同じです。

2.3 WordPressのプラグインの脆弱性を悪用する攻撃について

2018年8月 WordPressで構築したサイトを複製できるプラグイン「Duplicator」のバージョン1.2.40以前にリモートコード実行の脆弱性が発見されました。サイト複製の際に使用されるinstaller.phpの脆弱性を悪用され、外部から任意のコードを実行されるため、悪用された場合の被害は大きくなります。
WordPressの設定ファイルであるwp-config.phpを生成するinstaller.phpの脆弱性を悪用し、外部からPHPコードをインジェクションするという攻撃で、以下の記事で詳細が解説されています。

Duplicator Update Patches Remote Code Execution Flaw:(外部サイト)
Remote code execution vulnerability in WordPress Duplicator < 1.2.42:(外部サイト)

攻撃の流れは以下のようになります。

  • installer.phpの存在確認
  • installer.phpを実行して、パラメータにPHPコードをインジェクション
  • 外部から生成されたwp-config.phpにアクセスすることで、任意のPHPコードを実行

本レポートの対象サービスにおいてもinstaller.phpの脆弱性を悪用する攻撃(前述の2番目にあたるパラメータにPHPコードをインジェクションする攻撃)を8,544件検出しました。
この攻撃では、installer.php経由で不正なデータベース接続情報を与えられることで、サイトの停止に陥るという点でも注意が必要です。

該当の脆弱性については、バージョン1.2.42以降で修正されていますが(本レポート執筆時点の最新バージョンは1.3.8)、本件は複製先のサイトに残っているinstaller.phpの脆弱性が悪用されるため、複製元と複製先の環境ともにプラグインのバージョンアップが推奨されるだけでなく、複製先のサイトでinstaller.phpとinstaller-backup.phpを削除することが最も重要です。

2018年11月には、アクティブインストール数500万を超えるSEO対策プラグインの「Yoast SEO」のリモートコード実行やアクティブインストール数100万を超える問い合わせフォーム設置プラグインの「Ninja Forms」にクロスサイトスクリプティングなど、相次いで人気プラグインに脆弱性が見つりました。
WordPress本体やテーマの脆弱性に関する報告は減少傾向にありますが(※)、プラグインの脆弱性悪用による被害報告が多い傾向が続いています。上記は、プラグインの脆弱性に関する情報の一例です。ご利用のプラグインの更新情報に気を配り、最新バージョンを使用するように心がけてください。

※ WordPress本体については、WordPress 5.0.1 Security Release(外部サイト)で複数の脆弱性の修正がありました。

おわりに

JP-Secure Labs Reportでは、幅広い役割、年齢層の方々に情報をお届けしたいと考えています。

今後も協力会社との連携をさらに深めていき、インシデントの対応事例で分かったことや新たな脅威への対応にも焦点を当てた有益な情報提供に努めて参ります。