☠️
EXFILTRATING
DATA...
01010111 10110010 00101001 11000110 01101100 10011011 00010001 11100101 01000010 10101111
[ <-- BACK_TO_SEARCH ]
Typemill logo [ WEBSITE ] [ VENDOR STATS ]
CVSS: 4.8 CVSS:3.1/AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N 🐛 CWE-79
👁️
Common Weakness Enumeration - Identifies the specific category of software weakness or flaw.

CVE-2026-44401

CVE-2026-44401 Cross-Site Scripting in Typemill
📅 PUBLISHED: 2026-08-10 00:00 UTC 🔄 UPDATED: 2026-09-23 20:34 UTC
[ PATCH UNDER REVIEW ↓ ] Remains UNDER REVIEW until an independent source confirms the fix
[ DEFENSE PATCH ↓ ]
💣 PoC: Public
👁️
Proof of Concept - Indicates if functional exploit code is publicly available, drastically increasing the risk of immediate attacks.
🎯 EPSS: 0.28%
👁️
0.28% probability
7.1× above the median CVE
Tier: ELEVATED
30-day exploitation window · FIRST.org · updated daily
🥷 MITRE: T1204
👁️
MITRE ATT&CK Tactic - Describes the strategy hackers use to execute this attack.
Country: Germany License: Open Source
VULNERABLE: version not auto-detected — verify your deployed version locally
CVSS VECTOR BREAKDOWN 4.8
AV: N Attack Vector Network
AC: L Attack Complexity Low
PR: H Privileges Required High
UI: R User Interaction Required
S: C Scope Changed
C: L Confidentiality Low
I: L Integrity Low
A: N Availability None
4.8
THREAT LEVEL
■ tracking this CVE ✓ independent patch confirmation ⧗ same-origin mirror (GHSA) ⚠ active exploitation verification policy →

CVE-2026-44401 — Typemill CMS 2.x Stored XSS via Markdown Link href

Executive Summary

CVE-2026-44401 is a persistent (stored) cross-site scripting vulnerability in the Markdown parser extension of Typemill CMS 2.x. An authenticated user with theme-configuration access can embed javascript: URIs in Markdown link href values because the Markdown renderers referenced in the advisory — ParsedownExtension.php and TwigMarkdownExtension.php — do not sanitize the URI scheme of link destinations. The stored payload executes in the browser of any visitor who clicks the crafted link, enabling session cookie theft, authenticated request forgery, and credential harvesting. The vulnerability currently has no vendor-supplied patch, no public exploit, and a CVSS score of 4.8 (moderate).

⚡ AUTOMATE YOUR CVE INTELLIGENCE

This record — and 170,000+ others — are available via the ValtersIT API. One endpoint replaces five: NVD + GitHub CVE + CISA KEV + EPSS + Nuclei + Exploit-DB, unified.

›Patch confidence — UNVERIFIED to CONFIRMED, cross-referenced NVD + RHSA + Debian
›Exploit & PoC — poc_status, poc_url, has_exploit. Not in NVD.
›Shodan dorks — ready-made queries to find exposed vulnerable systems
›Detection rules — YARA · Wazuh · Elastic (all plans) · Sigma (Pro)
›pending_fields — know exactly which of 7 fields NVD hasn't processed yet
›Free backfill — data incomplete when you paid? Re-check within 30 days = 0 credits
PAYG €0.08/lookup Standard €19/mo (was €29) · 5k credits Pro €65/mo (was €99) · 20k credits FOUNDING PRICE · LOCKED FOR LIFE · ENDS 31 DEC 2026
[ FROM €19/MO ]
Free sandbox key available
No signup required

Technical Analysis

Typemill CMS 2.x renders user-authored content written in Markdown. The affected Markdown parser extension transforms standard [link text](href) constructs into HTML anchor elements. The root cause is a failure to validate the URI scheme of the href attribute during rendering: the parser strips or escapes raw HTML tags, but link destination values are passed through without an allowlist of safe protocols. This allows an authenticated user to supply a dangerous javascript: scheme as the link target.

Because the content is rendered server-side and stored (persistent XSS), the malicious anchor is delivered to every page visitor. Modern browsers still execute javascript: URIs in the context of the origin that served the page, meaning the injected script runs with full access to the Typemill application's DOM, cookies, and same-origin APIs. The attacker does not need to click the link themselves; a victim must click the poisoned link (hence the UI:R component in the CVSS vector). The high privilege requirement (PR:H) reflects the fact that an account with theme-configuration access is needed to store the malicious content, which typically corresponds to an author, editor, or administrator role in the CMS.

The NVD description names two components involved in the vulnerable rendering path: ParsedownExtension.php and TwigMarkdownExtension.php. Both are Markdown rendering extensions (Parsedown is a well-known PHP Markdown parser; Twig Markdown provides Markdown filters for Twig templates). No additional function names, class names, or endpoint paths are disclosed in the advisory. The attack surface is any Typemill 2.x installation where more than one trusted account holds theme-configuration privileges, or where such an account has been compromised.

Exploitation Scenarios

No public PoC or exploit code is available; the attack chain below is inferred strictly from the vulnerability class (CWE-79 stored XSS) and the NVD description.

  1. Reconnaissance / target identification — An attacker fingerprints Typemill 2.x installations using search-engine and Shodan dorks (e.g., http.title:"Typemill"). Distinctive site structure, CMS-specific HTML comments, and the presence of Markdown-rendered theming areas help confirm the platform and version family.

  2. Gain privileged access — The attacker obtains credentials for an account with theme-configuration access. This can be a legitimate low-privileged CMS user, an account obtained via prior phishing, or a reused credential from an earlier breach. The required privilege is a CMS role that can edit theme files or themed content rendered through the Markdown extension.

  3. Payload injection — The attacker edits a theme configuration or content page in the editor and supplies a Markdown link with a javascript: URI, e.g., a link whose destination is javascript:... rather than https://. Obfuscated encodings (HTML entities, percent-encoding, mixed case) may be used to bypass any lightweight input filters that exist in the editing interface. Because the flaw is in the Markdown rendering extension, the payload persists in the stored Markdown source and is rendered into every page that includes the affected content.

  4. Victim interaction and execution — A visitor, editor, or administrator views the page and clicks the poisoned link. The browser executes the JavaScript in the Typemill origin, exactly as if it were first-party script.

  5. Post-exploitation — The executed script can read and exfiltrate session cookies (if not protected by HttpOnly), issue authenticated requests on behalf of the victim (e.g., create new admin accounts, alter site content, modify theme configuration), or render a fake login form to harvest credentials for both the CMS and other same-origin services.

Impact Assessment

The business impact is primarily confidentiality and integrity loss with a scope change. The CVSS vector (AV:N/AC:L/PR:H/UI:R/S:C/C:L/I:L/A:N) yields a base score of 4.8, reflecting that the attack is network-based and simple to execute, but requires high privileges and victim interaction, and only achieves low direct confidentiality/integrity impact. However, because the scope is changed (S:C), the injected script operates in the application's security context, which can chain into full administrative account takeover — substantially higher real-world impact than the numeric score implies.

Affected systems: All Typemill CMS 2.x deployments that render user-controllable Markdown through the vulnerable extensions. Installations using a single trusted super-admin are at lower risk; installations with multiple editors, guest authors, or agencies managing themes are at higher risk.

Blast radius: Every visitor who clicks the stored link — including site administrators and registered users — is exposed to the payload. Persistent XSS also undermines content integrity and may trigger regulatory notification if customer data is harvested.

Threat landscape: EPSS score is 0.00230 (14.1 percentile), so the vulnerability is not currently under active mass exploitation. CISA KEV status is NO. No known threat-actor campaigns or exploit-in-the-wild evidence exist at the time of writing. The absence of a vendor patch, however, makes this a latent risk for Typemill environments.

Detection Guidance

The following detections target both the attacker's write action (HTTP requests carrying javascript: URIs to Typemill Markdown endpoints) and the stored artifact (server responses containing poisoned Markdown).

Sigma Rule

title: Typemill CMS Markdown XSS - javascript URI in Link (CVE-2026-44401)
id: 251f4d9c-6f3b-4e2a-8f4b-1c9e0b0a3a7e
status: experimental
description: Detects HTTP requests containing a javascript: URI scheme submitted to or served from Typemill CMS Markdown extension endpoints ParsedownExtension.php or TwigMarkdownExtension.php.
references:
    - https://nvd.nist.gov/vuln/detail/CVE-2026-44401
author: Valters IT Threat Intelligence
date: 2026/05/27
logsource:
    category: webserver
    product: apache
    service: http
detection:
    selection_extension:
        http.url|contains:
            - 'ParsedownExtension.php'
            - 'TwigMarkdownExtension.php'
    selection_payload:
        http.url|contains|any:
            - 'javascript%3A'
            - 'javascript:'
            - 'java%73cript%3A'
            - 'java&#x73;cript:'
    condition: selection_extension and selection_payload
fields:
    - client.address
    - http.url
    - http.user_agent
    - http.response.status_code
falsepositives:
    - Security scanners and crawlers that probe for XSS patterns
    - Legitimate Markdown documentation or tutorials referencing javascript: schemes in code examples
level: medium

YARA Rule

rule Typemill_Markdown_XSS_Javascript_Href
{
    meta:
        author = "Valters IT Threat Intelligence"
        description = "Detects Markdown content files, backups, or captured responses containing a javascript: URI used as a Markdown link destination, indicative of CVE-2026-44401 stored XSS"
        reference = "https://nvd.nist.gov/vuln/detail/CVE-2026-44401"
        cve = "2026-44401"
        date = "2026-05-27"
        threat_level = "moderate"
    strings:
        $js_plain = "javascript:" ascii wide nocase
        $js_hex   = "java%73cript:" ascii wide nocase
        $js_ent   = "java&#x73;cript:" ascii wide nocase
        $md_open  = "](" ascii
        $parsedown_ref = "ParsedownExtension" ascii wide
        $twig_ref      = "TwigMarkdownExtension" ascii wide
    condition:
        filesize < 5MB
        and any of ($js_*) and $md_open
        and 1 of ($parsedown_ref, $twig_ref)
}

Suricata IDS Rule

alert http any any -> $HOME_NET any (msg:"ET WEB_SPECIFIC_APPS Typemill CMS Markdown stored XSS javascript URI in href (CVE-2026-44401)"; flow:established,to_server; http.uri; pcre:"/(?i)(ParsedownExtension|TwigMarkdownExtension)\.php"; http.uri; pcre:"/(?i)java(?:script|%73cript)(?:%3A|:)/"; sid:20344401; rev:1; classtype:web-application-attack; reference:cve,2026-44401; metadata:attack_target Web_Server, deployment Perimeter, signature_severity Major, created_at 2026_05_27;)

Note: use flow:established,to_client and inspect server responses with the same payload pattern to detect the stored artifact being delivered to visitors after server-side filtering changes.

Elastic Detection (EQL)

any where event.category == "web" and
  (
    url.path wildcard "*ParsedownExtension.php*" or
    url.path wildcard "*TwigMarkdownExtension.php*"
  ) and
  (
    url.query wildcard "*javascript*" or
    url.query wildcard "*java%73cript*" or
    request.body wildcard "*javascript:*"
  )

Splunk SPL Query

index=web sourcetype=access_* 
  (uri_path="*ParsedownExtension.php" OR uri_path="*TwigMarkdownExtension.php") 
  (uri_query="*javascript%3A*" OR uri_query="*java%73cript%3A*" OR _raw="*javascript:*")
  | stats count earliest(_time) latest(_time) by src_ip uri uri_query http_user_agent status
  | sort - count

Wazuh OSSEC Rule

<group name="web_application,">
  <rule id="100231" level="8" frequency="1">
    <if_sid>31122</if_sid>
    <regex>ParsedownExtension\.php|TwigMarkdownExtension\.php</regex>
    <regex>javascript%3A|java%73cript%3A|javascript:</regex>
    <description>Typemill CMS - stored XSS payload (javascript: URI) via Markdown extension (CVE-2026-44401)</description>
    <group>attack.xss,cve.2026-44401,</group>
    <mitre>
      <id>T1204</id>
    </mitre>
  </rule>
</group>

Mitigation & Patch Guidance

Patch status: Patch Confidence 0/4 — UNPATCHED. No vendor fix, advisory, or fixed version exists in any tracked source. OSV state is unfixed. Treat all Typemill 2.x installations as vulnerable.

  1. Immediate mitigations

    • Restrict theme-configuration privileges to the smallest possible set of trusted administrators. Remove or reassign such roles from authors, editors, and third-party agencies.
    • Deploy a WAF/edge proxy rule that blocks javascript: and other non-http(s) URI schemes in request bodies and in server responses on Typemill content paths.
    • Apply a strict Content-Security-Policy (e.g., script-src 'self'; object-src 'none'; base-uri 'self'). A CSP without 'unsafe-inline' also suppresses javascript: URI execution in modern browsers, reducing client-side impact even though the payload remains stored.
    • Audit existing stored Markdown content and theme files for javascript: hrefs; remove any suspicious links.
    • Set session cookies with HttpOnly and Secure attributes and implement SameSite=Lax or Strict to blunt session-cookie theft and authenticated request forgery.
  2. Patch / upgrade steps

    • No upstream patch exists. Subscribe to Typemill security advisories and the NVD feed for CVE-2026-44401; apply the vendor fix as soon as it is released.
    • As an interim code-level measure (if the organization maintains a fork or can apply a hotfix), add an allowlist sanitizer to the Markdown rendering path in ParsedownExtension.php / TwigMarkdownExtension.php that rejects any href scheme other than http:, https:, and mailto:.
    • Track the OSV package status (/, 0→unfixed) and re-evaluate the vulnerable configuration each time the CMS is updated.
  3. Long-term hardening

    • Apply least-privilege role design for all CMS users; separate theme configuration from content authoring.
    • Centralize web-log ingestion (Elastic/Splunk/Wazuh) with the detection rules above and alert on javascript: URI anomalies.
    • Add a periodic content-integrity scan for dangerous URI schemes in Markdown source files.
    • Maintain an asset inventory of Typemill instances so that the eventual vendor patch can be deployed quickly.

References

Exploitation-in-the-wild evidence: None identified. CISA KEV: NO. No threat-actor campaigns currently reference CVE-2026-44401. EPSS: 0.00230 (14.1 percentile), indicating low current exploitation likelihood.

👁️ SHODAN DORKS (THREAT HUNTING)

What is this? Security researchers use these exact search queries on Shodan.io (a search engine for internet-connected devices) to find vulnerable systems globally. You can copy these dorks to see if your organization's IP space is exposed.

http.title:"Typemill"
http.html:"Typemill"
http.body:"Typemill" http.body:"cms"

💣 PoC CODE AVAILABLE

Exploit code for this CVE is tracked in our database. Access poc_code via API Pro.

[ API_PRO ] →
◈ SOURCE Analysis & enrichment: valtersit.com/cve/CVE-2026-44401/ · CVE data: NVD/MITRE (public domain) · © 2026 ValtersIT Hub
>_ SYSTEM_CORE: INTEL_ACTIVE
90% TEAM-CURATED // 10% AUTOMATED INGESTION.
ALL PATCH REFERENCES AND VERSION DATA SOURCED FROM NVD + OSV OFFICIAL REGISTRIES.