PhastPress CVE-2025-14388
CRITICALAttack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach site running PhastPress <=3.7
-
DeliveryCraft path with %2500.txt suffix
-
ExploitBypass extension check via null byte
-
ExecutionRead wp-config.php from webroot
-
ImpactHarvest DB credentials and secret keys
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Metacharacter neutralization
|
| Exploitation Conditions | No special conditions beyond the PhastPress plugin (version <= 3.7) being installed and active on the WordPress site; exploitation is remote and unauthenticated (PR:N) with no user interaction (UI:N) against default configurations. The concrete prerequisite is the ability to reach the plugin's optimized-file-serving endpoint and supply a path with a double URL-encoded null byte (%2500) followed by an allowed extension such as .txt. The main limiting factor is simply whether the vulnerable plugin is present - there is no authentication, privilege, or non-default-configuration barrier described, though the practical blast radius depends on which sensitive files (notably wp-config.php) reside within the readable webroot. |
| Impact | Multiple signals conflict here and must be weighed carefully. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N) legitimately supports remote, unauthenticated, low-complexity exploitation against default installs, which is why the base score reaches 9.8. However, the 9.8 is inflated by the I:H and A:H impact metrics: the described vulnerability is an arbitrary file READ (CWE-158, improper null termination), which directly breaks confidentiality only - there is no described write, modification, or availability impact, so the integrity and availability 'High' ratings appear overstated and should be treated as confidentiality-dominant. Against that, EPSS is low at 0.48% (40th percentile), there is no CISA KEV listing, and no public exploit code is referenced, so there is no evidence of active or imminent mass exploitation. The real risk is nonetheless meaningful because the canonical target is wp-config.php, which exposes database credentials and WordPress secret keys - a confidentiality breach that can cascade into full site compromise. Net assessment: a genuinely serious unauthenticated information-disclosure flaw worth prompt patching where the plugin is installed, but not a 'drop everything' internet-wide emergency given the low deployment footprint and absence of exploitation evidence. The 'RCE' tag overstates the primary impact - code execution is at best an indirect downstream consequence of leaked credentials, not a direct effect of this bug. |
| Exploit ScenarioDerived | An unauthenticated attacker identifies a WordPress site running PhastPress <= 3.7 and sends a crafted request to the plugin's file-serving endpoint, appending a double URL-encoded null byte and an allowed extension (e.g. wp-config.php%2500.txt). The extension check in getExtensionForURL() sees '.txt' and passes, while appendNormalized() truncates at the null byte and builds the real path to wp-config.php, returning its contents - exposing database credentials and secret keys. No public exploit code is referenced in the provided data, but the technique is described in precise detail in the Wordfence advisory. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 19, 2026
Unauthenticated arbitrary file read in the PhastPress WordPress plugin through 3.7 allows remote attackers to retrieve files from the site's webroot, including wp-config.php, by appending a double URL-encoded null byte (%2500) plus an allowed extension such as .txt to a requested path. The defect is a path-validation mismatch: getExtensionForURL() checks the URL-decoded path, while appendNormalized() truncates at the null byte before building the filesystem path, so the extension check passes for a different file than the one opened. The assessed vector is AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N, a confidentiality-only impact despite NVD's 9.8 score; EPSS is 0.48% (40th percentile), and no public exploit identified at time of analysis or CISA KEV entry was provided.
RemediationAI
Update PhastPress to the latest patched release; the vendor changeset 3418139 at https://plugins.trac.wordpress.org/changeset/3418139 is the upstream fix, though the exact fixed version number is not stated in the provided data, so patch status is upstream fix available via changeset with the released patched version not independently confirmed. If updating is not immediately possible, deactivate and remove the PhastPress plugin until a patched build is available, accepting the loss of its performance features. As a temporary compensating control, block requests to the plugin's optimized-file-serving endpoint or reject paths containing %2500 or other encoded null-byte sequences at the WAF or reverse proxy, recognizing that encoding variants may bypass such rules and that this does not fix the underlying code. Additional hardening includes restricting file permissions, ensuring wp-config.php is not exposed through web-facing paths where feasible, and monitoring logs for suspicious requests to plugin endpoints; consult the Wordfence advisory at https://www.wordfence.com/threat-intel/vulnerabilities/id/eec9bbc0-5a68-4624-a672-bd6227d6fa45?source=cve for vendor guidance.
Affected ProductsAI
PhastPress WordPress plugin versions up to and including 3.7 are affected; no CPE identifiers were provided. The vulnerable code is in the plugin's bundled SDK file sdk/phast.php, with the vendor's 3.6 tag referenced at lines 9570, 9597, 9608, and 9641, and the fix changeset 3418139. Any WordPress installation with an active, unpatched PhastPress plugin exposed to the internet is in scope because the vulnerable optimized-file-serving path is reachable by unauthenticated remote users. Vendor advisory: https://www.wordfence.com/threat-intel/vulnerabilities/id/eec9bbc0-5a68-4624-a672-bd6227d6fa45?source=cve.
Affects your stack
Find out whether the stacks and servers you run are on an affected version.
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
PhastPress is a WordPress performance plugin that serves optimized static assets, and this issue lives in its bundled SDK path-handling code in sdk/phast.php, with the vendor's 3.6 tag referenced at lines 9570, 9597, 9608, and 9641. The root cause is CWE-158, improper neutralization of a null byte or NUL character, combined with inconsistent URL decoding: getExtensionForURL() validates the extension against a URL-decoded string, but appendNormalized() strips everything after a null byte when constructing the filesystem path. An attacker can therefore supply a path ending in %2500, which decodes to a null byte, followed by an allowed extension, satisfying the allowlist while the actual filesystem call resolves to a sensitive file such as wp-config.php. The bug is reachable without authentication against the optimized-file-serving endpoint on default configurations; vendor changeset 3418139 appears to be the upstream fix, though the exact tagged patched version is not specified in the provided data. No CPE strings were supplied, so affected scope is defined by plugin version up to and including 3.7 and an active installation. Although the supplied tags include RCE, the provided description and assessed vector establish arbitrary file read with confidentiality impact only; no code-execution primitive is demonstrated by the available data.
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:N/UI:N/S:U/C:H/I:H/A:H
Remote, unauthenticated, low-complexity file read against default installs justifies AV:N/AC:L/PR:N/UI:N; impact is pure disclosure, so C:H with I:N and A:N (the input's I:H/A:H are overstated).
Primary rating from Vendor (wordfence).
CVSS VectorVendor: wordfence
DescriptionCVE.org
The PhastPress plugin for WordPress is vulnerable to Unauthenticated Arbitrary File Read via null byte injection in all versions up to, and including, 3.7. This is due to a discrepancy between the extension validation in getExtensionForURL() which operates on URL-decoded paths, and appendNormalized() which strips everything after a null byte before constructing the filesystem path. This makes it possible for unauthenticated attackers to read arbitrary files from the webroot, including wp-config.php, by appending a double URL-encoded null byte (%2500) followed by an allowed extension (.txt) to the file path.
Executive ViewAI
PhastPress versions through 3.7 expose WordPress sites to unauthenticated arbitrary file read, enabling attackers to retrieve sensitive files such as wp-config.php and potentially obtain database credentials and authentication salts. Because no vendor-released patch is available, leadership should prioritize inventory, containment, and secret rotation for any site running the affected plugin. The confidentiality impact is high, although no public exploit has been identified at time of analysis.
No vendor-released patch identified at time of analysis; interim mitigations include disabling or removing PhastPress through 3.7, blocking double-encoded null-byte (%2500) and path-manipulation requests at the WAF/web server, restricting web-server read access to wp-config.php, rotating database credentials and WordPress salts if exposure is suspected, and monitoring logs for attempts to retrieve sensitive files.
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
NVD
CVE.org
EPSS
GitHub PoC
Exploit-DB