Nginx 曝出存在18年的堆缓冲区溢出漏洞 CVE-2026-42945:可远程代码执行,影响所有主流版本

安全研究人员近日公开了Nginx中一个存在长达18年的严重漏洞(CVE-2026-42945),该漏洞位于ngx_http_rewrite_module中,属于堆缓冲区溢出类型,攻击者可以利用它实现远程代码执行(RCE)。这意味着任何运行受影响版本Nginx的服务器,都可能被远程攻击者完全控制。

漏洞概述

CVE-2026-42945是一个堆缓冲区溢出漏洞,存在于Nginx的HTTP重写模块(ngx_http_rewrite_module)中。该模块负责处理配置文件中的rewrite指令,是Nginx最基础、最常用的功能之一。

关键信息:

  • CVE编号:CVE-2026-42945
  • 漏洞类型:堆缓冲区溢出(Heap Buffer Overflow)
  • 影响版本:Nginx 0.6.27 到 1.30.0(跨度18年)
  • 修复版本:Nginx 1.31.0 / 1.30.1
  • 危害等级:严重(Critical)——可实现远程代码执行
  • 发现方式:由安全研究系统DepthFirst自主发现

漏洞影响范围

这个漏洞影响范围极广。从2008年发布的Nginx 0.6.27到最新的1.30.0版本,所有使用了rewrite指令的Nginx实例都可能受到影响。考虑到rewrite是Nginx配置中最常见的指令之一,几乎所有生产环境的Nginx服务器都在受影响范围内。

除了CVE-2026-42945之外,同一研究还披露了另外三个相关漏洞:

  • CVE-2026-42946:另一个内存损坏漏洞
  • CVE-2026-40701:内存安全问题
  • CVE-2026-42934:相关的内存损坏缺陷

这些漏洞都与Nginx的内存管理机制有关,说明该模块在处理特殊构造的输入时存在系统性的安全问题。

漏洞发现过程

这个漏洞的发现方式本身也值得关注。它是由名为DepthFirst的安全研究系统自主发现的,而非人工审计的结果。DepthFirst是一个自动化漏洞挖掘系统,能够对大型C/C++代码库进行深度分析。

该系统在分析Nginx源码时,发现了ngx_http_rewrite_module中处理变量赋值时的边界检查缺陷。通过精心构造的请求,攻击者可以触发堆缓冲区溢出,进而控制程序执行流程。

漏洞利用详情

漏洞利用代码(PoC)已经公开发布。攻击的核心在于:

  1. 发送特制的HTTP请求,其中包含精心构造的rewrite指令参数
  2. Nginx的rewrite模块在处理这些参数时,未正确验证缓冲区边界
  3. 溢出数据覆盖堆上的相邻内存区域,包括函数指针
  4. 当Nginx后续执行被覆盖的函数指针时,攻击者获得代码执行权

由于Nginx通常以root或www-data权限运行,成功利用该漏洞的攻击者可以获得服务器的完全控制权,包括读取所有网站文件、数据库凭证、SSL私钥等敏感信息。

站长应对建议

立即行动:

  1. 检查当前Nginx版本:运行 nginx -v 查看版本号
  2. 立即升级:升级到Nginx 1.31.0或1.30.1。如果使用包管理器:
    • Ubuntu/Debian:sudo apt update && sudo apt upgrade nginx
    • CentOS/RHEL:sudo yum update nginx
  3. 临时缓解措施:如果暂时无法升级,可以检查Nginx配置中是否使用了rewrite指令,评估是否可以临时禁用
  4. 检查日志:查看Nginx访问日志中是否有异常请求,特别是包含异常长URI或特殊字符的请求
  5. 使用WAF:在Nginx前部署Web应用防火墙,拦截可疑的rewrite相关请求

后续影响

这个漏洞再次提醒我们,即使是Nginx这样经过广泛审计的基础设施软件,也可能隐藏着存在多年的安全缺陷。自动化的漏洞发现工具正在改变安全研究的格局——过去需要人工数周才能发现的漏洞,现在可能被自动化系统在几小时内找到。

对于站长来说,保持软件更新永远是第一要务。建议配置自动安全更新,或至少订阅Nginx的安全公告邮件列表,以便在第一时间获知安全更新。

来源:
DepthFirst: Nginx-Rift – Achieving Nginx RCE via an 18-year-old Vulnerability
GitHub: Nginx-Rift 漏洞披露
Nginx官方安全公告

© 版权声明
THE END
喜欢就支持一下吧
点赞10 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容