
Эксплойт proof-of-concept для CVE-2026-78159 — неаутентифицированное RCE в плагине WordPress The Events Calendar через точку сброса классов виджета parse_array.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
Плагин The Events Calendar для WordPress уязвим к удалённому выполнению кода во всех версиях вплоть до 6.17.3 включительно через функцию parse_array. Это обусловлено недостаточной проверкой карты 'classes' виджета, что позволяет полезной нагрузке в виде простого массива обойти проверку объекта is_safe_widget_instance() и достичь точки вызова callable в Element_Classes::parse_array(). Это даёт возможность неаутентифицированным злоумышленникам выполнять код на сервере. Для эксплуатации требуется, чтобы на целевой сайте были включены комментарии для записей tribe_events и был отправлен хотя бы один комментарий, содержащий специально сформированный блок wp:legacy-widget, поскольку цепочка атаки срабатывает, когда 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 |
| Продукт | The Events Calendar |
| Затронуто | все версии вплоть до 6.17.3 (включительно) |
| Исправлено | 6.17.3.1 и новее |
| Аутентификация | отсутствует (см. карту исходников) |
| Лицензия | GNU Affero GPL v3.0 |
| Лаборатория | только 127.0.0.1 · пакет раскрытия для вендора/клиента, не сканер |
parse_array — это точка вызова (sink), а не 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_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_hash простого массиваrender_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) выводит POCWitness78159HTTP-тело GET предпросмотра модерации содержит 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 (или loopback, к которому вы привязались). Не направляйте этот скрипт в интернет.
python3 CVE-2026-78159-Abraxas-Labs.py
Успех — это свидетельство выше в теле ответа. Обычный 200 HTML — это не оно.
Loopback-стек, использованный для воспроизведения. Официальные образы, если только Dockerfile в этой папке не собирает из исходников.
cd lab
docker compose up --force-recreate
Привяжите дерево уязвимого продукта рядом с Compose, если YAML монтирует локальный каталог (zip плагина / тег исходников из таблицы версий). Не публикуйте ничего, кроме 127.0.0.1.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Каталог плагинов: the-events-calendar
Браузер Trac: plugins.trac.wordpress.org/the-events-calendar
Abraxas Labs: abraxaslabs.tech · github.com/abraxas · @abraxas_null
# 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. Без гарантий.