GiveWPのWordPress寄付プラグインに脆弱性、ハッカーがサーバー上でコマンドを実行可能に

WordPress用プラグイン「GiveWP」に最大深刻度の脆弱性が見つかりました。認証を行っていない攻撃者でも、ホスティングサーバー上で任意のコマンドを実行できる状態になっていました。

このセキュリティ問題はCVE-2026-82222として識別されており、GiveWPのバージョン4.16.7.1以前に影響します。脆弱性発見の報告は、バグ研究者のUdin Chan氏によって7月28日、Patchstack脆弱性インテリジェンスプラットフォームを通じて行われました。

GiveWPプラグインは10万件以上インストールされており、寄付の受付や募金キャンペーンの管理に利用されています。

Patchstackの研究者によると、この脆弱性の悪用には3つの異なる問題を組み合わせる必要があるといいます。

  1. PHPデータのデシリアライズに使われる安全でないヘルパー
  2. 攻撃者が制御可能なシリアライズ済みオブジェクトを保存してしまう寄付処理フロー
  3. プラグインに同梱されているライブラリ内に存在し、任意のシステムコマンドを呼び出せるガジェットチェーン

この脆弱性を悪用するには、攻撃者が対象サイトのアカウントを持っている必要があります。しかしPatchstackによれば、認証なしでアクセス可能な登録用アクションが存在するため、たとえ登録機能が無効化されていてもアカウントを作成できてしまうといいます。

「GiveWPは認証不要の登録アクション(give_action=user_register)を外部に公開しており、これはWordPressのusers_can_registerオプションを一切参照しません」とPatchstackは説明しています

「登録機能が無効化されているサイトであっても、攻撃者はアカウントを作成して認証クッキーを取得でき、その後は同じ手順で攻撃の残りの部分を実行できます」

認証を済ませた後、ハッカーは悪意のあるシリアライズ済みオブジェクトを自身のプロフィールに保存し、細工した寄付を送信することでプラグインのセッションデータベースにそれを注入できます。

「サーバーはHTTP 500を返す前に、ガジェットオブジェクトをwp_give_sessionsに書き込みます」と、Patchstackのサイバーセキュリティ研究者ジョージ・ジョンストン氏は述べています。

認証クッキーを使ってフロントエンドの任意のページをリクエストするだけで、サーバーはガジェットをデシリアライズし、攻撃者が仕込んだコマンドを実行してしまいます。

バージョン4.16.6から4.16.7.1までは依然として脆弱ですが、この悪用には対象サイトに「formBuilderSettings」を持たない旧式の寄付フォームが存在している必要があります。

Patchstackは、こうした条件はアップグレードされたインストール環境や、プラグインのオプションベースのフォームエディタを使用しているサイト、あるいは古いフォームをインポートまたは復元した場合に存在し得ると指摘しています。

GiveWPは8月27日にリリースしたバージョン4.16.7.2でこの脆弱性を修正しました。寄付処理中のシリアライズデータをブロックするとともに、複数のデシリアライズ箇所でオブジェクト生成を制限する対応が取られています。

さらに、このセキュリティアップデートでは、影響を受けたデータベースに既に保存されていたシリアライズ済みオブジェクトのペイロードも削除されます。

ただしPatchstackは、GiveWPの登録アクションが依然としてWordPressのユーザー登録設定を尊重していない点を指摘しています。とはいえ、この問題自体はもはやコード実行につながる形では悪用できないとのことです。

GiveWPを利用しているウェブサイト管理者は、CVE-2026-82222の悪用による被害を防ぐため、できるだけ早くセキュリティアップデートを適用することが推奨されます。

ハッカーは昨年、人気のネットワークレベル広告ブロッカーであるPi-holeを間接的に侵害するためにGiveWPを標的にし、寄付者3万人分の氏名とメールアドレスを流出させています。

翻訳元: https://www.bleepingcomputer.com/news/security/givewp-wordpress-donation-plugin-flaw-lets-hackers-execute-server-commands/

本記事は bleepingcomputer.com の記事を翻訳・要約したものです。