世界を動かす技術を、日本語で。

公式の「Gravity Forms」プラグインに見つかったマルウェアがサプライチェーンの侵害を示唆

概要

  • 2025年7月、 Gravity Forms プラグインに対する サプライチェーン攻撃 が発覚
  • バックドアは バージョン2.9.12 で発見、 composerや手動ダウンロード が主な感染経路
  • gravityapi.orgドメイン経由で WordPressサイト情報を外部送信、マルウェア設置
  • バージョン2.9.13 で修正済み、 Namecheap が悪用ドメインを停止
  • 影響範囲は限定的、 迅速なアップデートと確認 が推奨

Gravity Formsプラグインへのサプライチェーン攻撃概要

  • 2025年7月11日、 Gravity Forms プラグインの公式配布パッケージ内に マルウェア 混入を確認
  • 初期報告により、 gravityforms.com からのダウンロードファイル内に 不審なHTTPリクエスト が含まれていることが判明
  • マルウェアは gravityapi.org へのPOST通信を行い、 サイト情報やプラグインリストなどを外部送信 する挙動
  • 送信内容には サイトURL、サイト名、WordPressバージョン、PHPバージョン、アクティブテーマ、ユーザー数等 が含まれる
  • gravityapi.orgは 2025年7月8日に新規登録 されたドメインで、 悪意ある目的 で使用されたと推測

技術的詳細と感染挙動

  • マルウェアは update_entry_detail関数 としてgravityforms/common.php内に実装
    • プラグイン有効化時に plugins_loadedアクションフック で自動実行
    • サイト情報をgravityapi.org/sitesへPOSTし、 レスポンス内容をファイルとして保存
    • レスポンスには base64エンコードされたPHPコード が含まれ、WordPress内の任意パスに保存される
  • 例: wp-includes/bookmark-canonical.php などに 不正なPHPファイル として展開
  • 保存されたファイルは、 WordPress管理・最適化ツールを装うマルウェア で、さらなる攻撃の踏み台となる恐れ

バージョン・感染範囲・対策

  • 感染バージョン:2.9.12(最新)、2.9.11.1などにも偽装URLあり
  • 2.9.13で修正版リリース、公式サイトからの再ダウンロードでマルウェア除去可能
  • Namecheap がgravityapi.orgドメインを停止し、さらなる悪用を防止
  • composerや手動ダウンロード によるインストールのみ感染、 自動アップデート経由では感染報告なし
  • 大規模ホスティング会社の調査でも感染拡大なし、短期間のみ配布された可能性

検知・対応方法

  • サイト内に wp-includes/bookmark-canonical.php などの不審ファイルがないか確認
  • gravityformsプラグインを 2.9.13以上にアップデート
  • サーバーログで gravityapi.orgへの通信履歴193.160.101.6からのリクエスト をチェック
  • 不審ファイル発見時は 削除し、管理者パスワード等の変更も推奨

今後の注意点と推奨対応

  • サプライチェーン攻撃は 公式配布元でも発生し得る ため、 信頼できる経路からのダウンロード 徹底
  • プラグイン・テーマは 常に最新バージョンを維持
  • 不審な通信やファイル生成の監視 を日常的に行う体制構築
  • 公式からの 緊急アップデート情報やアナウンスに迅速対応

参考:攻撃の全体像と関連情報

  • Patchstack による調査で、同時期に Groundhogg プラグインにも類似のサプライチェーン攻撃が発生
  • 今回の攻撃は 標的型・短期間配布 のため、被害範囲は限定的
  • Gravity Forms 開発元RocketGeniusも即座に調査・対応を公表

まとめ

  • Gravity Forms 2.9.12 の一部配布パッケージに マルウェア混入
  • 2.9.13以降へ速やかにアップデート し、不審ファイルの有無を確認
  • サプライチェーン攻撃への 警戒と監視体制強化 が今後も重要

Hackerたちの意見

フォームをチェックする前にノンスを使っていれば、かなりの問題が防げたはず。言い換えれば、急にたくさんの手作業が必要になるってことだね。

自分は技術的なバックグラウンドがあるから理解できるけど、イギリス人としてはこういう文はいつも面白いんだよね。

この供給の脆弱性を見つけたのは、熱心なシステムオペレーターのおかげだね(遅いHTTPリクエストを追跡してた)。同じように、xzの脆弱性も、変わったSSHログインのパフォーマンスの低下を見ていた熱心な開発者によって発見されたんだ。

マルウェアはパフォーマンスに明らかな影響を与えてたけど、今はすごく速くなってるし、ネットワークも変なことをしてるから、基本的に見分けるのが難しくなってる。もちろん、悪者たちもますます巧妙になってるし、私たちはより多くのコンポーネントを多様なソースから組み合わせてシステムを作ってる。長期的な視点で考えると、インフラ全体が少し信頼できなくなるのが心配だな。

これってどういうこと?最も可能性が高い説明は、GravityFormsの中にいる悪意のある人が何かを忍び込ませたってこと?記事の中では何も見なかったけど、見落としたかもしれない。

Jenkinsみたいな侵害されたCIパイプラインか、マルウェアに感染した開発者のマシンだった可能性もあるね。

サーバーからの許可されたアウトゴーイングのインターネットトラフィックを許可してるの?最近作られたドメインに対して?このマルウェアはあなたのためのものだよ。

このマルウェアを特定して、広がるのを防ぐために行動を起こしたのは素晴らしいね。ただ、記事には一つ小さな間違いがあって、思わず二度見しちゃった。ページの一番上にある最新の更新は、「Update 7-12-2025 06:00 UTC」じゃなくて、今の未来の日付「08-11-2025」になってるべきだと思う。著者が間違った数字を増やしちゃったんじゃないかな。

もちろん、著者はどの数字が何を意味するのか混乱してるね。アメリカの日付を使って、ダッシュを使ってISO風に見せようとしても、順番やパディングを間違えたらこうなるってことだ。

Ac1dB1tch3zのABが来たよ。

これってどのくらい影響あるの?インターネットの90%のサイト?それとも、ほんの数個のトラフィックの少ないサイト?

その中間くらいかな。Gravity Formsはすごく人気のあるプレミアムWordPressプラグインだよ。俺は何個かWordPressサイトを運営してるけど(本当は別のプラットフォームが良かったけどね)、Gravity Formsのデザインと機能は大体のプラグインよりも優れてると思う(CPUを結構食うけど)。普段は問題もないし、開発者としてはトラブルチケットを出したときのRocket Geniusの対応には満足してる。小規模から中規模の組織でGravity Formsを使ってるところはかなり多いはず。具体的な数字は分からないけど、wordpress.orgの人気統計は主に無料プラグインのインストールを反映してるから、プレミアムプラグインの数は分からないけど、かなりの数のサイトが多くのトラフィックを扱ってるはず。追記:影響を受けた可能性のあるサイトの数だね。幸いにも、実際に妥協されたパッケージを受け取ったサイトは少数だったから、メインの自動配信チェーンには入らなかったんだ。

サイトからそのバージョンを手動でダウンロードしたサイトはごく少数で、ほとんどはAPIゲートウェイを通じてプレミアム(有料)アップデートファイルを受け取ってると思う。 > Gravity Formsプラグイン内からのライセンス管理、自動更新、アドオンのインストールを扱うGravity APIサービスは一切妥協されていない。あのサービスを通じて管理される全てのパッケージ更新は影響を受けていないよ。

RocketGeniusのスタッフの一人から確認が取れたんだけど、マルウェアは手動ダウンロードとプラグインのComposerインストールにだけ影響するらしい。ふぅ。

公式のGravity Formsの投稿[0]によると、直接ウェブサイトからダウンロードしたりComposerでインストールした場合にのみ妥協されたことになるみたい。見たところ、Composerインストールの方法はプラグイン内の自動更新機能と同じGravity Forms APIを使ってインストールパッケージを取得してる。彼らのWP-CLIプラグインも同じメカニズムを使ってるね。Gravity Formsの開発者がこの事件を調査するために第三者のセキュリティ会社を雇うかどうかが興味深いところだ。今のところ、そのことには触れてないけど。[0] https://www.gravityforms.com/blog/security-incident-notice/

Web Formsのために259ドルの拡張機能があるって、ちょっとおかしいと思うのは俺だけ?これってWordPressがひどく壊れてるのか、WordPressエコシステムが詐欺師の遊び場になってるのか、無知な非技術系のWordPressユーザーが多いのか、それともその全部なの?

もちろん、全部3つだね。