Severity by source
AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:L/A:N
Network-reachable proxy endpoint, no auth needed (PR:N), one victim click (UI:R); JS executes in Remark42 origin so scope changes and confidentiality is high, with limited integrity and no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
3DescriptionCVE.org
Remark42 is a self-hosted comment engine for blogs, articles, or any other place where readers can add comments. Versions 1.6.0 through 1.15.0 contain a Cross-Site Scripting (XSS) vulnerability exploitable through content-type spoofing. The Remark42 image proxy fetches an arbitrary remote URL and re-serves the response from Remark42's own origin. During the download phase, the proxy determines whether the resource is an image by inspecting only the Content-Type header advertised by the remote server, never examining the actual bytes; during the serving phase, it instead derives the response Content-Type by sniffing those bytes with http.DetectContentType. An attacker can exploit this inconsistency by hosting a URL that advertises Content-Type: image/png while returning an HTML/JavaScript body: the download check accepts it as an image, the serving path sniffs the body and emits Content-Type: text/html, and the browser renders the attacker-controlled HTML/JavaScript as a document within Remark42's origin. Exploitation requires no Remark42 account on the target instance; the attacker only needs to host the malicious upstream URL and deliver the proxy link to a victim by any means, such as email, direct message, or a link on another website. This issue has been fixed in version 1.16.0.
AnalysisAI
Stored/reflected XSS in Remark42 self-hosted comment engine versions 1.6.0 through 1.15.0 allows unauthenticated remote attackers to execute arbitrary JavaScript in the context of a Remark42 origin by abusing a Content-Type inconsistency in the image proxy. The proxy trusts the upstream Content-Type header during the download check but re-sniffs bytes when serving, letting an HTML/JS payload advertised as image/png be re-served as text/html from the victim instance's own origin. No public exploit identified at time of analysis; fixed in 1.16.0.
Technical ContextAI
Remark42 is a Go-based self-hosted commenting platform (cpe:2.3:a:umputun:remark42) that ships an image proxy intended to rehost remote images on the Remark42 origin to avoid mixed-content and tracking issues. The root cause is CWE-79 (Cross-Site Scripting) driven by a Content-Type validation/serving mismatch: the download gate relies on the remote server's advertised Content-Type header, while the serving handler uses Go's http.DetectContentType to sniff actual bytes. Because the served response carries the Remark42 origin, the browser executes any HTML/JavaScript returned by the upstream URL within that trust boundary. The upstream patch (commit 78d6de6) does not change the proxy decisioning itself but adds defense-in-depth headers - most importantly X-Content-Type-Options: nosniff (plus Referrer-Policy) - to prevent the browser from MIME-sniffing the proxied response away from a non-HTML declared type.
RemediationAI
Vendor-released patch: upgrade to Remark42 v1.16.0 or later, which adds X-Content-Type-Options: nosniff and Referrer-Policy: strict-origin-when-cross-origin response headers via the securityHeadersMiddleware (commit 78d6de6bce1e961f023969da3ec8a00dd80c9ae8); see https://github.com/umputun/remark42/releases/tag/v1.16.0 and the advisory at https://github.com/umputun/remark42/security/advisories/GHSA-4c8j-mgm4-qqvp. If immediate upgrade is not possible, disable the image proxy in the Remark42 configuration (IMAGE_PROXY_HTTP2HTTPS / IMAGE_PROXY_CACHE_EXTERNAL) - the trade-off is that http-image URLs embedded in comments will be loaded directly by the browser and may break under mixed-content rules or leak referrer data. As a reverse-proxy compensating control, set X-Content-Type-Options: nosniff on all responses from the Remark42 origin at the fronting nginx/Caddy/Cloudflare layer, which neutralizes the MIME-sniff escalation without functional regression; additionally, tightening the Content-Security-Policy script-src to block inline script on the Remark42 origin reduces the blast radius if the proxy is re-enabled later.
umputun remark42 version 1.12.1 and before has a Blind Server-Side Request Forgery (SSRF) vulnerability. Rated high seve
remark42 before 1.6.1 allows XSS, as demonstrated by "Locator: Locator{URL:" followed by an XSS payload. Rated medium se
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
Share
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-37511
GHSA-4c8j-mgm4-qqvp