
CVE-2026-78159 の概念実証エクスプロイト。The Events Calendar WordPress プラグインにおける、parse_array ウィジェットクラスのシンクを経由した未認証 RCE。
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
WordPress 用 The Events Calendar プラグインは、parse_array 関数を介して 6.17.3 以前のすべてのバージョンでリモートコード実行に対して脆弱です。これはウィジェットの 'classes' マップの検証が不十分であるため、プレーン配列のペイロードが is_safe_widget_instance() のオブジェクトチェックをバイパスし、Element_Classes::parse_array() 内の呼び出し可能オブジェクト呼び出しシンクに到達できることに起因します。これにより、認証されていない攻撃者がサーバー上でコードを実行できる可能性があります。悪用には、対象サイトで tribe_events 投稿のコメントが有効になっており、細工された wp:legacy-widget ブロックを含むコメントが少なくとも 1 件投稿されている必要があります。これは、do_blocks() がコメント領域を含む単一イベント HTML を処理するときに攻撃チェーンがトリガーされるためです。
| CVE | CVE-2026-78159 · CVE.org |
| CWE | CWE-94 |
| CVSS | Critical: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Product | The Events Calendar |
| Affected | 6.17.3 までのすべてのバージョン(含む) |
| Patched | 6.17.3.1 以降 |
| Auth | なし(ソースマップを参照) |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 のみ · ベンダー/クライアント開示パックであり、スキャナーではありません |
parse_array はシンクであり、ajax action= ではありません。HTTP は POST /wp-comments-post.php の後に GET でモデレーションプレビュー URL です。ウィジェットの idBase は tribe-widget-events-list であり、events-list ではありません。
POST/wp-comments-post.phpGET /event/lab-event/ で comment_post_ID を収集POST /wp-comments-post.php comment=<!-- wp:legacy-widget {idBase tribe-widget-events-list, instance.encoded php-serialize-base64, instance.hash 0} /-->302 Location に unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt) が含まれるその Location を GET: comments_template が未承認コメントを含めるTemplate_Bootstrap::get_v1_single_event_template_html do_blocks($html)Service_Provider::enable_rendering_widget_copied (render_block_data) unserialize allowed_classes false、is_safe_widget_instance はオブジェクトのみを拒否、プレーン配列を wp_hashrender_block_core_legacy_widget the_widget tribe-widget-events-listWidget_List setup_arguments array_merge instance(classes は存続、setup_template_vars は上書きしない)空の featured リスト -> widget-events-list.php の else 分岐 components/messages.phptec_classes($classes) -> Element_Classes::parse_array 文字列キー + is_callable 値 -> poc_witness_78159($results) が POCWitness78159 を出力モデレーションプレビュー GET の HTTP ボディに POCWitness78159 が含まれます。その文字列を含まない一般的なイベント HTML は該当しません。debug.log にも POCWitness78159 が追記される場合があります。
まずこれを実行: The Events Calendar を 6.17.3.1 以降に更新してください(Wordfence は CVE-2026-78006 もカバーするために 6.17.4.1 を推奨しています)。
アップグレード後の確認
CVE-2026-78159-Abraxas-Labs.py を再実行: マップされたウィットネスが現れないことを確認してください。すぐに更新できない場合
http://127.0.0.1:8088(またはバインドしたループバック)のみを対象にしてください。このスクリプトをインターネットに向けないでください。
python3 CVE-2026-78159-Abraxas-Labs.py
成功とは、レスポンスボディに上記のウィットネスが含まれることです。一般的な 200 HTML は該当しません。
再現に使用したループバックスタック。このフォルダ内の Dockerfile がソースからビルドする場合を除き、公式イメージです。
cd lab
docker compose up --force-recreate
YAML がローカルディレクトリをマウントする場合(バージョンテーブルからのプラグイン zip / ソースタグ)、脆弱な製品ツリーを Compose の隣にバインドしてください。127.0.0.1 以外は公開しないでください。
# CVE-2026-78159 (structured records)
- input: `https://nvd.nist.gov/vuln/detail/CVE-2026-78159`
- CWE: CWE-94
- published: 2026-09-12T08:16:24.377
## NVD description
The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.
## MITRE description
The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.
## Affected
- stellarwp The Events Calendar 0 affected
## References (JSON sources only)
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/common/src/Tribe/Utils/Element_Classes.php#L211
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Template_Bootstrap.php#L214
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/Tribe/Views/V2/Widgets/Service_Provider.php#L279
- https://plugins.trac.wordpress.org/browser/the-events-calendar/tags/6.17.3/src/views/v2/components/messages.php#L30
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667866%40the-events-calendar&new=3667866%40the-events-calendar
- https://plugins.trac.wordpress.org/changeset?reponame=&old=3667867%40the-events-calendar&new=3667867%40the-events-calendar
- https://www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
- https://github.com/advisories/GHSA-9c57-9fxg-8x9j
- https://nvd.nist.gov/vuln/detail/CVE-2026-78159
## GitHub advisory
The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all...
The The Events Calendar plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 6.17.3 via the parse_array function. This is due to insufficient validation of the widget 'classes' map, allowing a plain-array payload to bypass the is_safe_widget_instance() object check and reach the callable-invocation sink in Element_Classes::parse_array(). This makes it possible for unauthenticated attackers to execute code on the server. Exploitation requires that the targeted site has comments enabled on tribe_events posts and that at least one comment containing a crafted wp:legacy-widget block has been submitted, as the attack chain is triggered when do_blocks() processes the single-event HTML including the comment area.
この開示パックは GNU Affero General Public License v3.0 の下でライセンスされています。LICENSE を参照してください。
このパックはベンダー、サイト所有者、およびライセンスを受けたラボ向けです。スクリプトは 127.0.0.1 と通信します。所有していないシステムに対して使用することは Abraxas Labs によって許可されていません。保証はありません。