报告编号:B6-2020-031901
报告来源:360-CERT
报告作者:360-CERT
更新日期:2020-03-19
0x01 漏洞背景
2020年03月18日, 360CERT监测发现 openwall oss-security 邮件组披露了两枚漏洞。在特定配置下 nginx/openresty 存在 内存泄漏漏洞/目录穿越漏洞。
Nginx 是异步框架的网页服务器,也可以用作反向代理、负载平衡器和HTTP缓存。
OpenResty是一个基于nginx的Web平台,它对nginx增加LuaJIT引擎使其运行Lua脚本。
该两枚漏洞均需要特定配置方可触发
0x02 风险等级
360CERT对该漏洞进行评定
评定方式 | 等级 |
---|---|
威胁等级 | 中危 |
影响面 | 一般 |
360CERT建议广大用户及时更新 nginx/openresty/lua-nignx-module。做好资产 自查/自检/预防 工作,以免遭受攻击。
0x03 漏洞证明
测试环境配置如下
系统 osx 10.15.3
软件 | 版本信息 |
---|---|
nginx | 1.17.7 (commmit af8ea176a743e97d767b3e1439d549b52dd0367a ) |
openresty/lua-nginx-module | latest master (commit 43220429e5411d3461445e25031864e6edffbebe ) |
openresty/lua-resty-core | v0.1.18rc1 (commit bdcc16bbd157dc70a0944f66f622899092f49a41 ) |
openresty/lua-resry-lrucache | v0.10rc1 (commit b2035269ac353444ac65af3969692bcae4fc1605 ) |
luajit | luajit: stable 2.0.5 (bottled) from brew |
openresty(homebrew) | 1.15.8.2 |
部分组件非必须,测试过程仅依照安装指引默认安装。
相关配置片段
# memleak
location ~ /memleak {
rewrite_by_lua_block {
ngx.req.read_body();
local args, err = ngx.req.get_post_args();
ngx.req.set_uri( args["url"], true );
}
}
# directory traversal
location ~ /rewrite {
rewrite ^.*$ $arg_x;
}
以下图示为 Nginx 开启 lua-nginx-module
内存泄漏证明
目录穿越证明
0x04 影响版本
nginx <= v1.17.7 (commit af8ea176a743e97d767b3e1439d549b52dd0367a
)
openresty <= v1.15.8.2
0x05 修复建议
nginx 用户更新到 v1.17.9
或应用 commit a5895eb502747f396d3901a948834cd87d5fb0c3
openresty 用户排查配置文件中 rewrite
以及 ngx.req.set_uri
建议临时禁用相关配置
0x06 相关空间测绘数据
nginx 分布如下图所示
openresty 分布如下图所示
0x07 产品侧解决方案
360城市级网络安全监测服务
360安全大脑的QUAKE资产测绘平台通过资产测绘技术手段,对该类 漏洞/事件 进行监测,请用户联系相关产品区域负责人获取对应产品。
0x08 时间线
2020-03-18 openwall邮件组公示漏洞细节
2020-03-19 360CERT发布预警