IPBUF安全漏洞报告
English
CVE-2026-42794 CVSS 6.1 中危

CVE-2026-42794 absinthe_plug GraphiQL接口XSS漏洞

披露日期: 2026-05-08
来源: 6b3ad84c-e1a6-4bf7-a703-f496b71e49db

漏洞信息

漏洞编号
CVE-2026-42794
漏洞类型
XSS (跨站脚本)
CVSS评分
6.1 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
需要交互 (UI:R)
影响产品
absinthe-graphql absinthe_plug

相关标签

XSSReflected XSSabsinthe_plugGraphQLElixirCWE-79

漏洞概述

absinthe-graphql 的 absinthe_plug 组件 GraphiQL 接口存在反射型跨站脚本(XSS)漏洞。该漏洞源于 js_escape/1 函数未正确转义反斜杠,允许攻击者通过构造特定 Payload 绕过单引号转义机制,从而在受害者浏览器中执行任意 JavaScript 代码,导致会话劫持或数据窃取。

技术细节

漏洞位于 lib/absinthe/plug/graphiql.ex 文件中的 'Elixir.Absinthe.Plug.GraphiQL':js_escape/1 函数。该函数在将 GET 参数嵌入内联 JavaScript 字符串时,虽然转义了单引号和换行符,但忽略了反斜杠的转义。攻击者可以在 payload 前添加反斜杠(如 \'),当浏览器解析时,反斜杠会抵消原本转义单引号的反斜杠,导致单引号逃逸出字符串上下文。随后,攻击者可以注入任意的 JavaScript 代码,利用反射型 XSS 特性诱导受害者点击链接,从而执行恶意操作。

攻击链分析

STEP 1
1. 侦察
攻击者确认目标使用了 absinthe_plug 且 GraphiQL 接口处于开启状态。
STEP 2
2. 构造 Payload
攻击者构造包含反斜杠前缀的恶意 Payload(例如 \';alert(1)//),利用 js_escape 未过滤反斜杠的缺陷。
STEP 3
3. 诱导攻击
攻击者将包含恶意参数的 URL 发送给受害者,诱导其点击(需要用户交互)。
STEP 4
4. 执行代码
受害者浏览器请求页面,服务器返回嵌入了恶意 JS 的响应,反斜杠抵消了转义字符,导致 JS 代码在受害者浏览器上下文中执行。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
# PoC for CVE-2026-42794 # The payload uses a backslash to bypass the single quote escaping. # Normal input: ' -> Escaped: \' -> Result in JS: '\'' (safe) # Malicious input: \' -> Escaped: \\' -> Result in JS: '\'' (breaks out) import requests target = "http://vulnerable-host/graphiql" payload = "\\';alert(1);//" params = {"query": payload} r = requests.get(target, params=params) if "alert(1)" in r.text: print("Vulnerability confirmed: XSS executed.") else: print("Check manually.")

影响范围

absinthe_plug >= 1.2.0, < 1.5.10

防御指南

临时缓解措施
如果无法立即升级,建议暂时在 Web 应用防火墙(WAF)中添加规则,拦截包含反斜杠后跟引号(\')的请求参数,或在反向代理层过滤此类特征。同时,限制 GraphiQL 仅允许内网访问。

参考链接

快速导航: 前沿安全 最新收录域名列表 最新威胁情报列表 最新网站排名列表 最新工具资源列表 最新CVE漏洞列表