Skip to main content

PhastPress CVE-2025-14388

CRITICAL
Improper Neutralization of Null Byte or NUL Character (CWE-158)
2025-12-23 security@wordfence.com
9.8
CVSS 3.1 · Vendor: wordfence
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Reach site running PhastPress <=3.7
  2. Delivery
    Craft path with %2500.txt suffix
  3. Exploit
    Bypass extension check via null byte
  4. Execution
    Read wp-config.php from webroot
  5. Impact
    Harvest 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity.
No patch listed yet 0.5% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Vendor (wordfence) PRIMARY 9.8 CRITICAL
AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
vuln.today AI 7.5 HIGH

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).

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (wordfence).

CVSS VectorVendor: wordfence

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
High
Availability
High

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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.5%
Top 60% exploitable
Prevalence
Low
Niche WordPress performance-optimization plugin, modest install base
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC No
EPSS 0.5%
Patch available No
Active threat No
Deciding rule
CRITICAL severity
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

49
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +49
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

More in PHP

View all
CVE-2019-11043 CRITICAL POC
9.8 Oct 28

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

CVE-2012-1823 CRITICAL POC
9.8 May 11

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

CVE-2016-1555 CRITICAL POC
9.8 Apr 21

(1) boardData102.php, (2) boardData103.php, (3) boardDataJP.php, (4) boardDataNA.php, and (5) boardDataWW.php in Netgear

CVE-2018-11138 CRITICAL POC
9.8 May 31

The '/common/download_agent_installer.php' script in the Quest KACE System Management Appliance 8.0.318 is accessible by

CVE-2024-11680 CRITICAL POC
9.8 Nov 26

ProjectSend versions prior to r1720 are affected by an improper authentication vulnerability. Rated critical severity (C

CVE-2025-49113 CRITICAL POC
9.9 Jun 02

Roundcube Webmail contains a critical PHP object deserialization vulnerability (CVE-2025-49113, CVSS 9.9) that allows au

CVE-2017-9841 CRITICAL POC
9.8 Jun 27

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

CVE-2025-0108 HIGH POC
8.8 Feb 12

Palo Alto Networks PAN-OS management web interface contains an authentication bypass allowing unauthenticated attackers

CVE-2021-25298 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2021-25296 HIGH POC
8.8 Feb 15

Nagios XI version xi-5.7.5 is affected by OS command injection. Rated high severity (CVSS 8.8), this vulnerability is re

CVE-2013-4983 CRITICAL POC
10.0 Sep 10

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

CVE-2023-6553 CRITICAL POC
9.8 Dec 15

The Backup Migration plugin for WordPress is vulnerable to Remote Code Execution in all versions up to, and including, 1

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy