GitHub Advisoryadvisory · Maven
GHSA-vh22-6c6h-rm8q jte's HTML templates containing Javascript template strings are subject to XSS
MEDIUM
Official page ↗
- Aliases
- CVE-2025-23026
- Ecosystem
- Maven
- Packages
- gg.jte:jte, gg.jte:jte-runtime
- Severity
- Moderate
- CVSS vector
- CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N
- Weaknesses
- CWE-150, CWE-79
- Reviewed
- 2025-01-13
Affected packages
• Maven gg.jte:jte: < 3.1.16 → fixed in 3.1.16
• Maven gg.jte:jte-runtime: < 3.1.16 → fixed in 3.1.16
Description
Summary
Jte HTML templates with `script` tags or script attributes that include a Javascript template string (backticks) are subject to XSS.
Details
The `javaScriptBlock` and `javaScriptAttribute` methods in the `Escape` class (source) do not escape backticks, which are used for Javascript template strings. Dollar signs in template strings should also be escaped as well to prevent undesired interpolation.
PoC
1. Use the Jte Gradle Plugin with the following code in `src/jte/xss.jte`:
```html
@param String someMessage
XSS Test
window.someVariable = `${someMessage}`;
XSS Test
```
2. Use the following Java code to demonstrate the XSS vulnerability:
```java
final StringOutput output = new StringOutput();
JtexssGenerated.render(new OwaspHtmlTemplateOutput(output), null, "` + alert(`xss`) + `");
renderHtml(output);
```
Impact
HTML templates rendered by Jte's `OwaspHtmlTemplateOutput` in versions less than or equal to `3.1.15` with `script` tags or script attributes that contain Javascript template strings (backticks) are vulnerable.
Related
Alias · CVE (1)
- CVE-2025-23026 jte (Java Template Engine) is a secure and lightweight template engine for Java and Kotlin. vulnerability
References
- https://github.com/casid/jte/security/advisories/GHSA-vh22-6c6h-rm8q web
- https://nvd.nist.gov/vuln/detail/CVE-2025-23026 advisory
- https://github.com/casid/jte/commit/a6fb00d53c7b8dbb86de933215dbe1b9191a57f1 web
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#description web
- https://github.com/casid/jte package
- https://github.com/casid/jte/blob/main/jte-runtime/src/main/java/gg/jte/html/escape/Escape.java#L43-L83 web