微软发布重要安全补丁 修复了一个有史以来最严重级别的安全漏洞

10月19日,微软把一枚“黑桃A”拍在桌上:CVE-2025-55315,HTTP请求走私漏洞,严重级直接拉到“Critical+”,号称Kestrel诞生以来最危险的一票。补丁发布不到三小时,GitHub上就出现了概念验证代码,安全圈上一次这么热闹,还是Heartbleed时代。对于站长、开发者乃至每一个把API托管在ASP.NET Core上的普通公司,这个周末注定不会太平。

HTTP请求走私并不是新把戏,它的核心在于“协议歧义”。浏览器以为请求结束,而服务器还在等下一行;攻击者把两段各说各话的HTTP包拼成“夹心饼干”,前端代理与后端Kestrel各自理解一半,就能把恶意指令偷偷塞进本属于别人的TCP连接。结果是什么?缓存投毒、会话劫持、甚至直接绕过JWT认证去调用管理接口。以往这类攻击需要Nginx+Tomcat这种“跨语种”组合才容易得手,如今Kestrel自己就能左右互搏,意味着原本统一的.NET栈也不再可信。

微软公告写得克制:仅影响“特定默认配置”。但安全公司Rapid7连夜测试发现,只要项目模板里启用了WebMarkupMin或反向代理,就能把“理论”升级为“实测通杀”。更糟的是,Kestrel为了高性能默认开启HTTP/2、HTTP/1.1复用,走私包可以披着合规的HTTP/2帧溜进管道,再被降级成HTTP/1.1发给后端,整个过程中IIS日志里几乎留不下痕迹。换句话说,攻击者完成入侵后,你连“谁偷了数据”都查不到。

那打补丁不就完了?现实永远比理想骨感。ASP.NET Core的版本跨度从3.1到9.0,官方只给仍在支持的6.0、8.0提供更新,大批跑在.NET 5甚至.NET Core 3.1的生产应用,要么付费买扩展支持,要么自己改代码。中小公司最常遇到的场景是:开发早已离职,文档只剩一句“能跑就别动”。即便下定决心升级,还得先过测试环境、灰度、业务高峰窗口三道关,打完补丁可能已是两周后——而蠕虫从不排期。

有人把锅全甩给“默认配置”,这其实是事后诸葛。Kestrel的设计哲学是“不给性能添一点脂肪”,于是把HTTP解析的宽松度留给开发者自己拧紧。过去十年,我们习惯了“微软帮你兜底”,但云原生时代,框架只负责把跑车钥匙交给你,不系安全带就直冲200迈,撞墙不是车厂的错。CVE-2025-55315像一面镜子,照出了“默认即安全”神话的破灭:框架升级速度永远快不过业务迭代,最终守门人只能是开发自己。

补丁已经发布,攻击样本正在路上,留给我们的窗口期不会超过一个“双十一”大促。记得把测试环境调到“地狱模式”,再用Charles、Burp反复砸自己的站点;如果日志里出现400与502交替、Content-Length与Transfer-Encoding并存的畸形包,别犹豫——立刻回源、封IP、升级Runtime。毕竟,CVE-2025-55315的CVSS评分是创纪录的10.0,但真正的损失数字,将由每一个慢半拍的运维和开发亲手写下。

总有人说安全是“成本中心”,可等到用户数据被挂在暗网甩卖,品牌公关费足够让你买下半条Azure。与其事后发道歉信,不如今晚就关掉游戏更新服务器:把Kestrel升到8.0.15,泡一杯咖啡,看补丁日志里那行“Fixed request smuggling in Kestrel servers”慢慢刷过——这可能是2025年最值得加班的30分钟。