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 Plus R26通过缓存JSON Web密钥集加快JWT验证,并强化TLS握手,从而提升安全性。NGINX JavaScript的新功能包括增强对异步函数的支持,以及实现WebCrypto API。
使用NGINX App Protect DoS保护gRPC应用,抵御严重的DoS攻击
gRPC具备开发人员设计和部署现代应用所需的速度与灵活性,但其开放性也使其极易受到第7层DoS攻击。NGINX App Protect DoS可保护gRPC应用免受此类破坏性攻击。
Ingress Controller 选型指南(第 2 部分):风险与面向未来的规划
了解选择错误的Ingress控制器可能带来的风险,以及如何从关键方面着手,让您的选择更好地适应未来需求。
NGINX Plus R19 正式发布
NGINX Plus R19扩展了监控功能,不仅提供更多指标,还新增了指标分析方式;增加试运行模式,用于测试限速效果;增强键值存储,以支持IP地址范围;并使限速更加动态。
NGINX现已正式加入F5
NGINX现已正式成为F5的一部分。Gus Robertson现任F5 NGINX业务部门负责人。他阐述了两家公司在人才、文化和愿景方面融合的价值,以及双方将如何携手增强NGINX的开源产品和商业产品。
