Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
Network-reachable via crafted HTTP headers, no credentials required (PR:N), but a victim must render the page (UI:R); injected scripts execute in the browser security context, warranting S:C with low C and I impact.
Primary rating from Vendor (TuranSec).
CVSS VectorVendor: TuranSec
Lifecycle Timeline
2DescriptionCVE.org
A host header injection vulnerability in picocms/Pico through 2.1.4 allows an unauthenticated remote attacker to control the origin of JavaScript and CSS assets loaded by the default theme. When base_url is unset (the default), Pico::getBaseUrl() in lib/Pico.php builds the base URL from unvalidated Host, X-Forwarded-Host, X-Forwarded-Proto, and X-Forwarded-Port request headers. The resulting URL propagates to theme_url, assets_url, and plugins_url, causing script and stylesheet tags to load resources from an attacker-controlled domain.
AnalysisAI
Host header injection in picocms/Pico through 2.1.4 allows unauthenticated remote attackers to substitute an attacker-controlled domain as the base URL for all JavaScript and CSS assets loaded by the default theme. Because Pico::getBaseUrl() in lib/Pico.php trusts unvalidated Host, X-Forwarded-Host, X-Forwarded-Proto, and X-Forwarded-Port headers when base_url is not explicitly configured, the derived URL propagates unchecked into theme_url, assets_url, and plugins_url, causing every page rendered by the default theme to fetch scripts and stylesheets from the attacker's server. No public exploit is identified at time of analysis; exploitation requires a victim to load a Pico-generated page in a browser.
Technical ContextAI
Pico is a flat-file CMS written in PHP. The vulnerable logic resides in Pico::getBaseUrl() within lib/Pico.php (https://github.com/picocms/Pico/blob/master/lib/Pico.php), which constructs the application's base URL by reading HTTP request headers when the base_url directive is absent from config/config.yml - the default shipping state. The derived URL is then assigned to the internal theme_url, assets_url, and plugins_url variables, which are consumed directly by the default Twig theme to emit <script> and <link rel='stylesheet'> tags. CWE-644 (Improper Neutralization of HTTP Headers for Scripting Syntax) identifies the root cause class: header values intended only for routing are incorporated into HTML output without sanitization, enabling external resource injection. The CPE string cpe:2.3:a:picocms:pico:*:*:*:*:*:*:*:* covers all tracked versions, consistent with the through-2.1.4 range stated in the CVE description.
RemediationAI
No vendor-released patched version is confirmed in the available data; the provided references point only to the Pico homepage (https://picocms.org) and the GitHub repository (https://github.com/picocms/Pico) without identifying a specific fixed release - administrators should monitor the repository for a tagged release addressing this issue. As an immediate and fully effective workaround, explicitly set base_url to a hardcoded absolute URL in config/config.yml (for example, base_url: https://example.com) - this bypasses the header-based URL construction entirely and has no functional side effects. For deployments behind a reverse proxy or CDN, configure the proxy to strip and rewrite the X-Forwarded-Host, X-Forwarded-Proto, and X-Forwarded-Port headers from incoming client requests before they reach Pico, preventing header injection regardless of Pico configuration; note that stripping X-Forwarded-Host may affect other applications on the same proxy that rely on it for canonical URL resolution. Setting base_url explicitly in configuration is recommended as a permanent hardening measure even after a patch is released.
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
Same technique Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-55232
GHSA-563g-2g6p-xmpf