CVE-2026-34206 json
Captcha Protect: Reflected XSS in challenge page via unsanitized destination rendered with text/template
published 2026-03-31 7 mo ago modified 2026-07-24 3 mo ago also EUVD-2026-17602
- cvss
- 6.1
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.2%
- EPSS 0.2% chance of exploitation in 30 days, percentile 9%
- public exploits
- 0
- none known
Summary
Captcha Protect is a Traefik middleware to add an anti-bot challenge to individual IPs in a subnet when traffic spikes are detected from that subnet. Prior to version 1.12.2, a reflected cross-site scripting (XSS) vulnerability exists in github.com/libops/captcha-protect. The challenge page accepted a client-supplied destination value and rendered it into HTML using Go's text/template. Because text/template does not perform contextual HTML escaping, an attacker could supply a crafted destination value that breaks out of the hidden input attribute and injects arbitrary script into the challenge page. This issue has been patched in version 1.12.2.
Patch / fix
- libops captcha_protect 1.12.2
CISA SSVC
- Exploitation
- none
- Automatable
- no
- Technical impact
- partial
- Assessed
- 7 mo ago
Exploit prediction
0.19% chance of exploitation in the next 30 days, higher than 9% of all scored CVEs (FIRST EPSS, 2026-11-08).
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 6.1 | CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N |
Affected products
- libops captcha-protect
Classification
- Weakness
-
- CWE-79 Improper Neutralization of Input During Web Page Generation
References
-
github.com
/libops/captcha-protect/commit/eef6211ecd1147273be484d913b81c68c0bd8d3f
patch
-
github.com
/libops/captcha-protect/security/advisories/GHSA-ph62-4j5g-2q4r
mitigation, patch, vendor-advisory
-
github.com
/libops/captcha-protect/releases/tag/v1.12.2
product, release-notes
Sources
- CVE List CVE-2026-34206
- NVD CVE-2026-34206
Fencer Vulns keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.