
CVE-2026-78159에 대한 개념 증명 익스플로잇으로, The Events Calendar WordPress 플러그인의 parse_array 위젯 클래스 싱크를 통한 인증되지 않은 RCE입니다.
abraxaslabs.tech · github.com/abraxas · @abraxas_null · CVE-2026-78159
The Events Calendar 6.17.3 — stellarwp
WordPress용 The Events Calendar 플러그인은 parse_array 함수를 통해 6.17.3 이하의 모든 버전에서 원격 코드 실행(Remote Code Execution)에 취약합니다. 이는 위젯 'classes' 맵에 대한 검증이 불충분하기 때문에 발생하며, 일반 배열(plain-array) 페이로드가 is_safe_widget_instance() 객체 검사를 우회하여 Element_Classes::parse_array()의 호출 가능(callable) 호출 싱크에 도달할 수 있게 합니다. 이로 인해 인증되지 않은 공격자가 서버에서 코드를 실행할 수 있습니다. 악용을 위해서는 대상 사이트에서 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 |
| Product | The Events Calendar |
| Affected | 6.17.3 이하 모든 버전 (포함) |
| Patched | 6.17.3.1 및 이후 버전 |
| Auth | 없음 (소스 맵 참조) |
| License | GNU Affero GPL v3.0 |
| Lab | 127.0.0.1 전용 · 벤더/클라이언트 공개 팩, 스캐너 아님 |
parse_array는 싱크이며 ajax action=이 아닙니다. HTTP는 POST /wp-comments-post.php 후 GET 검토 미리보기 URL입니다. 위젯 idBase는 events-list가 아닌 tribe-widget-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 POCWitness78159검토 미리보기 GET의 HTTP 본문에 POCWitness78159가 포함됩니다. 해당 문자열이 없는 일반 이벤트 HTML은 아닙니다. debug.log에도 POCWitness78159가 추가될 수 있습니다.
먼저 이것을 하십시오: The Events Calendar를 6.17.3.1 이상으로 업데이트하십시오 (Wordfence는 CVE-2026-78006도 함께 커버하려면 6.17.4.1을 권장합니다).
업그레이드 후 검증
CVE-2026-78159-Abraxas-Labs.py를 다시 실행하십시오: 매핑된 증거가 나타나지 않아야 합니다.즉시 업데이트할 수 없는 경우
오직 http://127.0.0.1:8088 (또는 바인딩한 루프백)만 대상으로 하십시오. 이 스크립트를 인터넷을 향해 지정하지 마십시오.
python3 CVE-2026-78159-Abraxas-Labs.py
성공은 응답 본문에 위의 증거가 있는 것입니다. 일반 200 HTML은 아닙니다.
재현에 사용된 루프백 스택. 이 폴더의 Dockerfile이 소스에서 빌드하지 않는 한 공식 이미지입니다.
cd lab
docker compose up --force-recreate
YAML이 로컬 디렉터리를 마운트하는 경우 (버전 표의 플러그인 zip / 소스 태그) 취약한 제품 트리를 Compose 옆에 바인딩하십시오. 127.0.0.1 외에는 아무것도 게시하지 마십시오.
www.wordfence.com/threat-intel/vulnerabilities/id/cc2ccfeb-6df6-4fee-96a5-94f8dd131f7c?source=cve
Plugin directory: 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.
이 공개 팩은 GNU Affero General Public License v3.0에 따라 라이선스가 부여됩니다. LICENSE를 참조하십시오.
이 팩은 벤더, 사이트 소유자, 라이선스된 랩을 위한 것입니다. 스크립트는 127.0.0.1과 통신합니다. 소유하지 않은 시스템에 대해 사용하는 것은 Abraxas Labs에 의해 승인되지 않습니다. 보증은 없습니다.