使用NGINX和NGINX Plus防范CVE-2015-1635漏洞

NGINX | 2015年4月16日

4月14日,Microsoft发布了一则漏洞警报,该漏洞现已编号为CVE-2015-1635。如果攻击者向受影响的Windows系统发送特制的HTTP请求,此漏洞可能允许远程执行代码。如果无法立即修补生产环境中的Windows服务器,NGINX和NGINX Plus可帮助抵御攻击。

截至本文撰写时,该漏洞的具体细节尚未公布,但据报道,攻击者正尝试通过发送包含超大Range请求的HTTP请求来查找存在漏洞的系统。这可能会触发缓冲区溢出,导致Windows系统崩溃。

强烈建议用户应用Microsoft补丁来修复此漏洞。但是,如果无法在所有生产系统上应用该补丁,并且正在使用NGINX或NGINX Plus对发往这些系统的流量进行负载均衡或代理,只需进行简单的配置更改,即可拦截并修正发送到易受攻击系统的特殊请求。

识别和处理侦察流量

Mattias Geniar分析了攻击流量,并报告称,在Range标头中指定较大字节范围的HTTP请求会触发崩溃:

GET / HTTP/1.1rnHost: stuffrn
Range: bytes=0-18446744073709551615rn
rn

最简单的解决方法是使用proxy_set_header指令将Range标头设置为""(空字符串)。这样可在将HTTP请求转发到proxy_pass指令指定的Windows服务器之前,有效删除该标头:

server {    listen 80;
 
    location / {
        proxy_set_header Range "";
        proxy_pass http://windowsserver:80;
    }
}

如果应用需要支持字节范围请求,可以使用map指令将任何类似大整数的字符串替换为空字符串,然后使用proxy_set_header指令设置Range标头:

map $http_range $saferange {    "~d{10,}" "";  # if it matches a string of 10 or more integers, remove it
    default $http_range;
}
 
server {
    listen 80;
 
    location / {
        proxy_set_header Range $saferange;
        proxy_pass http://windowsserver:80;
    }
}

或者,当Range标头中的值类似于一个大整数时,可以返回HTTP状态码444。状态码444会指示NGINX和NGINX Plus立即关闭客户端连接,不返回任何内容。

server {    listen 80;
 
    if ($http_range ~ "d{9,}") {
        return 444;
    }
 
    location / {
        proxy_pass http://windowsserver:80;
    }
}

请确保安全并应用补丁。如果无法立即应用,NGINX和NGINX Plus可帮助暂时封堵这一潜在漏洞。

如需试用NGINX Plus,立即开始30天免费试用,或联系我们申请演示。


分享

关于作者

相关博客文章

NGINX Plus R26 正式发布
NGINX | 2022/02/15

NGINX Plus R26 正式发布

NGINX Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
NGINX | 2022/02/10

使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击

gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
NGINX | 2021/09/13

Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划

了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。

NGINX Plus R19 正式发布
NGINX | 2019/09/03

NGINX Plus R19 正式发布

NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。

NGINX现已正式加入F5
NGINX | 2019/05/09

NGINX现已正式加入F5

NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。

使用NGINX和NGINX Plus实现高性能缓存
NGINX | 2016/08/24

使用NGINX和NGINX Plus实现高性能缓存

我将介绍NGINX在内容缓存和性能方面的工作原理,并分享一些控制NGINX内容缓存方式的技巧。