| Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
|---|---|---|---|
| roundup | pip | < 2.5.0 | 2.5.0 |
The vulnerability analysis of Roundup CVE-2025-53865 reveals a cross-site scripting (XSS) issue rooted in the application's template rendering engine. The patches and documentation indicate that the flaw is not in the Python code's logic itself, but rather in how the TAL (Template Attribute Language) templates handle user-supplied data. The investigation of the provided commit 65ac8f4dcb03a9a36a67c3e98fdf79cbd2a0b3fb shows that the fixes were applied directly to the HTML template files (.html).
There are two primary ways the XSS vulnerability is triggered:
Insecure tal:replace Usage: The tal:replace attribute was used to insert data into the templates. This attribute replaces the tag it's on with the unescaped value of the expression. When the expression's value comes from user input (e.g., context/title or request/user/username), it allows for the injection of malicious scripts. The fix was to replace tal:replace with <tal:x tal:content="..." />, which correctly escapes the content.
tal:content with structure Keyword: The tal:content attribute normally escapes its content. However, when used with the structure keyword, this escaping is disabled. The templates were using tal:content="structure context/.../plain", which allowed unescaped data from the URL context to be rendered, leading to XSS. The fix was to remove the structure keyword.
The identified vulnerable functions are the methods within the template engine that are directly responsible for these unsafe operations. During runtime, when a vulnerable page is rendered, a profiler would show these functions in the call stack as they process the malicious input from the templates. The functions TALInterpreter.do_replace and TALInterpreter.do_content are the core of the TAL engine's rendering process, and Property.plain is the method that provides the raw, unescaped data to the template. The confidence in these findings is high due to the detailed explanation in the patch and the clear changes in the template files.
A Semantic Attack on Google Gemini - Read the Latest Research