Skip to main content

NukeViet CMS CVE-2026-55372

HIGH
Server-Side Request Forgery (SSRF) (CWE-918)
2026-07-13 https://github.com/nukeviet/nukeviet GHSA-4chg-4752-w88r
7.2
CVSS 3.1 · GitHub Advisory
View

Attack ChainAIDerived

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

  1. Access
    Send POST index.php with __serverInfoUpdate=1
  2. Delivery
    Spoof X-Forwarded-Host to internal target:port/
  3. Exploit
    Bypass standardizeHost port regex
  4. Execution
    server_info_update() cURL fetches attacker host
  5. Impact
    Probe internal hosts/ports and poison cached server_headers

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V4 - API and Web Service URL allowlisting, SSRF prevention
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Credential Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires the __serverInfoUpdate feature path to be reachable - a POST to index.php with the field __serverInfoUpdate=1, which is handled early in includes/ini.php before authentication, so no credentials or user interaction are needed (CVSS PR:N/UI:N is consistent with this). The attacker must be able to set the X-Forwarded-Host (and optionally X-Forwarded-Proto/X-Forwarded-Port) request headers reaching the application; to bypass the port sanitiser the host value must append a trailing slash (e.g. host:port/). Limiting factors: exploitation is blocked if a trusted reverse proxy strips or overrides client-supplied X-Forwarded-* headers, or once the site is upgraded to 4.6.00 where the host is validated against my_domains. The sink is blind, HEAD-only and fixed-path, so the condition enables outbound request coercion and internal discovery but not arbitrary-path SSRF or metadata/credential theft.

Impact

The provided CVSS 3.1 vector CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N (7.2 High) reflects a genuinely low-friction reachability profile: network attack vector, low complexity, no privileges and no user interaction, which matches the pre-auth POST trigger described. However, the scope-changed / C:L / I:L rating is optimistic given the vendor's own impact analysis: the SSRF is blind, HEAD-only and fixed-path, so it cannot read internal responses, cannot reach cloud metadata endpoints (169.254.169.254), and cannot smuggle gopher/dict payloads - meaning real confidentiality/integrity impact is limited to internal port discovery and cache poisoning of response headers. No EPSS score, KEV entry, or POC beyond the advisory's own proof-of-concept is present in the supplied data, so this is not evidence of active exploitation. Net: a real, easily-triggered pre-auth issue worth patching, but the constrained sink keeps actual damage well below a typical unrestricted SSRF; treat as a prompt-but-not-emergency fix. Note that S:C plus only C:L/I:L is internally consistent with a limited-capability sink rather than full internal compromise.

Exploit ScenarioDerived

An attacker sends an unauthenticated POST to /index.php containing __serverInfoUpdate=1 with X-Forwarded-Proto: http and X-Forwarded-Host set to an internal target such as 10.0.0.5:6379/, causing the NukeViet server to issue a HEAD request to that host and letting the attacker map reachable internal hosts and ports via connection success/timing. The advisory includes a working PoC confirmed through out-of-band DNS and HTTP interaction on a collaborator endpoint, but the blind, fixed-path sink means no internal response content is returned to the attacker.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available

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

Alert me

AnalysisAIv1 – Jul 13, 2026

Server-side request forgery in NukeViet CMS before 4.6.00 lets a remote unauthenticated attacker coerce the server into issuing outbound HTTP requests to an arbitrary host by spoofing the X-Forwarded-Host and X-Forwarded-Proto headers, which flow unvalidated into the cURL URL built by server_info_update(). Because the __serverInfoUpdate=1 POST handler in includes/ini.php runs before authentication, no credentials are needed. The flaw is blind, HEAD-only and uses a fixed request path, so its practical value is internal host/port discovery and poisoning of the cached server_headers rather than data exfiltration; no public exploit beyond the advisory PoC is identified and it is not in CISA KEV.

RemediationAI

Vendor-released patch: upgrade NukeViet to 4.6.00 or later, which validates and normalises the forwarded values at the source - standardizeHost() now uses parse_url() to extract and lower-case the host (defeating the :port/ bypass), restricts X-Forwarded-Proto to an {http,https} allow-list falling back to the real server protocol, validates X-Forwarded-Port as an in-range numeric, checks the incoming host against my_domains before includes/ini.php is reached, and has server_info_update() re-validate its target against my_domains as defense in depth. See GHSA-4chg-4752-w88r for details. If you cannot upgrade immediately, configure the reverse proxy or web server to strip or override any client-supplied X-Forwarded-Host, X-Forwarded-Proto and X-Forwarded-Port headers so attackers cannot inject them, and ensure my_domains contains only the site's canonical domain(s); the trade-off is that legitimate proxy chains that rely on these headers must be explicitly set by a trusted front-end, and misconfiguration can break host/protocol detection behind a proxy.

Affected Packages

composer nukeviet/nukeviet fix: 4.6.00

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in composer

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

NukeViet is a PHP-based open-source CMS (distributed as the composer package nukeviet/nukeviet). The root cause is CWE-918 (SSRF) enabled by CWE-644/CWE-20: the NukeViet\Core\Server class derives original_host and original_protocol directly from client-supplied X-Forwarded-Host / X-Forwarded-Proto headers and exposes them via getOriginalHost()/getOriginalProtocol() without checking them against the site's configured my_domains. server_info_update() in includes/ini.php concatenates this tainted scheme and host into a cURL target (proto://host + NV_BASE_SITEURL + index.php?response_headers_detect=1). The sanitiser standardizeHost() only stripped a trailing port with the regex (\:[0-9]+)$, which is trivially bypassed by appending a slash (e.g. 127.0.0.1:8081/) so an arbitrary host:port survives into the request.

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

GitHub Advisory PRIMARY 7.2 HIGH
AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N
vuln.today AI 6.5 MEDIUM

Pre-auth remote trigger with no interaction gives AV:N/AC:L/PR:N/UI:N; blind fixed-path sink yields only limited C:L (internal discovery) and I:L (header cache poisoning), and I keep S:U since impact stays within the vulnerable app.

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

Primary rating from GitHub Advisory.

CVSS VectorGitHub Advisory

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

DescriptionGitHub Advisory

Summary

An unauthenticated attacker can coerce the server into issuing HTTP requests to an attacker-chosen host by spoofing the X Forwarded-Host (and X-Forwarded-Proto) request headers. The forwarded host is used, without validation, to build the URL that server_info_update() fetches with cURL, resulting in a Server-Side Request Forgery (SSRF) that requires no authentication.

Affected component

  • File: includes/ini.php - function server_info_update() (cURL sink)
  • File: vendor/vinades/nukeviet/Core/Server.php - standardizeHost() and the forwarded-header handling in the constructor (source of the tainted host)
  • Trigger: POST request containing the field __serverInfoUpdate=1, handled early in includes/ini.php before any authentication.

Details

NukeViet\Core\Server derives original_host / original_protocol from the X-Forwarded-Host / X-Forwarded-Proto headers and exposes them via getOriginalHost() / getOriginalProtocol(). These values are attacker-controlled and were not validated against the site's configured domains (my_domains).

In server_info_update() the tainted host and scheme are concatenated directly into a cURL URL:

php
$proto = $nv_Server->getOriginalProtocol();   // from X-Forwarded-Proto
$host  = $nv_Server->getOriginalHost();        // from X-Forwarded-Host
$ch = curl_init($proto . '://' . $host . NV_BASE_SITEURL . 'index.php?response_headers_detect=1');
curl_exec($ch);

Two factors made this reliably reachable:

  1. The __serverInfoUpdate handler runs very early in includes/ini.php, before authentication, so the sink is reachable pre-auth.
  2. The host sanitiser standardizeHost() stripped a trailing port only with the regex (\:[0-9]+)$, which is bypassed by appending a slash (e.g. 127.0.0.1:8081/): the string no longer ends in :digits, so the port survives and an arbitrary host:port reaches the cURL call.

Proof of Concept

http
POST /index.php HTTP/1.1
Host: <victim>
X-Forwarded-Proto: http
X-Forwarded-Host: <attacker-controlled-host>:<port>/
Content-Type: application/x-www-form-urlencoded
Content-Length: 20

__serverInfoUpdate=1

The server then issues a request to the attacker-supplied host, confirmed via an out-of-band interaction (DNS + HTTP) on a collaborator endpoint.

Impact

The SSRF is blind, HEAD-only, and uses a fixed request path (…/index.php?response_headers_detect=1):

  • The fetched response is stored server-side in the config_ini cache and is not reflected to the attacker, so internal data cannot be exfiltrated directly.
  • Because the path is fixed and not attacker-controlled, cloud metadata endpoints (e.g. 169.254.169.254/latest/meta-data/...) cannot be reached, and gopher:// / dict:// request smuggling cannot inject arbitrary payloads.

What an attacker can do: unauthenticated internal host/port discovery (connection success/timing, with the port reachable through the regex bypass), and poisoning of the cached server_headers (the SSRF target's response headers are stored and applied to the site).

Severity

Rated High rather than Critical, because the blind + fixed-path + HEAD design of the sink prevents data exfiltration, cloud credential theft, and internal RCE.

  • CVSS v3.1 Base Score: 7.2 (High)
  • Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N

Weakness

  • Primary: CWE-918: Server-Side Request Forgery (SSRF)
  • Contributing: CWE-20 (Improper Input Validation), CWE-644 (Improper Neutralization of HTTP Headers used by downstream components / trusting X-Forwarded-*).

Remediation

Fixed by validating and normalising the forwarded values at the source and gating the request before the sink:

  • standardizeHost() now extracts the host with parse_url() (defeats the :port/ bypass) and lower-cases it.
  • X-Forwarded-Proto is restricted to a {http, https} allow-list and falls back to the real server protocol otherwise.
  • X-Forwarded-Port is validated as numeric and within range.
  • The incoming host is checked against my_domains before includes/ini.php is reached; non-matching hosts are rejected/redirected, and server_info_update() additionally re-validates its target host against my_domains (defense in depth).

Workaround

Configure the reverse proxy / web server to strip or override client-supplied X-Forwarded-Host, X-Forwarded-Proto, and X-Forwarded-Port headers, and ensure my_domains is configured with the site's canonical domain(s).

Executive ViewAI

Why It Matters

NukeViet CMS versions before 4.6.00 contain an unauthenticated server-side request forgery (SSRF) vulnerability (no public exploit identified at time of analysis) that allows remote attackers to discover internal hosts, ports, and services without credentials. Organizations running this CMS risk unintended exposure of internal network topology and poisoning of cached server configuration, creating pathways for internal reconnaissance and enabling follow-on compromises.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations: (1) Web Application Firewall to reject or sanitize X-Forwarded-Host and X-Forwarded-Proto headers at the ingress layer. (2) Network-level egress filtering to restrict outbound HTTP(S) from CMS servers to only necessary internal services, reducing information leakage scope. (3) Comprehensive monitoring and alerting on server_info_update() invocations and cURL outbound activity from the CMS process. (4) Disable the __serverInfoUpdate functionality if operationally unnecessary. (5) Deploy the CMS in a restricted network segment with minimal outbound egress permissions to contain potential reconnaissance and poisoning impact.

Threat Intelligence Overview

Prevalence
Low
Regional open-source CMS with modest, mostly Vietnamese-market deployment footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Social Media
1
Sightings
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 HIGH
CISA KEV No
Public POC Yes
EPSS N/A
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
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
Out-of-Cycle
Exploitation· derived
Poc
System Exposure· derived
Open
Automatable· derived
Yes
Human Impact
High

Priority Score

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

Attack Technique

Server-Side Request Forgery exploits applications that fetch remote resources based on user-supplied URLs.

Affected Products (CPE)GitHub Advisory

pkg:composer/nukeviet_nukeviet

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