WordPressは、世界中で多くのウェブサイトに利用されているCMS(コンテンツ管理システム)ですが、その利用者数の多さからサイバー攻撃の標的になることがあります。
この記事では、WordPressに対する攻撃の手口と傾向をいくつか紹介します。
WPScanの WordPress 脆弱性統計によると、既知の脆弱性の内92パーセントはプラグインによる脆弱性であることが報告されています。
プラグインの脆弱性対策が、いかに重要かが伺えます。
※引用元: https://wpscan.com/statistics
脆弱性が存在するプラグインを利用しているか確認する方法はいくつかありますが、最も効率がよいのはWordPress専用の脆弱性スキャンツールを使用することです。 このツールを利用することで、WordPressのバージョンやプラグイン、テーマなどに対する脆弱性を素早く効率的に検出することができます。
大変便利でセキュリティにも役立つツールなのですが、この機能はサイバー攻撃の事前調査として悪用できてしまい、脆弱性が存在するWordPressサイトを見つけることが可能です。
WordPressのプラグインやテーマは、誰でも簡単に開発することができます。
そのため、プラグインの開発者がセキュリティについて十分な知識を持っていなかったり、品質管理が不十分な場合、脆弱性が含まれることがあります。
自由に開発できる反面、脆弱性への対応が遅れたり、脆弱性の存在が周知されてもメンテナンスされずに放置されているプラグインが多数存在します。
またプラグイン単体では問題なく動作する場合でも、他のプラグインと同時に使用した場合に意図しない挙動が発生し、脆弱性になることがあります。
脆弱性の存在するプラグインやテーマがインストールされている場合、攻撃者が容易に脆弱性を悪用することができ、次のような攻撃を仕掛けることができます。
SQLインジェクションは、不正なSQLコマンドをWebアプリケーションに送り込むことで、データベースに対する不正アクセスを行う攻撃手法です。
具体的には、WordPressサイトのコメント欄のような入力フォーム等にSQLコマンドを入力することで、データベースの情報を読み出したり、改ざんしたりすることができます。
SQLインジェクションの被害を受けると、個人情報や機密情報の漏洩、WordPressサイトを破壊して閲覧できなくする場合があります。
CSRFは、Webアプリケーション上で意図しない操作を行わせる攻撃手法です。
具体的には、攻撃者がWordPressサイト内に攻撃用ページを作成するなどして、そのページを閲覧したユーザーのログイン情報などを不正に取得したり、WordPressサイト内に保存されているデータを漏えいさせることができます。
XSS(クロスサイトスクリプティング)とは、Webサイトの脆弱性を悪用して、攻撃者が用意したスクリプトを被害者のブラウザ上で実行させる攻撃手法のことです。
具体的には、WordPressサイトのコメント欄のような入力フォーム等にプログラムコードを埋め込んで送信することで、攻撃者が意図したコードが被害者のブラウザ上で実行されるようにします。 これにより不正ログインするために必要な情報を盗み出し、攻撃者が被害者のアカウントにログインした状態で不正な操作を行うことができます。
プラグインやテーマに存在する脆弱性への対策は、開発者自身がいかに素早く対応してくれるかがポイントになります。
そのため、インストールする前に次の点を確認することが重要です。
WordPressプラグインやテーマがバージョンアップする理由は、何も脆弱性を修正するためだけではありません。 プラグインに機能追加したり、細かな修正でクオリティを上げていくためにバージョンアップされることもあります。
つまり、定期的にアップデートされているからといって即座に脆弱性対策がされるとは限りませんし、逆に長期間更新されていないと必ず脆弱性が放置されるわけでもないのです。
しかしながら、頻繁にアップデートされている場合は開発者が機能改善に積極的である証拠なので、長期間更新されていないプラグインやテーマよりも素早く対策してくれる可能性が高いと言えるでしょう。
インストールする予定のプラグインやテーマでの脆弱性対策状況は、当サイトで確認することができます。
最新版のWordPressに対応していない場合は、WordPress本体のアップデートに伴って不具合が発生する可能性があります。
上記でプラグインを検索し、「検証済み最新バージョン」もしくは「対応する最新バージョン」と書かれた項目を確認しましょう。
逆にWordPress本体のバージョンが最新になっていない場合、最新版に対応したプラグインをインストールすると、不具合を起こして使えなくなる場合があります。
WordPress本体の脆弱性はプラグインに比べて少ないとはいえ確実に存在し、脆弱性の修正アップデートも頻繁にされていますので、WordPress本体も必ず最新版にしておきましょう。
WordPressの本体プログラム(コアプログラム)は、WordPressのセキュリティチームによって定期的にセキュリティメンテナンスが行われています。 問題が発生した場合には素早く対応されており、セキュリティアップデートを迅速に適用していれば、本体の脆弱性による攻撃を受ける可能性は極めて低いと考えられます。
ただし、WordPressは古いバージョンとの互換性を維持するため、問題視されている機能(xmlrpc.phpなど)でもデフォルトで有効となっています。 そのため、セキュリティを確保するためには、この機能を無効化したり、機能制限をかける設定を実施することが重要です。
問題のあるプラグインによって、「admin-ajax.php」を経由して任意のファイルアップロードが可能になる脆弱性が過去に繰り返し発見されています。
admin-ajax.phpに対する攻撃には、以下のような対策が必要です。
XML-RPCは、WordPressが外部アプリケーションとやり取りするための機能で、xmlrpc.phpは、このXML-RPCを利用するためのコアファイルです。
XML-RPCが有効になっている場合、WordPressでの記事作成や画像のアップロードなどを、外部のアプリケーションから行うことができます。
正しく利用すれば便利な機能ですが、XML-RPCを悪用して不正にログインしたり、サイトを停止させる攻撃が実行でき、脆弱性の温床として広く問題視されている機能です。
過去には「ピンバック」という機能を悪用して、人気サイトへ大きな負荷をかけて停止させたり、大量のスパムコメントを送りつける大規模な攻撃が実行された事例もあります。
この攻撃への対策を放置していると、先述したような攻撃の踏み台に利用されることがあり、第三者のサイトへの攻撃に加担することになってしまいます。
そのため、XML-RPCについて検索すると、ほぼすべてのページで無効化することが推奨されており、WordPressのレンタルサーバーでは無効化した状態で提供されていることもあります。
ただし、Jetpackなどのxmlrpc.phpを利用しているプラグインやツールがある場合は、無効化すると使えなくなってしまいます。 そのような場合は、必要な通信のみ許可するようサーバー側で設定する必要があります。
参考情報
【注意喚起】Worepressをご利用で「Pingback」機能の脆弱性
WordPressの16万サイトが大規模攻撃の踏み台に、「Pingback」機能悪用
GoTrim:WordPress Webサイトにブルートフォース攻撃を仕掛けるGoベースのボットネット
WordPress の XML-RPC API における POST メタデータ値の処理に関する脆弱性
【重要】Wordpress で作成されたWEBサイトの改ざんに関する注意喚起
REST APIもXML-RPCと同様にWordPressが外部アプリケーションとやり取りするための機能です。
XML-RPCよりもセキュリティが強化され、より高度な機能を提供しています。
しかしながら、過去に大規模なサイト改ざん事件の引き金となった脆弱性が存在しており、やはり脆弱性対策に「完璧」は存在せず、また対策に終わりもないことを思い知らされます。(現在その脆弱性は修正済み)
Contact Form 7など、大変多くインストールされている人気プラグインがこの機能に依存しており、簡単に無効化や制限のできないケースも多いですが、REST API機能を利用しない場合には、無効化することもひとつの対策として考えられます。
この記事では、WordPressサイトに対する攻撃の手口と傾向、そして対策について解説しました。
重要なポイントは以下の通りです。
以上の対策を適切に実行することで、WordPressのセキュリティを向上させ、サイトを安全に運営することができます。