
Proof-of-concept d'exploit pour CVE-2026-78159, une RCE non authentifiée dans le plugin WordPress The Events Calendar via le sink des classes de widget parse_array.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
Le plugin The Events Calendar pour WordPress est vulnérable à une exécution de code à distance dans toutes les versions jusqu'à 6.17.3 incluse, via la fonction parse_array. Cela est dû à une validation insuffisante de la map 'classes' du widget, permettant à une charge utile de type tableau simple de contourner la vérification d'objet is_safe_widget_instance() et d'atteindre le point d'invocation appelable dans Element_Classes::parse_array(). Cela permet à des attaquants non authentifiés d'exécuter du code sur le serveur. L'exploitation nécessite que le site ciblé ait les commentaires activés sur les publications tribe_events et qu'au moins un commentaire contenant un bloc wp:legacy-widget forgé ait été soumis, car la chaîne d'attaque est déclenchée lorsque do_blocks() traite le HTML de l'événement unique, y compris la zone de commentaires.
| CVE | CVE-2026-78159 · CVE.org |
| CWE | CWE-94 |
| CVSS | Critique : 9.8 CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Produit | The Events Calendar |
| Affecté | toutes les versions jusqu'à 6.17.3 (incluse) |
| Corrigé | 6.17.3.1 et ultérieures |
| Auth | aucune (voir la source map) |
| Licence | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 uniquement · pack de divulgation fournisseur/client, pas un scanner |
parse_array est le point d'aboutissement, pas une action ajax=. Le HTTP est POST /wp-comments-post.php puis GET de l'URL d'aperçu de modération. L'idBase du widget est tribe-widget-events-list, pas events-list.
POST/wp-comments-post.phpGET /event/lab-event/ collecte 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 inclut unapproved=COMMENT_ID&moderation-hash=wp_hash(comment_date_gmt)GET cette Location : comments_template inclut le commentaire non approuvé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 rejette uniquement les objets, wp_hash le tableau simplerender_block_core_legacy_widget the_widget tribe-widget-events-listWidget_List setup_arguments array_merge instance (classes survit ; setup_template_vars ne l'écrase pas)liste featured vide -> widget-events-list.php branche else components/messages.phptec_classes($classes) -> Element_Classes::parse_array clé chaîne + valeur is_callable -> poc_witness_78159($results) affiche POCWitness78159Le corps HTTP du GET d'aperçu de modération contient POCWitness78159. Un HTML d'événement générique sans cette chaîne n'est pas le bon. debug.log peut également ajouter POCWitness78159.
À faire en premier : Mettez à jour The Events Calendar vers 6.17.3.1 ou une version ultérieure (Wordfence recommande 6.17.4.1 pour couvrir également CVE-2026-78006).
Vérifier après la mise à niveau
CVE-2026-78159-Abraxas-Labs.py contre la version corrigée : le témoin mappé ne doit pas apparaître.Si vous ne pouvez pas mettre à jour immédiatement
Ciblez uniquement http://127.0.0.1:8088 (ou le loopback que vous avez lié). Ne pointez pas ce script vers Internet.
python3 CVE-2026-78159-Abraxas-Labs.py
Le succès est le témoin ci-dessus dans le corps de la réponse. Un HTML 200 générique n'est pas le bon.
Pile loopback utilisée pour la reproduction. Images officielles sauf si un Dockerfile dans ce dossier construit depuis les sources.
cd lab
docker compose up --force-recreate
Liez l'arborescence du produit vulnérable à côté de Compose si le YAML monte un répertoire local (zip du plugin / tag source issu du tableau des versions). Ne publiez rien d'autre que 127.0.0.1.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Répertoire de plugins : the-events-calendar
Navigateur 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.
Ce pack de divulgation est sous licence GNU Affero General Public License v3.0. Voir LICENSE.
Ce pack est destiné au fournisseur, au propriétaire du site et aux labs sous licence. Le script communique avec 127.0.0.1. L'utiliser contre des systèmes que vous ne possédez pas n'est pas autorisé par Abraxas Labs. Aucune garantie.