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

CVE-2026-33128 H3框架SSE注入漏洞

披露日期: 2026-03-20

漏洞信息

漏洞编号
CVE-2026-33128
漏洞类型
SSE注入
CVSS评分
7.5 高危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
H3

相关标签

SSE注入H3Web安全注入漏洞CVE-2026-33128

漏洞概述

H3是一个极简的HTTP框架。在1.15.6之前的版本以及2.0.0至2.0.1-rc.14版本中,createEventStream函数存在SSE注入漏洞。该漏洞源于formatEventStreamMessage和formatEventStreamComment函数中缺少换行符清理机制。攻击者若能控制SSE消息的任意字段(如id, event, data或comment),即可向连接的客户端注入任意SSE事件。该问题已在1.15.6和2.0.1-rc.15版本中修复。

技术细节

该漏洞的原理在于Server-Sent Events (SSE) 协议的数据格式规范。SSE协议规定,不同的消息块之间通过双换行符(\n\n)进行分隔,字段通过冒号定义。在H3框架的受影响版本中,当使用createEventStream发送消息时,用于格式化消息的内部函数未对用户输入的换行符进行清洗。如果攻击者能够控制传入这些函数的数据(例如通过API请求参数控制data字段的内容),并在其中插入双换行符(\n\n),即可欺骗SSE解析器。解析器会将换行符后的内容视为新的SSE控制指令(如event:类型或data:内容)。利用此漏洞,攻击者可以在不破坏连接的情况下,向订阅了该SSE流的所有客户端推送伪造的事件消息,从而劫持客户端逻辑或误导用户。

攻击链分析

STEP 1
1. 信息收集
攻击者识别使用H3框架构建的应用程序,并发现其使用了createEventStream功能暴露了SSE端点。
STEP 2
2. 载荷构造
攻击者构造包含SSE协议控制字符的恶意载荷,特别是在数据字段中插入双换行符(\n\n)以及伪造的event和data字段。
STEP 3
3. 发送请求
攻击者通过Web请求将构造好的恶意载荷发送给服务器,该载荷被传递给createEventStream的格式化函数。
STEP 4
4. 注入执行
服务器未对换行符进行清理,直接将载荷转发给SSE流。客户端接收到被分割的消息,解析出攻击者注入的伪造事件。
STEP 5
5. 影响达成
客户端执行了伪造事件对应的JavaScript逻辑,可能导致数据泄露、恶意脚本执行或UI欺骗。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
// Vulnerable Server Concept (H3) import { createEventStream, defineEventHandler } from 'h3'; export default defineEventHandler(async (event) => { const stream = createEventStream(event); // Attacker controlled input (e.g. from query param 'data') const maliciousInput = "Normal Data\n\nevent: hack\ndata: pwned\n\n"; // The vulnerable function does not sanitize '\n' stream.push({ data: maliciousInput }); return stream; }); // PoC Client Explanation: // 1. Connect to the vulnerable endpoint. // 2. Instead of receiving one message, the client receives: // - Message 1: data: Normal Data // - Message 2: event: hack, data: pwned // 3. The client processes the injected 'hack' event.

影响范围

H3 < 1.15.6
H3 >= 2.0.0, <= 2.0.1-rc.14

防御指南

临时缓解措施
如果无法立即升级版本,应在应用层实施临时缓解措施。对于所有传递给createEventStream的用户输入(id, event, data, comment),必须进行过滤或转义处理,特别是要移除回车符(\r)和换行符(\n),以防止攻击者篡改SSE消息结构。

参考链接

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