abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
WordPress 的 The Events Calendar 插件在所有版本(包括 6.17.3)中,通过 parse_array 函数存在远程代码执行漏洞。这是由于对 widget 的 'classes' 映射验证不足,允许纯数组载荷绕过 is_safe_widget_instance() 对象检查,并到达 Element_Classes::parse_array() 中的可调用函数调用汇聚点。这使得未经身份验证的攻击者可以在服务器上执行代码。利用该漏洞需要目标站点在 tribe_events 文章上启用了评论功能,并且至少已提交一条包含精心构造的 wp:legacy-widget 块的评论,因为当 do_blocks() 处理包含评论区域的单事件 HTML 时会触发攻击链。
| CVE | CVE-2026-78159 · CVE.org |
| CWE | CWE-94 |
| CVSS | 严重:9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| 产品 | The Events Calendar |
| 受影响 | 所有版本 直至 6.17.3(含) |
| 已修复 | 6.17.3.1 及更高版本 |
| 认证 | 无(见源码映射) |
| 许可证 | GNU Affero GPL v3.0 |
| 实验环境 | 仅限 127.0.0.1 · 供应商/客户披露包,非扫描器 |
parse_array 是汇聚点,而非 ajax action=。HTTP 流程为 POST /wp-comments-post.php,然后 GET 审核预览 URL。Widget 的 idBase 是 tribe-widget-events-list,而非 events-list。
POST/wp-comments-post.phpGET /event/lab-event/ 采集 comment_post_IDPOST /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)GET 该 Location: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.php审核预览 GET 的 HTTP 响应体包含 POCWitness78159。不含该字符串的通用事件 HTML 不算。debug.log 也可能追加 POCWitness78159。
首先执行: 将 The Events Calendar 更新至 6.17.3.1 或更高版本(Wordfence 建议 6.17.4.1,以同时覆盖 CVE-2026-78006)。
升级后验证
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 外不要发布任何内容。
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
插件目录:the-events-calendar
# 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 授权。不提供任何担保。
tec_classes($classes) -> Element_Classes::parse_array 字符串键 + is_callable 值 -> poc_witness_78159($results) 输出 POCWitness78159Abraxas Labs:abraxaslabs.tech · github.com/abraxas · @abraxas_null