跟踪到Nginx和OpenResty中相互联系的漏洞的问题

mail.ru修补了关键的内存披露缺陷

俄罗斯电子邮件平台邮件支付一个$ 10,000的漏洞赏金,用于与Nginx和Openresty中的两个相关问题有关的关键安全缺陷。

一个安全咨询在3月18日发布在Mail.RU的Hackerone页面上,解释了API请求中NULL字节的无效处理如何导致“披露HTTP服务器内存”。

Openresty是Nginx反向代理的LUA引擎,该引擎在Mail.ru上运行,其用户群编号1亿活跃帐户

“不受信任的输入数据”

错误赏金发现漏洞发现开放式的亨特(Hunter)易受NGINX重写的不安全实现的影响,其中ngx.req.set_uri()是通过NGINX中的RAW RETRITE实现的,而无需进行其他过滤或归一化。

开放式总裁兼创始人Yichun Zhang告诉每日swbeplay2018官网ig:“当开放式应用程序的LUA程序员粗心并且根本无法验证未经信任的输入数据时,这是一种潜在的风险(类似于JS或SQL注入)。”

哈克隆咨询说,这可能导致CRLF/标题注射。

张说:“开放式核心本可以在这里做得更好,以帮助开发人员。”

第二个问题是NGINX重写实现中的错误,意味着开放式缺陷也可能导致内存内容披露,目录遍历/本地文件读取,限制在某些配置下绕过。

该问题源于过程内存的片段,如果重写字符串−CONTAINS ASCII 0字符,则使用301/302 HTTP回复。

安全更新

漏洞是在Ubuntu 18.04上的Nginx版本1.17.5和OpenResty版本1.15.8.2中找到的。

欧文·加勒特(Owen Garrett)NGINX产品开发高级总监确认,Nginx已在“当前”中进行了修补,但在“稳定”中没有补丁。

他告诉他说:“当我们制作1.18.0稳定版本时,它将包括在4月下旬。”每日swbeplay2018官网ig

开放性发布了安全补丁 -1.15.8.3- 这在3月21日解决了问题。

加勒特说:“'null-bytes-in重写'错误被判定为有限的影响力”,因此“在我们的正常发行周期中固定并记录在我们的中更改日志”。

他补充说:“缺陷只能通过非常具体的配置来利用,这导致披露少量的非直接内存。我们不知道有任何利用此错误来进行拒绝服务攻击或系统地揭示记忆的方法。”

建议没有更新两个平台的用户避免使用NGINX重写指令或NGX.REQ.SET_URI()具有不受信任的输入 - 或至少实施严格的输入过滤。

Garrett说:“不要将无效的字符嵌入重定向,并在重定向到用户定义的值时要小心。”

他补充说,您“在信任用户输入时始终要小心”。

“ Nginx是一项复杂的软件,如果您不小心,可以生成可剥削的配置。利用nginx扩增或者https://github.com/yandex/gixy分析复杂的配置并确定一些可能的问题。”加勒特说。

显然,通过创建“ NGINX配置,在Nginx执行了适当的安全检查之后,覆盖了请求URI”,这显然是通过创建“ NGINX配置”来发现的。

因此,加勒特(Garrett)建议:“在使用Nginx重写时要小心,以免在配置中引入漏洞”。

披露时间表

Mail.ru于2019年3月21日通过研究人员@maxarr通过Hackerone通知了漏洞。

电子邮件提供商于11月5日将Nginx和Openresty确定为根本原因,并于11月7日将信息传达给NGINX。

加勒特说:“我们承认第二天收到了该报告,考虑了该错误的潜在影响,并安排了解决方案。”

“我们大约每六周发行Nginx开源释放;并发货使固定在我们的“主线”发行分支首次收到电子邮件后八周。”

该缺陷于12月17日向开放式团队报告。


有关的 NGINX服务器错误可能导致RCE