Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate as low-privilege WordPress user
-
DeliveryRequest GET /generate for authorization code
-
ExploitXOR IV to flip token type/user id
-
ExecutionHMAC still validates, decrypt yields Admin token
-
PersistAccess REST API as Administrator
-
ImpactInstall plugin / execute arbitrary code
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V15 - Secure Coding and Architecture Data authenticity verification
|
| Exploitation Conditions | Requires FaustWP plugin version < 1.8.11 installed and active on a headless WordPress site with the auth/token flow enabled. The attacker must be a logged-in non-administrator (e.g. Subscriber) able to reach GET /generate to obtain a valid authorization-code token envelope - this is the core prerequisite (PR:L). No administrator privileges and no victim user interaction are needed; exploitation is network-reachable and deterministic once an account and authorization code are obtained. Limiting factors: an existing low-privilege account (or open registration) and access to the token-generation endpoint; sites not running the vulnerable FaustWP versions or without the headless auth flow are unaffected. |
| Impact | This is a genuine high-priority vulnerability, not a CVSS-inflated one. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H = 8.8) is well-supported by the technical evidence: a low-privileged authenticated WordPress user (e.g. Subscriber) can deterministically forge an Administrator access token through a classic AES-CBC IV bit-flipping attack, because the FaustWP token envelope HMAC covers only the ciphertext and not the 16-byte IV. The vendor-confirmed commit (cda00de) and GHSA-q6pm-r77q-qcv3 make the root cause and impact unambiguous, and the shipped regression test demonstrates the exact byte manipulations (IV[1]^= 'c'^'t' to turn 'ac'→'at', IV[3]^= '2'^'1' to change the user id) that yield a valid Administrator token - a reliable, non-probabilistic exploit primitive with no cryptographic guesswork. Weighing signals: no CISA KEV entry and no EPSS score were provided, so there is no evidence of active in-the-wild exploitation, and no packaged public exploit is listed - but the advisory and test code together provide effectively a working recipe, meaning weaponization is trivial for a competent attacker. The main risk-limiting factor is the PR:L prerequisite (attacker needs an existing low-privilege account and reachable /generate endpoint) and the relatively narrow deployment footprint of the FaustWP plugin. Net: low real-world exploitation evidence today, but high exploitability and catastrophic impact (full site takeover / RCE) where the vulnerable plugin is installed - patch to 1.8.11 promptly. |
| Exploit ScenarioDerived | An attacker registers or already holds a non-administrator WordPress account (e.g. Subscriber) on a site running FaustWP < 1.8.11, then calls GET /generate to obtain a valid authorization-code token envelope. Because the HMAC does not cover the IV, they XOR chosen bytes into the IV to flip the CBC-decrypted first plaintext block from 'ac|2|<exp>' to 'at|1|<exp>', producing a valid Administrator access token while the HMAC still verifies. No public packaged exploit is listed, but the vendor's own regression test spells out the exact bit-flip mechanics, so weaponization is straightforward and grants full REST API access, admin-account creation, plugin installation, and arbitrary code execution. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 17, 2026
Authentication bypass in the FaustWP WordPress plugin before 1.8.11 lets an authenticated low-privilege user (PR:L - for example a Subscriber) tamper with a valid authorization-code envelope and obtain an Administrator access token, enabling full WordPress REST API access, administrator-account creation, plugin installation, and ultimately arbitrary code execution (CVSS 8.8, CWE-345). Because the token HMAC does not cover the 16-byte AES-CBC initialization vector, XOR-ing a few bits into the IV deterministically rewrites the first decrypted block so that a Subscriber's "ac|2|<exp>" authorization code becomes "at|1|<exp>" - an admin access token - while the HMAC still validates. Exploitation is network-reachable and needs only a logged-in account able to call GET /generate plus the plugin's headless auth flow being active; no admin privileges and no victim interaction are required. No public exploit code or confirmed in-the-wild exploitation was identified at time of analysis, though the published patch diff and regression tests make the technique trivially reproducible.
RemediationAI
Vendor-released patch: upgrade the @faustwp/wordpress-plugin WordPress plugin to 1.8.11 or later, which signs IV || ciphertext on both the encrypt and decrypt sides so that any IV tampering breaks the HMAC before decryption (see https://github.com/wpengine/faustjs/security/advisories/GHSA-q6pm-r77q-qcv3 and the fix in https://github.com/wpengine/faustjs/pull/2386). Note two operational consequences: tokens minted under the pre-1.8.11 scheme will not validate after the upgrade, so users may need to re-authenticate, and simply rotating the FaustWP secret key does NOT remediate the flaw, because an attacker can request a fresh authorization code from GET /generate and repeat the bit-flip against the still-vulnerable code. If the upgrade cannot be applied immediately, apply compensating controls with awareness of their trade-offs: deactivate the plugin or disable FaustWP's headless auth/token flow on sites that do not require it (eliminates exposure but breaks headless authentication); if the flow is required, restrict and monitor access to the token endpoint GET /generate so that only trusted networks or trusted application components can reach it (may be impractical for public headless front ends); and tighten account provisioning by disabling open registration and auditing existing low-privilege accounts, since the attack prerequisite is any logged-in account capable of obtaining an authorization code (reduces the attack surface but does not fix the cryptographic flaw). Regardless of which mitigation is used, review WordPress users, REST API logs, and plugin/theme install history for unexpected Administrator accounts, new admin-level API calls, or unauthorized plugin installations, and treat any such artifacts as indicators of exploitation, since a successful bypass yields full REST API control and code execution.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
FaustWP (the @faustwp/wordpress-plugin package inside the Faust.js headless WordPress toolkit) issues authentication tokens in the code paths WPE\FaustWP\Auth\encrypt() and \decrypt() in plugins/faustwp/includes/auth/functions.php. A token is a plaintext string of the form "<type>|<user_id>|<exp>" where type is ac (authorization code), at (access token) or rt (refresh token), carried in an envelope serialized as base64( IV || HMAC || ciphertext ). The confidentiality layer is AES in CBC mode, which is byte-wise malleable: the first plaintext block is computed as plaintext[0..15] = D_k(ciphertext[0..15]) XOR IV, so anyone who changes the IV changes the corresponding plaintext bytes one-for-one while the ciphertext remains untouched and still decrypts successfully. The integrity layer was an HMAC-SHA256 computed over the ciphertext only (hash_hmac('sha256', $cipher_text, $secret_key, true)), meaning the IV sat outside the authenticated region. This is the classic root cause of CWE-345 (Insufficient Verification of Data Authenticity): the message-authentication check did not cover all security-relevant inputs of the cryptographic construction, so the MAC validated a message that had been altered. By XOR-ing IV[1] with 'c'^'t' and IV[3] with '2'^'1', an attacker converts "ac|2|..." into "at|1|..." in the decrypted output, producing a user-1 (Administrator) access token from a user-2 Subscriber authorization code. The upstream fix changes both encrypt() and decrypt() to compute the HMAC over $iv . $cipher_text, so any IV modification now fails the MAC check before decryption (commit cda00de7290f9b178cb1652d30b4cdf5bb8688d0, PR #2386, changeset "include the IV in the token envelope HMAC").
Know when PHP gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Network-reachable with a low-privilege authenticated account (PR:L) and deterministic bit-flip (AC:L) yielding full admin/RCE, so C:H/I:H/A:H; scope left S:U per vendor.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
Faust.js is a headless WordPress toolkit. Prior to 1.8.11, the FaustWP WordPress plugin authenticates only the ciphertext in its token envelope and excludes the 16-byte initialization vector from the HMAC in WPE\FaustWP\Auth\encrypt() and WPE\FaustWP\Auth\decrypt() in plugins/faustwp/includes/auth/functions.php. A logged-in non-administrator who obtains an authorization code from GET /generate can modify the unauthenticated initialization vector so that CBC decryption changes the token type and user identifier while the HMAC remains valid. This can produce an access token for an Administrator and permit full WordPress REST API access, administrator-account creation, plugin installation, and arbitrary code execution. This issue is fixed in repository version 1.8.11.
Technical POC Analysis
CWE-345 (Insufficient Verification of Data Authenticity), with a secondary CWE-639 angle per the advisory.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
The FaustWP WordPress plugin, used in headless WordPress configurations, contains an authentication bypass (CVE-2026-54239) that allows any authenticated low-privilege user, such as a Subscriber, to escalate to Administrator and achieve full site compromise including remote code execution. This affects all WordPress sites running FaustWP versions before 1.8.11, putting them at risk of data theft, defacement, and persistent backdoors. Leadership should prioritize mitigation because no vendor-released patch has been identified and exploitation requires only a basic user account.
No vendor-released patch identified at time of analysis. Interim mitigations include disabling the FaustWP plugin or its headless authentication flow, restricting access to the /generate endpoint, enforcing strict least-privilege user roles, monitoring for unauthorized admin creation or plugin changes, and deploying WAF rules to detect tampered AES-CBC initialization vectors.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
sapi/cgi/cgi_main.c in PHP before 5.3.12 and 5.4.x before 5.4.2, when configured as a CGI script (aka php-cgi), does not
(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear
The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by
ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C
Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au
Util/PHP/eval-stdin.php in PHPUnit before 4.8.28 and 5.x before 5.6.3 allows remote attackers to execute arbitrary PHP c
Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re
The get_referers function in /opt/ws/bin/sblistpack in Sophos Web Appliance before 3.7.9.1 and 3.8 before 3.8.1.1 allows
The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1
EUVD-2026-82383
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB