
Proof-of-Concept-Exploit für CVE-2026-78159, eine nicht authentifizierte RCE im WordPress-Plugin The Events Calendar über die parse_array-Widget-Klassen-Sink.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
Das The Events Calendar-Plugin für WordPress ist in allen Versionen bis einschließlich 6.17.3 über die Funktion parse_array für Remote Code Execution anfällig. Ursache ist eine unzureichende Validierung der Widget-classes-Map, wodurch eine Plain-Array-Payload die Objektprüfung is_safe_widget_instance() umgehen und die Callable-Invocation-Sink in Element_Classes::parse_array() erreichen kann. Dadurch ist es unauthentifizierten Angreifern möglich, Code auf dem Server auszuführen. Für die Ausnutzung muss die Zielseite Kommentare für tribe_events-Beiträge aktiviert haben und mindestens ein Kommentar mit einem manipulierten wp:legacy-widget-Block eingereicht worden sein, da die Angriffskette ausgelöst wird, wenn do_blocks() das Single-Event-HTML einschließlich des Kommentarbereichs verarbeitet.
| CVE | CVE-2026-78159 · CVE.org |
| CWE | CWE-94 |
| CVSS | Kritisch: 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produkt | The Events Calendar |
| Betroffen | alle Versionen bis 6.17.3 (einschließlich) |
| Gepatcht | 6.17.3.1 und später |
| Auth | keine (siehe Source Map) |
| Lizenz | GNU Affero GPL v3.0 |
| Lab | nur 127.0.0.1 · Vendor/Client-Disclosure-Pack, kein Scanner |
parse_array ist die Sink, keine ajax action=. HTTP ist POST /wp-comments-post.php, dann GET der Moderation-Preview-URL. Widget idBase ist tribe-widget-events-list, nicht 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 POCWitness78159Der HTTP-Body des Moderation-Preview-GET enthält POCWitness78159. Generisches Event-HTML ohne diesen String ist es nicht. debug.log kann ebenfalls POCWitness78159 anhängen.
Zuerst dies tun: Aktualisieren Sie The Events Calendar auf 6.17.3.1 oder neuer (Wordfence empfiehlt 6.17.4.1, um auch CVE-2026-78006 abzudecken).
Nach dem Upgrade überprüfen
CVE-2026-78159-Abraxas-Labs.py erneut gegen den gepatchten Build aus: Der zugeordnete Witness darf nicht erscheinen.Wenn Sie nicht sofort aktualisieren können
Zielen Sie nur auf http://127.0.0.1:8088 (oder das Loopback, an das Sie gebunden haben). Richten Sie dieses Skript nicht auf das Internet.
python3 CVE-2026-78159-Abraxas-Labs.py
Erfolg ist der Witness oben im Response-Body. Generisches 200-HTML ist es nicht.
Loopback-Stack zur Reproduktion. Offizielle Images, sofern nicht ein Dockerfile in diesem Ordner aus dem Quellcode baut.
cd lab
docker compose up --force-recreate
Binden Sie den verwundbaren Produkt-Tree neben Compose ein, wenn die YAML ein lokales Verzeichnis mountet (Plugin-Zip / Source-Tag aus der Versionstabelle). Veröffentlichen Sie nichts außer 127.0.0.1.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Plugin-Verzeichnis: the-events-calendar
Trac-Browser: 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.
Dieses Disclosure-Pack ist unter der GNU Affero General Public License v3.0 lizenziert. Siehe LICENSE.
Dieses Pack ist für den Vendor, den Seitenbetreiber und lizenzierte Labs bestimmt. Das Skript kommuniziert mit 127.0.0.1. Die Verwendung gegen Systeme, die Ihnen nicht gehören, ist von Abraxas Labs nicht autorisiert. Keine Gewährleistung.