CVE-2026-29038
Received Received - Intake
Reflected XSS in changedetection.io /rss/tag/ Endpoint

Publication date: 2026-03-06

Last updated on: 2026-03-10

Assigner: GitHub, Inc.

Description
changedetection.io is a free open source web page change detection tool. Prior to version 0.54.4, there is a reflected cross-site scripting (XSS) vulnerability identified in the /rss/tag/ endpoint of changedetection.io. The tag_uuid path parameter is reflected directly in the HTTP response body without HTML escaping. Since Flask returns text/html by default for plain string responses, the browser parses and executes injected JavaScript. This issue has been patched in version 0.54.4.
CVSS Scores
EPSS Scores
Probability:
Percentile:
Meta Information
Published
2026-03-06
Last Modified
2026-03-10
Generated
2026-05-06
AI Q&A
2026-03-06
EPSS Evaluated
2026-05-05
NVD
EUVD
Affected Vendors & Products
Showing 1 associated CPE
Vendor Product Version / Range
webtechnologies changedetection to 0.54.4 (exc)
Helpful Resources
Exploitability
CWE
CWE Icon
KEV
KEV Icon
CWE ID Description
CWE-79 The product does not neutralize or incorrectly neutralizes user-controllable input before it is placed in output that is used as a web page that is served to other users.
Attack-Flow Graph
AI Powered Q&A
Can you explain this vulnerability to me?

[{'type': 'paragraph', 'content': "CVE-2026-29038 is a reflected cross-site scripting (XSS) vulnerability in the changedetection.io application, specifically in the /rss/tag/ endpoint. The vulnerability arises because the tag_uuid path parameter is directly reflected in the HTTP response body without proper HTML escaping. Since Flask returns text/html by default for plain string responses, any malicious JavaScript injected via the tag_uuid parameter is executed by the victim's browser."}, {'type': 'paragraph', 'content': 'This happens because the application interpolates the tag_uuid parameter into the response using an unescaped Python f-string, allowing attackers to craft URLs that inject JavaScript code. When a victim with an active session accesses such a URL, the injected script runs in their browser context.'}, {'type': 'paragraph', 'content': 'The vulnerability was fixed by enforcing stricter validation on the tag_uuid parameter, changing its type from a generic string to a UUID string, which only accepts properly formatted UUIDs, thereby preventing malicious script injection.'}] [1, 2, 3]


How can this vulnerability impact me? :

[{'type': 'paragraph', 'content': "This vulnerability can lead to several security impacts if exploited. An attacker can execute arbitrary JavaScript in the context of a victim's browser session when the victim accesses a maliciously crafted URL."}, {'type': 'list_item', 'content': 'The attacker can steal session cookies via document.cookie, potentially leading to account takeover if cookies are not protected with HttpOnly flags.'}, {'type': 'list_item', 'content': 'It can facilitate phishing attacks by leveraging trusted changedetection.io URLs to trick users into executing malicious scripts.'}, {'type': 'list_item', 'content': 'The vulnerability has a moderate severity with a CVSS 3.1 base score of 6.1, indicating it is exploitable over the network with low complexity and no privileges required, but user interaction is needed.'}] [2]


How does this vulnerability affect compliance with common standards and regulations (like GDPR, HIPAA)?:

I don't know


How can this vulnerability be detected on my network or system? Can you suggest some commands?

[{'type': 'paragraph', 'content': 'This vulnerability can be detected by testing the /rss/tag/ endpoint of changedetection.io for reflected cross-site scripting (XSS) by injecting JavaScript payloads into the tag_uuid path parameter and observing if the payload is reflected unescaped in the HTTP response body.'}, {'type': 'paragraph', 'content': 'A practical approach is to send crafted GET requests with malicious input in the tag_uuid parameter, for example using curl or similar HTTP clients.'}, {'type': 'list_item', 'content': 'curl -i "http://<target>/rss/tag/%3Cimg%20src%3Dx%20onerror%3Dalert(document.domain)%3E?token=<valid_token>"'}, {'type': 'paragraph', 'content': 'If the response contains the injected <img> tag unescaped and triggers JavaScript execution (e.g., an alert), the vulnerability is present.'}, {'type': 'paragraph', 'content': "Note that a valid RSS access token is required to perform this test, which can be extracted from the homepage's <link> HTML tag."}] [2]


What immediate steps should I take to mitigate this vulnerability?

Immediate mitigation steps include updating changedetection.io to version 0.54.4 or later, where the vulnerability has been patched by enforcing UUID validation on the tag_uuid parameter.

If updating is not immediately possible, temporary mitigations include:

  • Modify the application code to HTML escape the tag_uuid parameter before reflecting it in the response, for example using markupsafe.escape.
  • Change the Content-Type header of the response to text/plain to prevent browsers from interpreting injected HTML or JavaScript.

Additionally, restrict access to the RSS token and monitor for suspicious requests targeting the /rss/tag/ endpoint.


Ask Our AI Assistant
Need more information? Ask your question to get an AI reply (Powered by our expertise)
0/70
EPSS Chart