
Proof-of-concept exploit per CVE-2026-78159, un RCE non autenticato nel plugin WordPress The Events Calendar tramite il sink delle classi widget parse_array.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
Il plugin The Events Calendar per WordPress è vulnerabile a Remote Code Execution in tutte le versioni fino alla 6.17.3 inclusa, tramite la funzione parse_array. Ciò è dovuto a una validazione insufficiente della mappa 'classes' del widget, che consente a un payload di tipo plain-array di aggirare il controllo sugli oggetti is_safe_widget_instance() e raggiungere il sink di invocazione callable in Element_Classes::parse_array(). Questo rende possibile per attaccanti non autenticati eseguire codice sul server. Lo sfruttamento richiede che il sito preso di mira abbia i commenti abilitati sui post tribe_events e che sia stato inviato almeno un commento contenente un blocco wp:legacy-widget appositamente creato, poiché la catena di attacco viene attivata quando do_blocks() elabora l'HTML del singolo evento, inclusa l'area dei commenti.
| 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 | tutte le versioni fino alla 6.17.3 (inclusa) |
| Patched | 6.17.3.1 e successive |
| Auth | nessuna (vedi source map) |
| License | GNU Affero GPL v3.0 |
| Lab | solo 127.0.0.1 · pacchetto di divulgazione per vendor/client, non uno scanner |
parse_array è il sink, non un'azione ajax=. L'HTTP è POST /wp-comments-post.php poi GET dell'URL di anteprima della moderazione. L'idBase del widget è tribe-widget-events-list, non events-list.
POST/wp-comments-post.phpGET /event/lab-event/ harvest 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 includes unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)GET that Location: comments_template includes the unapproved commentTemplate_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 rejects objects only, wp_hash the plain arrayrender_block_core_legacy_widget the_widget tribe-widget-events-listWidget_List setup_arguments array_merge instance (classes survives; setup_template_vars does not overwrite it)empty featured list -> widget-events-list.php else branch components/messages.phptec_classes($classes) -> Element_Classes::parse_array string key + is_callable value -> poc_witness_78159($results) echoes POCWitness78159Il corpo HTTP del GET di anteprima della moderazione contiene POCWitness78159. Un HTML di evento generico senza quella stringa non è quello giusto. debug.log può anche aggiungere POCWitness78159.
Fai questo per primo: Aggiorna The Events Calendar alla 6.17.3.1 o successiva (Wordfence raccomanda la 6.17.4.1 per coprire anche CVE-2026-78006).
Verifica dopo l'aggiornamento
CVE-2026-78159-Abraxas-Labs.py contro la build corretta: il witness mappato non deve apparire.Se non puoi aggiornare immediatamente
Prendi di mira solo http://127.0.0.1:8088 (o il loopback su cui hai fatto il bind). Non puntare questo script verso internet.
python3 CVE-2026-78159-Abraxas-Labs.py
Il successo è il witness sopra nel corpo della risposta. Un HTML 200 generico non è quello giusto.
Stack loopback usato per la riproduzione. Immagini ufficiali a meno che un Dockerfile in questa cartella non venga compilato dai sorgenti.
cd lab
docker compose up --force-recreate
Collega l'albero del prodotto vulnerabile accanto a Compose se lo YAML monta una directory locale (zip del plugin / tag sorgente dalla tabella delle versioni). Non pubblicare nulla tranne 127.0.0.1.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Directory dei plugin: the-events-calendar
Browser 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.
Questo pacchetto di divulgazione è rilasciato sotto la GNU Affero General Public License v3.0. Vedi LICENSE.
Questo pacchetto è destinato al vendor, al proprietario del sito e ai lab autorizzati. Lo script comunica con 127.0.0.1. Usarlo contro sistemi di cui non sei proprietario non è autorizzato da Abraxas Labs. Nessuna garanzia.