ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

栏目: IT技术 · 发布时间: 6年前

内容简介:作者: key本文利用Github Commit代码对比的方式进行跟踪复现2020年1月20日,Trustwave SpiderLabs公开了其维护的开源WAF引擎ModSecurity的1个拒绝服务(DoS)漏洞,漏洞编号为:CVE-2019-19886。此漏洞影响ModSecurity的3.0到3.0.3版本。

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

作者: key

本文利用Github Commit代码对比的方式进行跟踪复现

背景

2020年1月20日,Trustwave SpiderLabs公开了其维护的开源WAF引擎ModSecurity的1个拒绝服务(DoS)漏洞,漏洞编号为:CVE-2019-19886。此漏洞影响ModSecurity的3.0到3.0.3版本。

漏洞描述

ModSecurity是一个开源的、跨平台的Web应用防火墙(WAF),被称为WAF界的“瑞士军刀”。它可以通过检查Web服务接收到的数据,以及发送出去的数据来对网站进行安全防护。

2020年1月21日,ModSecurity的维护组织Trustwave公开了影响ModSecurity 3.0至3.0.3版本的1个拒绝服务漏洞,漏洞编号为 CVE-2019-19886,漏洞详情如下:

在ModSecurity 3.0到3.0.3版本中,存在cookie解析问题。通过构造格式错误的HTTP Cookie头发送到运行ModSecurity的Nginx的服务器,会导致out_of_range异常。在结合Nginx web服务器使用ModSecurity的常用情况下,该异常将使nginx工作线程(负责处理请求的线程)崩溃。不断向服务器发送此类请求将使工作线程反复崩溃。如果发送请求的速度快于工作线程恢复的速度,将导致服务器拒绝服务。

漏洞跟踪

通过Github项目的releases跟踪: https://github.com/SpiderLabs/ModSecurity/releases

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

发现了airween的一个pr: https://github.com/SpiderLabs/ModSecurity/pull/2201

被官方采纳并归并到了 v3/master

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

来看看他究竟修改了什么: https://github.com/SpiderLabs/ModSecurity/pull/2201/commits/c7ad6c7613de3c1ac2ad1b4055f0ded22b522027

存在漏洞的代码如下:

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

可以看见这里将Cookie的值带入代码,先以 ; 符号进行分割,进入for循环,再以 = 符号进行分割赋值,而后使用正常数组下标的表达方式进入功能中,那么问题出在了哪里?

我们再来看修复的代码:

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

简单阅读代码和注释就能了解到,它就是处理两种非正常的Cookie值: Cookie: ;;foo=bar \ Cookie: =bar;

换句话说就是ModSecurity原来在处理Cookie内容的时候过于信任用户的输入,这也是安全的一个大忌讳: 一切用户的输入都是不可信的

为什么会拒绝服务呢?可以理解为数组越界,类似:

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

漏洞测试

很明显,通过漏洞跟踪已经知道了漏洞攻击方式那就是构建恶意(畸形)的 Cookie

Curl命令测试: curl -s -H 'Cookie: =test' 'http://test/'

ModSecurity 拒绝服务漏洞 (CVE-2019-19886) 复现

根据奇安信CERT的描述: 不断向服务器发送此类请求将使工作线程反复崩溃 ,那我们可以重复这个请求造成拒绝服务效果。

Reference

奇安信CERT: https://mp.weixin.qq.com/s/MwGroFA_sKxzrwXa50XZgw

Github: https://github.com/SpiderLabs/ModSecurity/pull/2201/commits/c7ad6c7613de3c1ac2ad1b4055f0ded22b522027


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

程序员之禅

程序员之禅

[德] Christian Grobmeier / 荣耀、朱艳 / 人民邮电出版社 / 2015-8 / 39.00元

禅是一种生活态度和生活方式。程序员是一份特别辛苦的职业,也是一个承受各种压力的群体。在物欲横流的今天,禅对于程序员有着特殊的意义和价值。 本书的作者是一名德国程序员老兵,深谙程序员的喜怒哀乐。他曾经发表了一篇题为“程序员之禅的十条法则”的博客文章,引发众多程序员热烈的讨论和强烈的共鸣。本书共10章,结合程序员日常生活和工作的方方面面,作者通过对禅的知识、理解、体验、思考和感悟,提出很多中肯的......一起来看看 《程序员之禅》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具