IPBUF安全漏洞报告
English
CVE-2026-43968 CVSS 4.0 中危

CVE-2026-43968 cowlib CRLF注入漏洞

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

漏洞信息

漏洞编号
CVE-2026-43968
漏洞类型
CRLF注入
CVSS评分
4.0 中危
攻击向量
网络 (AV:N)
认证要求
无需认证 (PR:N)
用户交互
无需交互 (UI:N)
影响产品
ninenines cowlib

相关标签

CRLF注入XSScowlibSSEWeb安全

漏洞概述

ninenines cowlib组件中存在CRLF注入漏洞。该漏洞源于cow_sse:event/1函数未能正确中和回车符(\r),攻击者可利用此缺陷在服务器发送事件(SSE)中注入恶意字段。通过构造特制的数据包,攻击者能够分割SSE事件或伪造包含任意类型和载荷的完整事件。在典型部署场景下,这可能导致客户端逻辑被操纵,甚至引发存储型XSS攻击。受影响版本涵盖2.6.0至2.16.1之前的所有版本。

技术细节

该漏洞位于ninenines cowlib库的SSE处理模块中。核心问题在于cow_sse:event/1函数对输入字段的校验机制不完整,仅针对换行符(\n)进行了防护,而忽略了回车符(\r)。同时,内部用于处理data和comment字段的prefix_lines/2函数也仅以\n作为分隔符。然而,SSE规范要求客户端将\r\n、\r和\n视为等效的行终止符。由于这一差异,攻击者可以通过在id、event、data或comment字段中注入\r字符,绕过服务端的过滤逻辑。当客户端解析这些恶意构造的SSE流时,\r会被解析为新行的开始,从而允许攻击者注入伪造的event类型和data字段。这种注入行为可能导致EventSource客户端执行错误的逻辑分支,或在将event.data插入DOM时触发存储型跨站脚本攻击。

攻击链分析

STEP 1
侦察
攻击者识别出目标应用使用了受影响版本的ninenines cowlib库处理SSE连接。
STEP 2
攻击准备
攻击者构造包含回车符(\r)的恶意数据,旨在绕过cowlib对换行符(\n)的过滤。
STEP 3
漏洞利用
攻击者将恶意数据发送至服务端SSE接口,cowlib在处理时未净化\r,导致其被包含在响应流中。
STEP 4
客户端解析
受害者的浏览器EventSource客户端接收SSE流,根据SSE规范将\r视为行终止符,解析出伪造的事件字段。
STEP 5
影响执行
客户端应用根据伪造的事件类型执行逻辑,或将恶意数据渲染至DOM,触发XSS攻击。

PoC / 利用代码

⚠️ 仅供安全研究
以下代码仅用于安全研究和授权测试,未经授权使用属于违法行为。
PoC
%% PoC Concept: Injecting a malicious event using Carriage Return %% Vulnerable component: ninenines cowlib < 2.16.1 -module(cve_poc). -export([inject/0]). inject() -> %% Normal event data controlled by user Id = "123", %% Malicious payload injecting CRLF (\r) to split the event %% This injects a new 'event: hack' and 'data: <script>...' Data = "normal_data\revent: hack\rdata: <img src=x onerror=alert(1)>", %% In vulnerable versions, cow_sse:event/1 processes this. %% The output stream sent to the browser will look like: %% id: 123 %% data: normal_data %% event: hack %% data: <img src=x onerror=alert(1)> %% The browser EventSource API treats the \r as a line terminator, %% effectively splitting the event and executing the XSS payload. io:format("Payload: ~p~n", [Data]).

影响范围

ninenines cowlib >= 2.6.0, < 2.16.1

防御指南

临时缓解措施
如果无法立即升级,建议在将数据传递给cowlib之前,实施中间件或过滤器以剥离或转义回车符(\r)和换行符(\n),防止SSE流被恶意注入。

参考链接

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