CVE-2026-1721:CVE-2026-1721:当 JSON.stringify() 背叛你时的 Cloudflare Agents
发布: (2026年2月15日 GMT+8 04:10)
3 分钟阅读
原文: Dev.to
Source: Dev.to
概述
- 漏洞编号: CVE-2026-1721
- CVSS 评分: 6.2(中等)
- 发布时间: 2026-02-13
- 漏洞类型: 反射型跨站脚本(XSS)
- CWE 编号: CWE‑79
- 攻击向量: 网络(反射)
- 利用状态: 已提供 PoC
在 Cloudflare Agents AI Playground(版本 …)中存在一个反射型 XSS 漏洞。由于浏览器会解析生成的 JSON 字符串中的 “ 标签,攻击者可以脱离 JSON 上下文并注入任意 JavaScript,从而导致会话劫持和数据泄露(例如 LLM 聊天记录和模型上下文协议(MCP)服务器)。
技术细节
根本原因: 对浏览器在内联 HTML 中解析 script 标签的方式理解错误。
JSON.stringify不会 对 “ 序列进行转义,导致攻击者能够提前结束 script 标签。典型易受攻击代码:
// Vulnerable handler (inline script)
const safeError = JSON.stringify(result.authError);
return new Response(`alert(${safeError})`);- 利用方式: 攻击者提供包含
maliciousCode()的精心构造的authError值,使注入的脚本在受害者浏览器中执行。
影响
- 会话劫持: 攻击者可以窃取身份验证令牌或 MCP 会话标识符。
- 数据泄露: 敏感的聊天日志和模型上下文数据可能被读取并发送到攻击者控制的端点。
- 范围: 影响任何使用易受攻击的
agentsnpm 包的应用程序。
修复步骤
- 升级
agentsnpm 包至 0.3.10 版或更高。 - 审计 所有自定义 OAuth 回调处理程序,检查是否在 HTML/JS 响应中使用了
JSON.stringify(或类似方法)。 - 验证
error和error_description参数绝不以原始形式渲染到响应体中。 - 部署 内容安全策略(CSP),阻止内联脚本,仅允许受信任来源。
- 使用适用于 HTML 上下文的序列化器。 将
JSON.stringify替换为能够转义 HTML 字符的库,例如serialize-javascript。 - 实现 CSP,禁止内联脚本(
script-src 'self'),并启用基于nonce或hash的脚本执行。
参考资料
- GitHub Pull Request #841 – 修复实现。
- NVD Entry for CVE‑2026‑1721 – 官方漏洞记录。