Skip to main content

Bolt CMS CVE-2025-34086

| EUVDEUVD-2025-19905 HIGH
Code Injection (CWE-94)
2025-07-03 disclosure@vulncheck.com GHSA-p9qc-8jjx-g8cg
7.5
CVSS 4.0 · Vendor: vulncheck
View

Attack ChainAIDerived

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

  1. Access
    Obtain valid low-privilege Bolt credentials
  2. Delivery
    Inject PHP into profile displayname field
  3. Exploit
    Rename cached .session file to /files/ with .php extension
  4. Execution
    Request rogue PHP file via HTTP GET
  5. Impact
    Execute web shell as web server user

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial 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 an authenticated session with a valid Bolt backend account (PR:L) and depends on a specific multi-step chain: (1) the attacker must be able to edit their own user-profile displayname field, which backend templates render without sanitization; (2) the installation must expose the /async/browse/cache/.sessions and /async/folder/rename endpoints so cached .session files can be listed and renamed; and (3) the /files/ directory must be publicly web-accessible and able to serve/execute .php files, allowing a renamed session file to become a web shell. Limiting factors: valid credentials are mandatory (this is NOT unauthenticated), and it only affects Bolt CMS 3.7.0 and earlier - the 3.7.1 release specifically prevents renaming files to blacklisted filetypes, closing the chain. Because Bolt 3 is end-of-life, realistic risk is confined to legacy unpatched deployments.

Impact

This is a credentialed remote code execution flaw (CWE-94) in Bolt CMS ≤3.7.0, and the signals are mixed but lean toward genuine priority for anyone still running Bolt 3. The provided CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:P, VC:H/VI:H/VA:H, score 7.5) indicates a network-reachable attack that requires authentication (PR:L) plus specific attack preconditions (AT:P), with full confidentiality/integrity/availability impact on the vulnerable system and no scope change (SC:N). EPSS is notably high at 50.83% (98th percentile), and public exploit code is confirmed (Metasploit module and Exploit-DB 48296), so the exploitation probability and tooling maturity are strong corroborating signals of real-world usability. However, this is NOT CISA KEV-listed, so per the precision rules the correct characterization is 'publicly available exploit code exists' - do NOT treat it as confirmed active exploitation. The key tempering factors: the vulnerability requires valid low-privilege credentials (PR:L), and the product is end-of-life (Bolt 3 EOL after 31 December 2021) with a patched successor (3.7.1 / Bolt 4). The high EPSS reflects the age, public Metasploit coverage, and reliability of the exploit chain rather than evidence of mass active exploitation. Net: a real priority on exposed, authenticated Bolt 3.x instances, but the authentication requirement and EOL/low deployment footprint bound the blast radius versus an unauthenticated internet-wide bug.

Exploit ScenarioDerived

An attacker who has obtained valid Bolt backend credentials (e.g., a low-privileged editor account via phishing or credential reuse) injects PHP into the user-profile displayname field, which backend templates render unsanitized. Using the public Metasploit module (exploit/unix/webapp/bolt_authenticated_rce), they list and rename a cached .session file into the public /files/ directory with a .php extension, then request that file over HTTP to execute the injected code as the web server user. A working, publicly available exploit makes this a low-effort attack against any reachable, credentialed Bolt 3.x install.

Act Now Prioritize within 24-48h. Why: HIGH severity + EPSS > 10%.
No patch listed yet 50.8% exploitation probability (EPSS)

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

Alert me

AnalysisAIv2 – Oct 08, 2026

Authenticated remote code execution in Bolt CMS 3.7.0 and earlier lets any holder of a valid backend account chain an unsanitized profile displayname field, the /async/browse/cache/.sessions and /async/folder/rename file-management endpoints, and a publicly reachable /files/ directory into planting and executing a PHP web shell. Exploitation is multi-step and deployment-dependent - it requires credentials, exposed async endpoints, and a /files/ path that will serve or execute .php files - but publicly available exploit code exists, including a Rapid7 Metasploit module, and EPSS scores the issue at 50.83% (98th percentile). Bolt 3.7.1 closed the file-renaming leg of the chain, and Bolt 3 reached end-of-life on 31 December 2021, so realistic exposure is confined to legacy unpatched installations.

Earlier versions of this analysis (1)
v1 Mar 16, 2026 - 02:12 CVSS 8.8

Authenticated command injection in Pandora FMS network tools via select_ips parameter enables OS command execution on monitoring infrastructure.

RemediationAI

The vendor-released fix is Bolt CMS 3.7.1, which prevents renaming files to blacklisted filetypes and adds CSRF protection to the Preview page (release: https://github.com/bolt/bolt/releases/tag/3.7.1, installable from https://bolt.cm/distribution/archive/3.7/bolt-3.7.1.tar.gz per the release notes). Because Bolt 3 is end-of-life, upgrading within the 3.x line is a stopgap and the durable remediation is migration to a supported Bolt 4/5/6 release; note that major-version migrations are non-trivial and can break custom themes, extensions, and content models, so plan them as projects rather than hotfixes. Where neither is immediately possible, apply compensating controls that break the specific chain: configure the web server to refuse execution of PHP under /files/ (for nginx, a location block for /files/ with a PHP handler deny or an internal-only PHP location; for Apache, php_admin_flag engine off inside that directory) and verify uploaded/served content is returned as inert bytes - this is low-risk for content sites but will break legitimate PHP-based file workflows; restrict or block the /async/browse/cache/.sessions and /async/folder/rename routes at the reverse proxy or WAF for all but trusted administrator IPs, accepting that this degrades the backend file manager UI; remove or disable the displayname field for non-administrator roles so the injection point cannot be reached; and reduce the backend attack surface by tightening account issuance and applying MFA so no low-privilege credential can reach the user-profile editor. Finally, because the Metasploit module and Exploit-DB 48296 make the chain trivially reproducible by an authenticated insider, monitor Bolt access logs and the session cache directory for unexpected .php artifacts and alert on rename operations targeting web-accessible paths.

Affected VersionsENISA

CMS * ≤3.7.0

Affected Packages

composer bolt/bolt no fix
euvd cms no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in composer, euvd

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

Technical ContextAI · show details

Bolt is a PHP content management system built on Symfony/Silex components, and this issue is a code-injection chain (CWE-94) rather than a single memory-safety or deserialization bug. The root cause is that the user-profile displayname value is stored and then rendered into backend templates without output sanitization, so an authenticated editor can persist PHP source into a field that later reaches a server-side template context (see the user controller logic referenced at bolt/bolt 3.7 src/Controller/Backend/Users.php lines 279-311). The second component is Bolt's asynchronous file manager: /async/browse/cache/.sessions enumerates cached PHP session files written to disk, and /async/folder/rename moves them. Because there is no effective extension blacklist in 3.7.0 and earlier, an attacker can rename a .session file into the web-served /files/ directory with a .php extension, converting the injected displayname payload into an executable web shell that is then triggered by a crafted GET request. The 3.7.1 maintenance release (2020-05-07) addresses this directly via PR #7853, which adds CSRF checks on the Preview page and prevents renaming files to blacklisted filetypes, breaking the rename-to-PHP step. The associated Metasploit module (exploit/unix/webapp/bolt_authenticated_rce) and Exploit-DB 48296 both operate strictly post-authentication, confirming that credential possession is a hard prerequisite (CVSS PR:L / PR:L in the supplied vectors).

Know when Bolt 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 (vulncheck) PRIMARY 7.5 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:P/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
vuln.today AI 7.5 HIGH

Network-reachable but needs valid credentials (PR:L) and a multi-step chain relying on accessible rename endpoints and a public executable /files/ dir (AC:H); attacker-driven so UI:N, and code runs within the same web authority (S:U) with full C/I/A impact.

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

Primary rating from Vendor (vulncheck).

CVSS VectorVendor: vulncheck

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
Passive
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

Lifecycle Timeline

4
Analysis Updated
Oct 08, 2026 - 16:30 vuln.today
v2 - CVSS changed
CVSS changed
Oct 08, 2026 - 16:22 NVD
8.8 (HIGH) 7.5 (HIGH)
PoC Detected
Sep 16, 2025 - 19:51 vuln.today
Public exploit code
CVE Published
Jul 03, 2025 - 20:15 nvd
HIGH 8.8

DescriptionCVE.org

Bolt CMS versions 3.7.0 and earlier contain a chain of vulnerabilities that together allow an authenticated user to achieve remote code execution. A user with valid credentials can inject arbitrary PHP code into the displayname field of the user profile, which is rendered unsanitized in backend templates. The attacker can then list and rename cached session files via the /async/browse/cache/.sessions and /async/folder/rename endpoints. By renaming a .session file to a path under the publicly accessible /files/ directory with a .php extension, the attacker can turn the injected code into an executable web shell. Finally, the attacker triggers the payload via a crafted HTTP GET request to the rogue file.

NOTE: The vendor announced that Bolt 3 reached end-of-life after 31 December 2021.

Executive ViewAI

Why It Matters

A high-severity flaw in legacy Bolt CMS installations (version 3.7.0 and earlier) allows an attacker holding a valid backend account to plant and run a PHP web shell on the web server, giving full control of the affected site. Publicly available exploit code - including a Rapid7 Metasploit module - and an EPSS score above the 98th percentile raise the likelihood of opportunistic scanning, though successful exploitation depends on internet-exposed administrative endpoints and a file directory that executes PHP. Leadership should care because exposure is concentrated in end-of-life systems that may still host customer-facing content, and a compromise there risks data theft, defacement, and a foothold into connected internal networks.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Bolt 3.7.1 closed the file-renaming leg of the exploitation chain but the Bolt 3 line is end-of-life, so interim mitigations are required: restrict backend administrative access to trusted networks, block or disable the vulnerable /async endpoints via WAF or reverse proxy rules, configure /files/ to serve static content only with PHP execution disabled, remove or restrict unnecessary backend accounts, monitor for new or modified PHP files, and accelerate migration to a supported CMS version.

Threat Intelligence Overview

Threat Score
4.5/10
Composite threat intelligence
EPSS Score
50.8%
Top 2% exploitable
Prevalence
Low
Niche PHP CMS, Bolt 3 branch end-of-life since 2021
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS POC (1) Exploit-DB GitHub Metasploit

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 50.8%
Patch available No
Active threat Yes
Deciding rule
HIGH severity + EPSS > 10%
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
Active
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

124
Low Medium High Critical
KEV: 0
EPSS: +51
CVSS: +38
PoC: +20
Weaponized: +15
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.

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

More in Bolt

View all
CVE-2015-7309 MEDIUM POC
6.5 Sep 22

The theme editor in Bolt before 2.2.5 does not check the file extension when renaming files, which allows remote authent

CVE-2022-36532 HIGH POC
8.8 Sep 16

Bolt CMS contains a vulnerability in version 5.1.12 and below that allows an authenticated user with the ROLE_EDITOR pri

CVE-2021-40219 HIGH POC
8.8 Apr 11

Bolt CMS <= 4.2 is vulnerable to Remote Code Execution. Rated high severity (CVSS 8.8), this vulnerability is remotely e

CVE-2019-10874 HIGH POC
8.8 Apr 05

Cross Site Request Forgery (CSRF) in the bolt/upload File Upload feature in Bolt CMS 3.6.6 allows remote attackers to ex

CVE-2019-9185 HIGH POC
8.8 Mar 07

Controller/Async/FilesystemManager.php in the filemanager in Bolt before 3.6.5 allows remote attackers to execute arbitr

CVE-2020-4041 MEDIUM POC
6.1 Jun 08

In Bolt CMS before version 3.7.1, the filename of uploaded files was vulnerable to stored XSS. Rated medium severity (CV

CVE-2019-9553 MEDIUM POC
6.1 Dec 31

Bolt 3.6.4 has XSS via the slug, teaser, or title parameter to editcontent/pages, a related issue to CVE-2017-11128 and

CVE-2019-20058 MEDIUM POC
6.1 Dec 29

Bolt 3.7.0, if Symfony Web Profiler is used, allows XSS because unsanitized search?search= input is shown on the _profil

CVE-2018-19933 MEDIUM POC
6.1 Dec 17

Bolt CMS <3.6.2 allows XSS via text input click preview button as demonstrated by the Title field of a Configured and Ne

CVE-2023-5214 CRITICAL
9.8 Oct 06

In Puppet Bolt versions prior to 3.27.4, a path to escalate privileges was identified. Rated critical severity (CVSS 9.8

CVE-2017-11128 MEDIUM POC
5.4 Jul 17

Bolt CMS 3.2.14 allows stored XSS via text input, as demonstrated by the Title field of a New Entry. Rated medium severi

CVE-2017-11127 MEDIUM POC
5.4 Jul 17

Bolt CMS 3.2.14 allows stored XSS by uploading an SVG document with a "Content-Type: image/svg+xml" header. Rated medium

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