CVE-2026-41901 is a server-side template injection vulnerability in Thymeleaf versions before 3.1.5.RELEASE. Thymeleaf's restricted expression-execution contexts are intended to prevent dangerous expression evaluation, but specific constructs are not properly neutralized and can bypass those restrictions. When an application supplies unsanitized variable values containing attacker-controlled expressions and uses them in these sandboxed template contexts, Thymeleaf can evaluate the expressions.
Mallory correlates every CVE against your assets, your vendors, and active adversary campaigns. Know which vulnerabilities matter for you, not just which ones are loud.
What it means. What to do now. Patch path, mitigations, and the assume-compromise checklist.
What an attacker gets, and what they’ve been doing with it.
If you can’t patch tonight, do this now.
Patch, then assume compromise.
1 valid exploit after Mallory filtered fakes, detection scripts, and README-only repos (1 hidden).
This repository is a small standalone Bash-based proof-of-concept exploit plus a local lab builder. It contains two executable scripts: setup-lab.sh creates a vulnerable Spring Boot/Thymeleaf application inside Docker, and exploit-cve-2026-41901.sh sends crafted Thymeleaf expression payloads to that app to demonstrate remote command execution. Repository structure and purpose: - README.md: usage notes and references. - exploit-cve-2026-41901.sh: main exploit script. - setup-lab.sh: generates a full local test lab, including pom.xml, Java controller, Thymeleaf template, and Dockerfile. Main exploit behavior: - Targets http://localhost:8080/poc. - Uses curl with a GET parameter named input. - Injects a Thymeleaf expression of the form [[${...}]]. - The expression calls T(java.lang.Runtime).getRuntime().exec("<cmd>") and reads stdout with java.util.Scanner. - Iterates through several hardcoded commands: id, whoami, hostname, ls /tmp, and cat /etc/passwd | head -5. - Greps the HTTP response for indicative output strings, implying the exploit expects reflected command output rather than a purely blind channel. Lab setup behavior: - Builds a Maven-based Spring Boot 3.2.0 application with Thymeleaf 3.1.4.RELEASE. - Exposes a GET /poc endpoint that accepts input and stores it in the model as userInput. - Generates a Thymeleaf template that reflects userInput and also includes a hardcoded Runtime.exec('whoami') demonstration in a <pre> block. - Builds and runs the app in Docker, publishing port 8080 to localhost. Assessment: - This is a real exploit POC, not merely a detector. - It is operational because it includes a working payload and a reproducible vulnerable lab, but it is not highly weaponized: commands and target are hardcoded and there is no generalized payload customization, stealth, or post-exploitation automation. - The attack vector is web/network-based expression injection leading to server-side command execution.
Products and vendors Mallory has correlated with this vulnerability. Open in Mallory to drill down to specific CPE configurations and version ranges.
Vendor-confirmed product mapping. Mallory continuously reconciles this list against your asset inventory.
5 sources tracked across advisories, community write-ups, and news. New activity surfaces here as Mallory finds it.
Query your assets running an affected version, and investigate the blast radius.
Every observed campaign linking this CVE to a named adversary.
Malware families riding this exploit, with evidence and IOCs.
YARA, Sigma, Snort, and vendor rules, auto-deployed to your SIEM.
Cross-references every affected SKU, including bundled OEM variants.
Community discussion across Reddit, Mastodon, and other social sources.