
Proof-of-concept de exploit para CVE-2026-78159, um RCE não autenticado no plugin The Events Calendar para WordPress através do sink parse_array das classes de widget.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
O plugin The Events Calendar para WordPress é vulnerável a Execução Remota de Código em todas as versões até, e incluindo, a 6.17.3 através da função parse_array. Isso se deve à validação insuficiente do mapa 'classes' do widget, permitindo que um payload de array simples contorne a verificação de objeto is_safe_widget_instance() e alcance o sink de invocação de callable em Element_Classes::parse_array(). Isso torna possível que atacantes não autenticados executem código no servidor. A exploração exige que o site alvo tenha comentários habilitados em posts tribe_events e que pelo menos um comentário contendo um bloco wp:legacy-widget manipulado tenha sido enviado, pois a cadeia de ataque é acionada quando do_blocks() processa o HTML do evento único, incluindo a área de comentários.
| CVE | CVE-2026-78159 · CVE.org |
| CWE | CWE-94 |
| CVSS | Crítico: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produto | The Events Calendar |
| Afetado | todas as versões até 6.17.3 (inclusive) |
| Corrigido | 6.17.3.1 e posteriores |
| Autenticação | nenhuma (ver mapa de origem) |
| Licença | GNU Affero GPL v3.0 |
| Lab | apenas 127.0.0.1 · pacote de divulgação para fornecedor/cliente, não é um scanner |
parse_array é o sink, não uma ação ajax=. O HTTP é POST /wp-comments-post.php e depois GET da URL de pré-visualização de moderação. O idBase do widget é tribe-widget-events-list, não events-list.
POST/wp-comments-post.phpGET /event/lab-event/ coleta 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 inclui unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)GET nesse Location: comments_template inclui o comentário não aprovadoTemplate_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 rejeita apenas objetos, wp_hash do array simplesrender_block_core_legacy_widget the_widget tribe-widget-events-listWidget_List setup_arguments array_merge instance (classes sobrevive; setup_template_vars não o sobrescreve)lista featured vazia -> widget-events-list.php ramo else components/messages.phptec_classes($classes) -> Element_Classes::parse_array chave string + valor is_callable -> poc_witness_78159($results) ecoa POCWitness78159O corpo HTTP do GET de pré-visualização de moderação contém POCWitness78159. HTML genérico de evento sem essa string não conta. debug.log também pode acrescentar POCWitness78159.
Faça isto primeiro: Atualize o The Events Calendar para 6.17.3.1 ou mais recente (a Wordfence recomenda 6.17.4.1 para também cobrir o CVE-2026-78006).
Verifique após a atualização
CVE-2026-78159-Abraxas-Labs.py contra a build corrigida: o testemunho mapeado não deve aparecer.Se não puder atualizar imediatamente
Alvo apenas http://127.0.0.1:8088 (ou o loopback que você vinculou). Não aponte este script para a internet.
python3 CVE-2026-78159-Abraxas-Labs.py
Sucesso é o testemunho acima no corpo da resposta. HTML genérico 200 não conta.
Stack de loopback usada para reproduzir. Imagens oficiais, a menos que um Dockerfile nesta pasta faça build a partir do código-fonte.
cd lab
docker compose up --force-recreate
Vincule a árvore do produto vulnerável ao lado do Compose se o YAML montar um diretório local (zip do plugin / tag de origem da tabela de versões). Não publique nada exceto 127.0.0.1.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Diretório de plugins: the-events-calendar
Navegador 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.
Este pacote de divulgação é licenciado sob a GNU Affero General Public License v3.0. Ver LICENSE.
Este pacote é para o fornecedor, o proprietário do site e labs licenciados. O script se comunica com 127.0.0.1. Usá-lo contra sistemas que você não possui não é autorizado pela Abraxas Labs. Sem garantia.