WordPressで広く使われているプラグイン「The Events Calendar」に存在する、認証不要で悪用可能な2つの重大な脆弱性チェーンにより、攻撃者がリモートからコードを実行し、対象サイトを完全に乗っ取れることが判明しました。Wordfence Argusが発見したこれらの欠陥は、プラグインのバージョン6.17.4以前に影響し、バージョン6.17.4.1で修正されています。
The Events Calendarは60万を超えるWordPressサイトで稼働しており、イベントスケジュールの公開、参加登録、コミュニティコンテンツの管理にこのプラグインを利用している組織にとって、今回の脆弱性は重大なリスクとなります。
悪用が成功すると、マルウェアの展開、機密データの窃取、管理者アカウントの乗っ取り、対象サーバーの完全な制御が可能になります。
アンチマルウェアソフトウェア
2つの重大なRCEチェーン
この問題はCVE-2026-78006およびCVE-2026-78159として追跡されており、いずれもCVSSスコアは10点満点中9.8という高い深刻度です。
CVE-2026-78006はThe Events Calendarのバージョン6.17.4以前に影響し、認証を経ないPHPオブジェクトインジェクションを可能にし、リモートコード実行につながります。
この欠陥は、安全でないオブジェクトのデシリアライズを防ぐために用意されているプラグインの`is_safe_widget_instance()`検証ルーチンに存在します。
しかし、Wordfenceの研究者は、`__unserialize()`や`__wakeup()`といったPHPのマジックメソッドが実行可能であることを発見しました。しかもPHPは、この検証ルーチンがその結果を処理するより前に、シリアライズされた入力を解析してしまいます。
攻撃者は、不正な形式のシリアライズペイロードを使うことで、この安全性チェックを回避しつつ、その後の実行フローで危険なデシリアライズを引き起こすことができます。
結果として生じるガジェットチェーンは、プラグインの`Lazy_Post_Collection`クラスに接続します。ここでは攻撃者が制御する値がPHPの`array_map()`関数で使用され得ます。
`system`のような呼び出し可能な関数を通じてOSコマンドを渡すことで、攻撃者はWebサーバープロセスの権限でコマンドを実行できてしまいます。
2つ目の欠陥であるCVE-2026-78159は、バージョン6.17.3以前に影響します。この脆弱性は、シリアライズされたPHPオブジェクトを必要としない、別の任意コール可能オブジェクト実行の経路を利用します。代わりに攻撃者は、オブジェクト安全性チェックを通過し、プラグインのCSSクラス処理ロジックに到達するよう細工された配列を渡すことができます。
どちらの脆弱性も、プラグインのイベントページのレンダリング処理に起因しています。The Events Calendarは、コメント欄を含むイベント単体ページ全体をバッファリングします。
そして、その出力をWordPressの`do_blocks()`関数に渡します。通常、WordPressは投稿コンテンツ内のGutenbergブロックを処理するのであって、訪問者のコメント内は対象としません。しかし、このプラグインがレンダリング済みページ全体に対して`do_blocks()`を使用しているため、コメント内に埋め込まれた攻撃者制御のGutenberg形式のマークアップがブロックパーサーにまで到達してしまいます。
WordPressのコメントサニタイズ処理は、Gutenbergがブロックマークアップに使用するHTMLコメント区切り文字をそのまま保持します。そのため、認証を経ない攻撃者は、イベントページのコメントを通じて悪意ある`wp:legacy-widget`ブロックを送信できてしまいます。
重要なのは、悪用にコメントの承認が不要である点です。WordPressはコメント投稿者に対し、自分の承認待ちコメントをプレビューできるモデレーションハッシュURLを提供しています。攻撃者はこのプレビュー機能を利用して、モデレーターが確認する前に悪意あるブロックを起動させることができます。
この攻撃には、イベントページでコメントが有効になっていることに加え、The Events Calendarの「イベントページにコメントを表示する」設定が有効になっていることが前提条件となります。
2つ目の脆弱性は、プラグインの`Element_Classes::parse_array()`関数を悪用するものです。このコードは動的に生成されるCSSクラスをサポートすることを目的としていますが、PHPの`is_callable()`の使い方が、実行を安全なクロージャに制限するのではなく、グローバルに利用可能な関数名を受け入れてしまっています。
ハッキング&クラッキング
攻撃者は制御可能なパラメータを注入し、WordPress内部で`wp_update_user()`を呼び出すことができます。これにより、権限チェックを経ることなく、管理者ユーザー(ID 1)のパスワードをリセットできてしまいます。管理者としてログインした後、攻撃者は悪意あるプラグインをアップロードし、リモートコード実行を達成できます。
Wordfenceは2026年8月にこれらの脆弱性をStellarWPに開示しました。ベンダーは8月24日に報告を確認し、修正パッチをリリースしています。バージョン6.17.4.1が完全な修正版となります。
管理者は直ちにThe Events Calendarをバージョン6.17.4.1以降に更新する必要があります。さらに、不要であればイベントページのコメント機能を無効化し、管理者アカウントとインストール済みプラグインに不正な変更がないか確認し、不審なコメント投稿やモデレーションプレビューへのリクエストがないかサーバーログを調査することが推奨されます。
Wordfence Premium、Care、Responseの各顧客には8月22日にファイアウォール保護が提供され、無料版のWordfenceユーザーには9月21日に保護ルールが提供される予定です。
SOCを最新の状態に保ち、活発なマルウェアやフィッシングの出現から24時間以内に対応しましょう。 ANYRUNを試して早期検知でインシデントを未然に防ぎましょう。
翻訳元: https://gbhackers.com/wordpress-events-calendar-vulnerabilities/