Advanced Custom Fields: Extended Unauthenticated Privilege Escalation via `_acf_post_id` Validation Bypass (CVE-2026-8809)
by Unknown (public PoC repository) · 2026-07-05
- Severity
- Critical
- CVE
- CVE-2026-8809
- Category
- web
- Affected product
- Advanced Custom Fields: Extended (ACF Extended / "ACFE") WordPress plugin
- Affected versions
- >= 0.9.2.5, <= latest prior to fix (fixed in 0.9.2.6)
- Disclosed
- 2026-07-05
- Patch status
- patched
Tags
References
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-05 |
| Last Updated | 2026-05 |
| Author / Researcher | Unknown (public PoC repository) |
| CVE / Advisory | CVE-2026-8809 |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.8 |
| Status | PoC |
| Tags | wordpress, acf-extended, privilege-escalation, validation-bypass, unauthenticated, administrator-creation |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | Advanced Custom Fields: Extended (ACF Extended / “ACFE”) WordPress plugin |
| Versions Affected | >= 0.9.2.5, <= latest prior to fix (fixed in 0.9.2.6) |
| Language / Platform | PHP / WordPress |
| Authentication Required | No |
| Network Access Required | Yes |
Summary
ACF Extended’s after_validate_save_post() function trusts the attacker-controlled POST parameter _acf_post_id without any validation or authentication check. By manipulating this parameter, an attacker causes the function to take a cleanup code path that silently discards all validation errors not prefixed with acfe: — which disables both the role-permission-list check (acfe_field_user_roles::validate_front_value()) and the administrator-privilege-protection check (acfe_module_form_action_user::validate_action()). With those checks bypassed, wp_insert_user() is called with an attacker-supplied administrator role argument, creating a new administrator account without authentication.
Vulnerability Details
Root Cause
Missing validation/authentication on the _acf_post_id POST parameter allows an attacker to steer after_validate_save_post() into a validation-error cleanup branch that only honors errors carrying an acfe: prefix, silently discarding the two security checks that would otherwise block privilege escalation.
Attack Vector
- Submit a crafted request to an ACF Extended form-handling endpoint with a manipulated
_acf_post_idparameter. - The manipulated parameter causes
after_validate_save_post()to take the cleanup branch that discards validation errors lacking theacfe:prefix. - This disables the user-role validation and the administrator-privilege protection checks.
wp_insert_user()executes with an attacker-suppliedadministratorrole, creating a fully privileged WordPress account with no authentication required.
Impact
Unauthenticated creation of a WordPress administrator account, giving the attacker full control of the site (content, plugins, themes, users, data).
Environment / Lab Setup
Target: WordPress site running Advanced Custom Fields: Extended >= 0.9.2.5 (unpatched)
Attacker: Any HTTP client (CVE-2026-8809.py provided)
Proof of Concept
PoC Script
See
CVE-2026-8809.pyin this folder.
| |
The script locates the _acf_post_id value on the target page (falling back to a random guess if not found), generates random attacker credentials, builds and submits the crafted POST request that bypasses ACF Extended’s validation checks, and creates a new administrator account.
Detection & Indicators of Compromise
Signs of compromise:
- New, unrecognized administrator accounts appearing without a corresponding legitimate admin action.
- Form submissions to ACF Extended endpoints with anomalous
_acf_post_idvalues.
Remediation
| Action | Detail |
|---|---|
| Primary fix | Update Advanced Custom Fields: Extended to 0.9.2.6 or later |
| Interim mitigation | Audit for unauthorized administrator accounts; restrict access to ACF Extended form-handling endpoints until patched |
References
Notes
Mirrored from https://github.com/izxci/CVE-2026-8809 on 2026-07-05.
| |