CVE-2026-34206libops/captcha-protect是一个Traefik中间件,用于在检测到子网流量激增时对单个IP添加反机器人验证。在1.12.2版本之前,该组件存在反射型跨站脚本(XSS)漏洞。由于挑战页面使用Go的text/template渲染用户提供的destination参数且未进行HTML上下文转义,攻击者可构造恶意参数值跳出隐藏输入框并注入任意脚本。该问题已在1.12.2版本中修复。
该漏洞源于Go语言模板引擎的不安全使用。开发者使用了`text/template`而非`html/template`来渲染挑战页面中的`destination`参数。`text/template`设计用于纯文本生成,不会自动处理HTML上下文转义,导致特殊字符(如", <, >)被直接输出到HTML文档中。具体场景下,当用户访问挑战页面时,URL参数中的destination值被直接嵌入到HTML隐藏输入标签(<input type="hidden" ...>)的value属性中。攻击者可以构造形如`" onfocus=alert(1) autofocus="`或`"><script>alert(1)</script>`的Payload。当受害者访问包含该Payload的链接时,服务器将其原样渲染,导致HTML结构被破坏,注入的脚本在受害者浏览器中执行,从而窃取会话凭证或执行恶意操作。