WordPressプラグイン「Gravity Forms」がサプライチェーン攻撃を受け、マルウェアに感染したことが明らかになりました。公式サイトからの配布にもかかわらず、マルウェアが混入していたという事実は界隈で波紋を呼んでいます。

この記事では、Gravity Formsで発見されたマルウェアの内容と想定される被害、対策について詳しく解説します。自身のサイトがマルウェアに感染している可能性がある方、具体的な対策を知りたい方は、ぜひ最後までお読みください。

WordPressテーマ「GLUE」
WordPressテーマ「GLUE」
無料で高機能なWordPressテーマが手に入る。

Gravity Formsとは

Gravity Formsは、WordPressで多機能なフォームを作成できる商用プラグインです。

お問い合わせやアンケート、オンライン注文、支払いフォームなど、さまざまな種類のフォームを直感的な操作で簡単に構築できます。

高度な条件分岐や計算機能、外部サービスとの連携機能なども備えているため、Webサイト運営者や開発者にとって使い勝手の良い便利なツールとして広く利用されています。

Gravity Formsに見つかったマルウェア

WordPressプラグイン「Gravity Forms」の公式配布版にマルウェアが混入した要因は、サプライチェーン攻撃による可能性が高いといわれています。

マルウェアが混入していたのは、バージョン2.9.12の公式ダウンロードとComposerインストール経由です。いずれも、コマンド&コントロール(C2)サーバーである「gravityapi.org」に対し、HTTPリクエストを送信する仕組みを持っていることが確認されています。

開発元のRocketGenius社は報告を受けてから直ちに調査を開始し、当日中にマルウェアを削除した修正版のバージョン2.9.13をリリースしました。

また、攻撃に使用された「gravityapi.org」ドメインは、レジストラによって停止されています。

公式ダウンロード版のマルウェア感染は波紋を呼びましたが、配布は特定の時間帯に限られていたため、影響は限定的だと見られています。

Gravity Formsによるマルウェア感染の疑いがあるケース

Gravity Formsによるマルウェア感染の疑いがあるケースは、以下のとおりです。

■ 以下のIPアドレスからアクセスされている場合

  1. 185.193.89.19
  2. 193.160.101.6
■ 以下の外部通信先がある場合

  1. gravityapi.org
  2. gravityapi.io
■ 以下のファイル(関数・不審なコード)がある場合

  1. gravityforms/common.php内に「update_entry_detail()」がある
  2. includes/settings/class-settings.php内に「list_sections() 」がある
  3. wp-includes/bookmark-canonical.php内に不審なコードがある

これらの関数やコードが見られる場合は、マルウェアに感染している可能性があります。

また、不審なコードは正規機能に偽装されているため、一目見ただけでは悪意のある動作に気づきにくいかもしれません。特定には、専門知識が必要になる場合もあるでしょう。

Gravity Formsのマルウェア感染で想定される被害

Gravity Formsのマルウェア感染で想定される被害は、大きく分けると4つあります。

  1. サイト情報の外部送信
  2. サイトに不正ファイルの設置
  3. 管理者権限の乗っ取り
  4. 感染が持続する可能性

それぞれ詳しく見ていきましょう。

サイト情報の外部送信

Gravity Formsのマルウェアは、感染したWordPressサイトのさまざまな環境情報を、外部の悪意あるサーバーへ不正送信する機能を持ちます。これは、関数「update_entry_detail()」が原因です。

外部送信される情報は、多岐にわたります。

  1. サイトのURLやタイトル
  2. 管理画面のURL
  3. サイトの基本情報
  4. WordPressおよびPHPのバージョン
  5. 有効化されているプラグインやテーマ情報
  6. サーバーのOS情報

Patchstackの調査によれば、登録ユーザー数などの情報も送信対象に含まれていたようです。

これらの情報が攻撃者の手に渡ると、サイトの脆弱性を特定されるため、さらなる攻撃を仕掛ける足がかりとして悪用される危険性があります。

サイトに不正ファイルの設置

Gravity Formsのマルウェアには、外部サーバーからの応答にbase64でエンコードされたPHPコードが含まれています。これにより、特定のパスに不正なファイルとして書き込まれる可能性が高いです。

マルウェアはPHPコードを「wp-includes/bookmark-canonical.php」などのWordPressの純正ファイルに見せかける形で設置します。そのため、不正ファイルが発覚しにくくなり、検知から逃れられる可能性が高まるわけです。

また、不正ファイルは攻撃者がサイトを遠隔操作するための「バックドア」として機能する恐れがあります。設置されると、自由に侵入され、ありとあらゆる操作が実行されるでしょう。

管理者権限の乗っ取り

Gravity Formsのマルウェアには、関数「list_sections()」を通じて実行される「バックドア機能」があります。これにより、管理者権限が乗っ取られる危険性があります。

この機能が悪用されると、攻撃者は特定のシークレットキーを持つAPIリクエストを送信するだけで、新規の管理者アカウントをサイト内に作成可能です。

アカウントを持たれると、コンテンツの改ざんやユーザー情報の閲覧、サイト全体の削除などの行為が意のままに実行されるでしょう。

さらに、base64形式で送られてきたコードを関数「eval()」で実行する機能も含まれており、リモートコード実行(RCE)の可能性も高まります。RCEが実現すると、攻撃者はWebサイトのサーバー上で任意のコードを実行できるため、サイトの制御を完全に奪われかねません。

感染が持続する可能性

Gravity Formsで発見されたマルウェアは、WordPressの正規機能を偽装する形で埋め込まれているのが特徴です。そのため、表面上では動作が悪意のあるものに見えにくい場合があります。

データ送信やバックドアの動作も、通常のプラグインの挙動範囲内で行われるよう設定されています。

このステルス性により、一般的なセキュリティ製品や監視システムでも、マルウェアの存在や悪意のある活動の検知が困難になる可能性があるでしょう。

また、サイトに侵入されると、感染が長期にわたって持続する危険性が高まります。管理者が気づかないうちに情報が窃取されたり、不正活動が継続したりする恐れがあるため、被害が拡大する可能性も考えられます。

Gravity Formsのマルウェア感染対策

Gravity Formsのマルウェア感染対策は、以下のとおりです。

  1. 最新バージョンに更新する
  2. セキュリティプラグインをインストールする
  3. 代替プラグインを検討する
  4. 定期的にバックアップを取る

それぞれ詳しく解説します。

最新バージョンに更新する

Gravity Formsのマルウェア感染を防ぐための最善策は、プラグインを速やかに最新バージョンに更新することです。

開発元であるRocketGenius社は、マルウェアを削除した修正版のバージョン2.9.13をリリースしています。

アップデートすれば、マルウェアが含まれていた問題のあるコードが取り除かれるため、脆弱性からサイトを守れます。

Gravity Formsに限らず、利用しているプラグインやテーマは常に最新の状態に保つ習慣をつけましょう。自動更新機能の利用は有効ですが、更新前に互換性の問題がないか確認してください。

セキュリティプラグインをインストールする

WordPressをサイバー攻撃から守るには、セキュリティプラグインのインストールが有効です。常に稼働させておけば、プラグインに脆弱性が見つかってもリスクを軽減できます。

おすすめは「Wordfence Security」です。

不正なログイン試行のブロックやマルウェアのスキャン、ファイアウォール機能による攻撃からの保護など、サイトの安全を確保してくれます。

インストールすると、他のプラグインの脆弱性からもサイトを保護できる点が魅力です。

代替プラグインを検討する

Gravity Formsのマルウェア問題で信頼性・セキュリティに不安を感じた場合は、代替のフォームプラグインへの移行も検討しましょう。

WordPressにはGravity Forms以外にも、高性能でセキュリティ対策が施されたフォームプラグインが沢山あります。

ユーザーからの評価が高く、セキュリティが確保されているプラグインは以下の3つです。

  1. Contact form7
  2. Jetpack Contact Form
  3. WPForms

代替プラグインを選ぶ際は、開発元が定期的にセキュリティアップデートを行っているか、脆弱性に関する情報公開の透明性を確認すべきです。移行作業には手間がかかりますが、長期的な視点でWebサイトの安全性を確保するには、必要な投資となるでしょう。

定期的にバックアップを取る

万が一の事態に備え、Webサイトのデータは定期的にバックアップしておきましょう。

バックアップは、セキュリティ対策の基本です。マルウェア感染やその他の問題が発生した場合でも、最新のバックアップデータがあれば、サイトを安全な状態に復旧できます。

バックアップをする際は、WordPressのデータベースだけでなく、プラグインやテーマ、アップロードしたファイルなど、サイト全体の内容を対象とすべきです。

バックアッププラグインを利用すれば、安全かつスムーズに実行できます。以下の記事でおすすめを紹介しているので、ぜひ参考にしてみてください。

復旧が困難な場合はプロへの依頼を検討すべき

WordPressサイトがマルウェアに感染し、復旧作業が困難な場合は、プロの復旧サービスを検討しましょう。

マルウェアの駆除やサイトの復旧作業は、専門知識と経験が必要になる場合があります。対処を間違えると、事態を悪化させたり重要なデータを失ったりするリスクがあるため注意が必要です。

プロの業者はマルウェアの特定から完全な駆除、脆弱性の特定と対策、再発防止のためのセキュリティ強化までサポートしてくれます。

感染源の調査や不正に作成されたバックドアの除去、サイト情報の漏洩状況の確認など、個人では難しい作業を確実に実施してくれる点が魅力です。

信頼と実績のある業者を選び、抱えている問題を根本から改善してください。

WordPressテーマ「GLUE」
WordPressテーマ「GLUE」
無料で高機能なWordPressテーマが手に入る。