首页 网络安全 正文
  • 本文约1000字,阅读需5分钟
  • 145
  • 0

Starlet HTTP请求走私漏洞CVE-2026-40561

摘要

栋科技漏洞库关注到 Perl 版 Starlet 0.31 及以下版本存在请求头优先级处理不当漏洞,现已追踪为CVE-2026-40561,CVSS 评分未知。

Starlet 是一款轻量、高性能、Prefork 模型的 Perl PSGI/Plack HTTP 服务器,采用经典的 Prefork + 多进程并发模型,架构简洁高效。

一、基本情况

Starlet 专为反向代理后端设计,以极简架构、低内存占用、高并发处理、稳定可靠为核心优势,其广泛用于 Perl Web 应用生产环境。

Starlet 是开源 Perl PSGI/Plack HTTP 服务器组件,是 Perl PSGI/Plack 生态中小而美的高性能 HTTP 服务器,专为反向代理后端设计。

Starlet HTTP请求走私漏洞CVE-2026-40561

栋科技漏洞库关注到 Perl 版 Starlet 0.31 及以下版本存在请求头优先级处理不当漏洞,现已追踪为CVE-2026-40561,CVSS 评分未知。

二、漏洞分析

CVE-2026-40561 漏洞是存在于 Perl 版 Starlet 0.31 及以下版本存在请求头优先级处理不当漏洞,该漏洞可导致 HTTP 请求走私攻击。

当 HTTP 请求中同时存在 Content-Length 和 Transfer-Encoding: chunked 头时,Starlet 错误地优先使用 Content-Length 头进行解析。

根据 RFC 7230 3.3.3 标准规范,Transfer-Encoding 必须优先于 Content-Length。

攻击者可利用该漏洞,通过前端反向代理走私恶意 HTTP 请求。

受影响版本中,handle_connection 方法在 lib/Starlet/Server.pm 中处理 HTTP 请求时,

当请求同时包含 Transfer-Encoding 和 Content-Length 头字段,未正确遵循 RFC 7230 3.3.3 规范。

代码优先使用 Content-Length 作为请求体长度判断依据,而规范要求 Transfer-Encoding 必须优先。

这导致攻击者可通过在前端反向代理发送包含两个头的恶意请求,绕过安全检查将非法请求走私到后端服务器。

修复版本中通过在 handle_connection 方法中添加检查逻辑,

当检测到 Transfer-Encoding: chunked 且存在 Content-Length 时,

删除 Content-Length 头以符合 RFC 规范,同时添加 Content-Length 值必须为纯数字的校验,消除了请求走私风险。

三、影响范围

Starlet Perl 版 ≤ 0.31

四、修复建议

Starlet Perl 版 > 0.31

五、参考链接

管理员已设置登录后刷新可查看



扫描二维码,在手机上阅读
评论
更换验证码
友情链接