当前位置: 当前位置:首页 > 娱乐 > nginx 0day漏洞正文

nginx 0day漏洞

作者:焦点 来源:探索 浏览: 【大 中 小】 发布时间:2026-10-17 06:41:43 评论数:

2024年4月初,漏洞一个编号为CVE-2024-24989的漏洞漏洞在安全圈炸开了锅。nginx的漏洞HTTP/3模块里藏着一个use-after-free,攻击者能通过构造特定请求直接打崩worker进程,漏洞甚至在某些配置下实现远程代码执行。漏洞这不是漏洞nginx第一次出0day,但这次影响面够大——1.25.0到1.25.3版本全中招,漏洞而HTTP/3正是漏洞Cloudflare、Fastly这些CDN厂商最近两年拼命推的漏洞新特性。

我翻了下nginx的漏洞官方commit记录,修复补丁其实早在3月26日就进了main分支,漏洞但直到4月9日才发安全公告。漏洞这半个月的漏洞时间差,够黑产把利用脚本卖好几轮了。漏洞有个做WAF的漏洞朋友跟我说,他们4月2号就捕获到针对该漏洞的探测流量,payload里带着精心构造的QUIC Initial包,目标全是开了HTTP/3的金融类站点。

漏洞到底出在哪

问题在ngx_http_v3_parse_headers这个函数。HTTP/3用QPACK做头部压缩,解析动态表时如果遇到索引值超出范围的情况,nginx会释放掉一个指向header结构的指针,但没把指针置空。后续代码继续引用这块已释放的内存,攻击者就能往里面塞伪造的数据结构。说白了,就是典型的UAF,堆喷一下就能控制执行流。

利用条件不算苛刻。目标服务器得启用HTTP/3,而且编译时带了--with-http_v3_module。现在nginx官方二进制包默认不带这个模块,但Docker官方镜像从1.25.0开始就预编译进去了。我查了下Shodan,暴露在公网的nginx HTTP/3实例大概有12万台,其中三成是1.25.x版本。数字不算吓人,但这些机器里跑着不少API网关和边缘计算节点,真被打穿一个,内网横向移动的门就开了。

厂商和社区的反应

F5(nginx母公司)这次动作算快,4月9日当天就发了1.25.4和1.24.1两个修复版本。但尴尬的是,1.24.x稳定分支压根没编译HTTP/3模块,所以1.24.1的补丁纯粹是防御性更新。真正受影响的是那些追新特性的用户——为了HTTP/3的性能提升,把生产环境升到1.25.x,结果踩了雷。

Cloudflare在4月10日发了篇博客,说他们的边缘节点在漏洞公开前就通过热补丁修了。这话我信一半。Cloudflare的QUIC实现是自己fork的nginx,改了不少底层代码,原版漏洞不一定能直接套用。但中小厂商没这个能力,只能等官方包。有个做在线教育的运维在V2EX上吐槽,他们4月9日晚上紧急回滚了HTTP/3配置,结果第二天早上发现回滚脚本写错了,nginx根本没重启,白忙活一宿。

该不该慌

如果你没开HTTP/3,这事跟你没关系。检查方法很简单:nginx -V 2>&1 | grep http_v3。有输出就说明编译了模块,再看nginx.conf里有没有listen 443 quic。两个都满足,赶紧升级到1.25.4。升级前记得备份,nginx的平滑重启在HTTP/3场景下偶尔会卡住老worker,直接systemctl restart更稳妥。

临时缓解措施也有,在http块里加个map,把带异常QPACK头的请求全拒了。但治标不治本,攻击者换个编码方式照样能触发。我个人的判断是,这个漏洞的利用代码一周内就会出现在GitHub上,脚本小子们拿着扫描器全网扫,没打补丁的机器撑不过月底。nginx的0day不像Log4j那么普适,可一旦被盯上,暴露面就是实打实的。别赌概率,该升就升。