HTML
 Computer >> コンピューター >  >> プログラミング >> HTML

【2024年最新】WordPressのContact Form 7脆弱性を修正する完全ガイド|権限昇格攻撃への対処法

Contact Form 7は、アクティブインストール数が約1,000万件に達するWordPressを代表する人気プラグインの一つです。しかし、その歴史の中で複数の重大なセキュリティ脆弱性が発見されており、これらの脆弱性が原因で多くのサイトがハッキング被害を受けてきました。

特に深刻なのが、7年前に発見された権限昇格(Privilege Escalation)脆弱性です。他の脆弱性は比較的軽微で大規模な悪用には至りませんでしたが、この権限昇格脆弱性は現在でも世界中のウェブサイトで深刻なセキュリティ侵害やハッキング被害を引き起こし続けています。

本記事では、この脆弱性の仕組みを詳しく解説し、Contact Form 7の権限昇格脆弱性を確実に修正する方法をご紹介します。

要点まとめ:サイトがハッキングされた疑いがある場合は、セキュリティプラグインMalCareを導入しましょう。WordPressサイト全体をスキャンしてハッキングを特定でき、ワンクリックでサイトをクリーンアップし、将来の攻撃からも保護できます。

Contact Form 7の脆弱性とは?

Contact Form 7の脆弱性を悪用すると、ハッカーはWordPressのアップロードフォルダ、具体的には/wp-content/uploads/wpcf7_uploads/フォルダ内にマルウェアをアップロードできるようになります。ファイルがアップロードされると、ハッカーはウェブサイト全体のコントロールを掌握できるのです。

「wpcf7_uploadsフォルダの中身を削除すれば問題は解決する」と考えがちですが、実はそうではありません。この方法を試して失敗した経験がある方も、決してあなただけではないのです。

これまでの事例を見ると、ハッカーは一度アクセス権を得ると、マルウェアをサイト全体に拡散させます。Contact Form 7の脆弱性はハッカーに完全なアクセス権を与えるため、何千ものファイルやデータベースに感染を広げられるのです。

当然ながら、この状態ではクリーンアップ作業は非常に複雑になります。そのため、優れたスキャナーとクリーナーを導入し、悪質なマルウェアの痕跡を一つ残さず除去することが重要です。

ハッキングされたサイトを修復する方法

前述の通り、権限昇格脆弱性によってハッキングされたサイトの修復は非常に困難です。特定のフォルダから悪意あるファイルを削除するだけでは済まないのです。

ハッカーがファイルをアップロードした瞬間、サーバー上のすべてのフォルダへのアクセス権を得ています。つまり、ハッカーは任意のファイルやデータベーステーブルにマルウェアを仕込んでいる可能性があり、後で再感染させるためのバックドアを残していることさえあります。

そこで、この問題を解決するための3つのシンプルかつ効果的なステップをご紹介します。必ず以下の順番通りに進めてください。

ステップ1:マルウェアを検出・除去する

Contact Form 7を使用している場合は、今すぐMalCareなどのセキュリティプラグインをインストールし、無料のマルウェアスキャンを実行することを強くお勧めします。サイトに目に見えるハッキングの兆候がなくても問題ありません。サーバー上で休眠状態にあるマルウェアは数百種類存在します。

このステップは極めて重要です。先ほど述べたように、アップロードフォルダを削除するだけでは不十分です。マルウェアスキャナーを使えば、マルウェアの正確な位置を特定し、根絶やしにできます。

サイト全体をサーバーレベルでスキャンするには、MalCareセキュリティプラグインの利用をお勧めします。MalCareは、サイトのファイルやデータベースに潜む隠れたマルウェア、さらには未知のマルウェアまで検出できます。

【2024年最新】WordPressのContact Form 7脆弱性を修正する完全ガイド|権限昇格攻撃への対処法

オートクリーン機能を使えば、ワンクリックでサイトからすべてのマルウェアを即座に除去できます。数秒で、コードを壊すことなくマルウェアを取り除きます。

「手動でのマルウェア除去の方が確実だ」と主張するセキュリティ専門家もいますが、現実にはそれ相応のコーディングスキルが必要です。サイバーセキュリティのプロでない限り、手動での除去は一切お勧めしません。

とはいえ、WordPressサイトからの手動マルウェア除去方法について詳しく知りたい方は、専用の解説記事もございますので参考にしてください(繰り返しますが、非推奨です)。

ステップ2:幽霊管理者(ゴーストアドミン)を削除する

ここまでの手順で、サイトからマルウェアを安全に除去できたはずです。次の変更を行う前に、まずサイトのバックアップを作成することを強くお勧めします。

ハッカーがContact Form 7の権限昇格脆弱性を使って行う最も危険な変更の一つが、偽の管理者アカウント(幽霊管理者)の作成です。この変更は非常に巧妙なため、ほとんどのサイトでは気づかれません。

厄介なのは、サイトからマルウェアを除去しても、どのマルウェアスキャナーも偽の管理者ユーザーを検出できない点です。

WordPressダッシュボードで以下の手順を実行してください:

  • ユーザー > ユーザー一覧を選択
  • 削除したいユーザー名にカーソルを合わせ、表示される「削除」リンクをクリック
  • 「ユーザーの削除」ページが開き、「投稿を削除する」または「投稿を新しいユーザーに引き継ぐ」の2つの選択肢が表示されます
  • すべてのコンテンツの作成者:」を選択
  • これらの投稿の新しい作成者として、作成済みのユーザー名を選択
  • 「削除を確認」ボタンをクリック
【2024年最新】WordPressのContact Form 7脆弱性を修正する完全ガイド|権限昇格攻撃への対処法

ステップ3:Contact Form 7を更新する

Contact Form 7の権限昇格脆弱性は、バージョン5.0.4で開発元によって修正されました。現在配布されているのはバージョン5.3.2以降であり、プラグインを最新版に更新することを強くお勧めします。

プラグインを更新すれば脆弱性自体が解消されるため、ハッカーは同じ脆弱性を悪用してあなたのサイトに侵入することはできなくなります。

今後のハッキングを防ぐ方法

同様のセキュリティ脆弱性を突いたハッカーからサイトを守るために、いくつかの対策を講じることができます。Contact Form 7の権限昇格脆弱性は、人気プラグインがサイトにセキュリティリスクをもたらす一例にすぎません。

ハッカーは毎日新たな脆弱性を探し続けています。将来の攻撃からサイトを守るための基本的なポイントをご紹介します。

MalCareを導入する

セキュリティプラグインの導入を強くお勧めします。MalCareには独自のウェブサイトセキュリティスキャナーが搭載されており、サイト上のマルウェアを自動的に検出します。手作業はほとんど必要ありません。

さらに、ワンクリックでマルウェアを除去できるツールも付属しており、復旧作業が格段に楽になります。

より重要なのは、サイトが読み込まれる前に国やデバイス単位で悪意のあるIPアドレスやボットをブロックする高度なファイアウォール機能です。これにより、最も一般的な攻撃からサイトを安全に守れます。

MalCareは最先端の学習アルゴリズムで動作し、日々賢くなっています。保護対象の25万以上のサイトで特定のマルウェアや悪意あるIPを検出すると、ネットワーク上のすべてのサイトに対して自動的に防御が適用されます。

テーマとプラグインを更新する

テーマやプラグインは非常に複雑なコードで構成されており、時にはWordPressコア本体よりも複雑な場合があります。こうした複雑さが、Contact Form 7の権限昇格脆弱性のようなセキュリティ欠陥を生み出しがちです。

意外に思われるかもしれませんが、中には起きている間じゅうこうした脆弱性を探し続けているハッカーも存在します。

新しいバージョンでは脆弱性が修正されるため、テーマとプラグインを常に最新の状態に保つことがサイトを守る有効な手段となります。新しいバージョンが公開されたら、速やかにWordPressのプラグインとテーマを更新しましょう。また、使用していないテーマやプラグインは削除することもお勧めします。

WordPressのハードニング

WordPressハードニングとは、仮にハッカーがサイトに侵入できたとしても、サイトを改ざんすることが極めて困難になるよう設計された一連のセキュリティ対策です。

ハードニングは幅広いトピックです。パスワードの変更のように簡単なものもあれば、ソルトやセキュリティキーの変更のように複雑なものもあります。

安全なWordPressハードニング手法については、別途詳細な記事をご用意していますので、ぜひ参考にしてください。

これらの対策により、WordPressサイトはContact Form 7の権限昇格攻撃だけでなく、以下のようなさまざまな攻撃からも守られます:

  • SQLインジェクション攻撃
  • DDoS攻撃
  • ブルートフォース攻撃
  • クロスサイトスクリプティング(XSS)攻撃

権限昇格ハッキングの仕組みを解説

このセクションはやや技術的ですが、WordPressサイトでContact Form 7プラグインを使用しているなら、ぜひ理解しておきたい内容です。

Contact Form 7の権限昇格脆弱性は、次の2段階で悪用されます:

  • ステップ1:WordPressサイトの低権限ユーザー(購読者)アカウントを取得する
  • ステップ2:脆弱性を利用して無制限の管理者アクセス権を奪取する

WordPressサイトでは、新規ユーザーにはデフォルトで最低レベルのアクセス権限である「購読者(Subscriber)」が割り当てられます。この権限だけではサイトの設定を変更する力はありません。しかし、Contact Form 7の権限昇格攻撃により、ハッカーは自分のユーザーロールを好きなものへ変更できてしまうのです。

これは具体的にどういう意味でしょうか?

Contact Form 7は、さまざまな種類のフォームを作成できる最も強力なWordPressプラグインの一つです。送信されたフォームデータは、WordPressサイトの「wp-content」フォルダに保存されます。

【2024年最新】WordPressのContact Form 7脆弱性を修正する完全ガイド|権限昇格攻撃への対処法
画像提供:Elegant Themes

通常、このフォルダにはサイトの各部から収集されたさまざまなコンテンツが含まれていますが、これらはすべて公開情報であり、機密情報や個人情報は含まれていません。

これは理にかなった仕様です。フォームにデータを送信する人は購読者であり、サイトの機密情報へのアクセス権を持つべきではないからです。

一方、フォーム自体は通常、管理者または編集者によって作成されます。これらのユーザーロールには、サイトの特定部分への自由度の高いアクセスが必要です。では、Contact Form 7はどうやって新規WordPressユーザーに管理者ではなく購読者のロールを割り当てているのでしょうか?

簡潔に言えば、Contact Form 7は「capability_type」というパラメータを使って、読み取り・編集・削除機能に関するユーザー権限を定義しています。脆弱性はこのパラメータ内部に存在し、ハッカーがWordPressのホームディレクトリに直接ファイルをアップロードできるようになっているのです。

このフォルダへのアクセスだけで、ハッカーはサイトを完全に改ざんしたり、スパム広告攻撃を仕掛けたりできる可能性があります。

場合によっては、攻撃がGoogleによるブラックリスト登録につながるほど危険なこともあります。

しかし、権限昇格脆弱性を悪用すると、さらに危険な攻撃が可能になります。wp-contentフォルダの外側にも、wp-configファイルや.htaccessファイルといった重要なファイルが存在します。

これらのファイルには、データベースの認証情報とサイトの設定が含まれています。つまり、Contact Form 7の権限昇格脆弱性を悪用したハッカーは、ユーザーロールのケイパビリティを改変することで、これらのファイルへのアクセス権を得られるのです。

【2024年最新】WordPressのContact Form 7脆弱性を修正する完全ガイド|権限昇格攻撃への対処法
画像提供:Xneelo

わずか数分で、ハッカーはサイト全体へのアクセス認証情報を入手できます。さらに悪いことに、幽霊管理者アカウントを作成し、サイト全体への直接かつ無制限のアクセス権を確保することも可能です。

これは非常に危険です。ハッカーはフォームを編集してwp-content外のファイルへのアクセス権を自分に与えられるだけでなく、フォームが受け付け可能なユーザー入力の種類を改変することもできます。この脆弱性は、事実上あらゆるユーザーロールにサイトへの変更を許してしまうのです。

無制限ファイルアップロード脆弱性を解説

履歴書や身分証明書など、ファイルを受け付けるフォームもあります。PDF、JPEG、PNG、GIFといった標準的な形式であれば問題ありません。

しかし、Contact Form 7プラグインの脆弱性により、受け付けるファイル形式を変更できてしまうケースがあります。この脆弱性は最近、Contact Form 7を使用する500万以上のサイトに影響を及ぼし、「無制限ファイルアップロード脆弱性」と呼ばれています。

無制限ファイルアップロード脆弱性とは、サイトがPHPやASPといった実行可能なファイル形式を受け付けてしまう状態を指します。特に.php.pngのような二重拡張子がないか、必ず確認してください。

これらのファイルはサイト上でコマンドや関数を実行します。つまり、ハッカーはContact Form 7で作成されたコンタクトフォーム経由で、悪意あるスクリプトを含むPHPファイルを送信できるのです。

これはXSS攻撃の一種であり、次のようなことが可能になります:

  • ハッカーがいつでもアクセスできるバックドアをサイトに仕掛ける
  • ログインページ経由でアクセスできる幽霊管理者ユーザーを作成する
  • 違法商品や薬物の販売・宣伝のためにサイトのコンテンツを改ざんする
  • 訪問者を悪意のあるサイトやアダルトサイトにリダイレクトする

ハッカーは一度サイトへのアクセス権を得れば、ほとんど労力をかけずに他にもさまざまな攻撃を効果的に仕掛けられます。可能な限り攻撃を未然に防ぐことが最善策です。

24時間体制のマルウェアスキャン機能とWordPressファイアウォールを備えたマルウェアスキャナーを導入し、将来の攻撃からサイトを守ることを強くお勧めします。

次にやるべきこと

ハッカーはサイトへの侵入手段をあらゆる角度から模索しています。ブルートフォース攻撃で認証情報を推測したり、XSS脆弱性を悪用したり、ブラウザのCookieを盗んだりと、その手法に終わりはありません。

セキュリティ脅威や攻撃からサイトを真に完全に守るには、MalCareのようなセキュリティプラグインの導入をお勧めします。ファイアウォールがハッキングの試みを積極的にブロックし、スキャナーが毎日サイトをチェックしてくれます。

また、WordPressハードニングのヒントも併せてご確認ください。MalCareのダッシュボードから数クリックでセキュリティを強化できます。

よくある質問(FAQ)

Contact Form 7は安全ですか?

いいえ。最新版には既知の脆弱性はありませんが、古いバージョンのContact Form 7にはセキュリティ欠陥が多数存在します。脆弱性を修正する最も簡単な方法は最新版への更新ですが、念のためサイトのマルウェアスキャンも実施することをお勧めします。

AkismetはContact Form 7と連携できますか?

はい。ただしAkismetはフォームへのスパム投稿を防ぐものであり、権限昇格脆弱性は修正できません。脆弱性を修正するには、直ちに最新版のContact Form 7へ更新することをお勧めします。

権限昇格とは何ですか?なぜ重要なのですか?

権限昇格とは、本来アクセスが制限されているサイトのファイルやデータベースに、ハッカーがアクセスできるようにする脆弱性です。この脆弱性を悪用すると、ハッカーはサイト上のあらゆる機密情報にアクセスし、コンテンツを自由に改ざんすることさえ可能になります。

権限昇格の最も一般的なメカニズムは何ですか?

ほとんどのWordPressプラグインやテーマには権限昇格の脆弱性が多数存在します。最も一般的な原因は、クロスサイトスクリプティング、不適切なCookie処理、弱いパスワードなどです。

Contact Form 7の良い代替プラグインはありますか?

Contact Form 7の代替となるプラグインはいくつかあります。セキュリティの観点からは、Ninja Forms、Gravity Forms、Visual Form Builderの最新版をお勧めします。

  1. WordPressプラグイン「Advanced Contact Form 7 DB」に深刻なSQLインジェクション(SQLi)脆弱性が発見

    アクティブインストール数4万件を超える人気のWordPressプラグイン「Advanced Contact Form 7 DB」において、非常に深刻なSQLインジェクション(SQLi)脆弱性が発見されました。このContact Form 7関連の脆弱性は3月26日に初めて報告され、修正を施した新バージョン1.6.1が4月10日に公開されました。しかし、修正版がリリースされたとはいえ、現在利用中のユーザーには依然として懸念材料が残ります。なぜなら、この脆弱性はサブスクライバー(購読者)レベルのアカウントしか持たない攻撃者によっても悪用され得るからです。 Advanced Contact Form

  2. WordPressのプッシュ通知マルウェアとリダイレクトハッキングへの対処方法

    ここ数週間、セキュリティ企業Astraの調査チームは、WordPressサイトで発生しているプッシュ通知型マルウェアを追跡しています。この攻撃キャンペーンは、WordPressサイトで継続的に発生しているリダイレクト(不正転送)キャンペーンと組み合わされて実行されています。 リダイレクト先として確認されている悪意のあるドメインには、inpagepush[.]com、asoulrox[.]com、iclickcdn[.]com、justcannabis[.]online、0.realhelpcompany[.]ga、fast.helpmart[.]ga/m[.]js?w=085 などがあります