内容简介:【漏洞分析】CVE-2017-3731:截断的数据包导致OpenSSL拒绝服务
翻译: 啦咔呢
稿费:100RMB(不服你也来投稿啊!)
投稿方式:发送邮件至linwei#360.cn,或登陆网页版在线投稿
前言
OpenSSL是一个流行的SSL开源库,被世界各地的各种软件和公司使用。1月份,OpenSSL发布了一个更新以修复多个漏洞。其中之一就是CVE-2017-3731,这可能导致由于程序崩溃而引发的拒绝服务。McAfee 实验室分析了此漏洞来为客户提供检测。
使用patch diff来找出修改的地方
补丁修改了一些与各种密码算法相关的文件。对于本报告,我们将检查代码e_chacha20_poly1305.c。以下代码显示此文件的修补程序,取自 https://git.openssl.org/?p=openssl.git;a=commitdiff;h=2198b3a55de681e1f3c23edb0586afe13f438051 。
我们可以看到,添加了一个简单的步骤来检查变量长度的值与常量POLY1305_BLOCK_SIZE的大小关系,而紧接着下面我们看到变量“len”减去了这个常量。
如果我们查看声明就能发现,POLY1305_BLOCK_SIZE在文件poly1305.h中声明为“#define POLY1305_BLOCK_SIZE 16”。而变量len在e_chacha20_poly1305.c中定义为“unsigned int len;”。
因此,如果变量len小于16,它将导致整数下溢,也就是说,len的值将变得非常大。然后当该值被使用时,可能会导致正常程序流出现问题,因为len的值不正确。
进一步挖掘
我们可以看到在前面的图片中,这个len值被分配给“actx-> tls_payload_length”。然后调用函数chacha20_poly1305_cipher。在此函数内,actx-> tls_payload_length被分配给变量“plen”:
注意,变量plen将得到从先前的len整数下溢导致的非常大的数值。我们可以进一步看到plen的值传递给函数poly1305_Update:
Poly1305_Update调用函数Poly1305_blocks时将携带此大值:
如果我们仔细看看函数,我们可以看到变量len包含一个非常大的整数值,但是却被用来作“while”循环中的计数器:
我们还可以看到对函数U8TOU32的调用,该函数读取* inp(指针)的值,并且在循环的每次迭代中,* inp的值加上一次POLY1305_BLOCK_SIZE。因为len的值非常大,最终* inp将指向不可读的内存。尝试读取将导致访问异常错误 - 导致OpenSSL崩溃。
从网络中利用漏洞
要利用此漏洞,客户端需要使用chacha20_poly1305加密套件(或另一个加密漏洞,可从补丁diff中看出),并发送加密的握手消息,其中记录长度小于16个字节(在使用chacha20_poly1305加密套件的情况下)。这将导致整数下溢致使OpenSSL崩溃,我们可以在以下图像看到运行中的OpenSSL和Gnu Debugger:
结论
OpenSSL非常流行,因此可以成为拒绝服务攻击的目标。这些类型的漏洞可能影响许多安装此组件的应用程序。我们建议用户将其使用的OpenSSL安装更新到最新版本。
McAfee 网络安全平台客户已经通过签名ID:0x45c09400受到关于此漏洞的保护。
本文由 安全客 翻译,转载请注明“转自安全客”,并附上链接。
原文链接:https://securingtomorrow.mcafee.com/mcafee-labs/analyzing-cve-2017-3731-truncated-packets-can-cause-denial-service-openssl/?utm_source=twitter&utm_campaign=Labs#sf61253943以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- CSS 来实现多行文字截断
- perl – 截断stdin行长度?
- 00截断之追本溯源
- 技术问题分析-报文截断(11.20)
- 技术问题分析-报文截断02(11.21)
- 技术问题分析-报文截断03(11.22)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Linux内核设计的艺术
新设计团队 / 机械工业出版社华章公司 / 2011-6-20 / 79.00元
关于Linux内核的书已经不计其数,但这本书却是独树一帜的,它的内容代表着Linux内核研究成果的世界顶尖级水平,它在世界范围内首次提出并阐述了操作系统设计的核心指导思想——主奴机制,这是所有操作系统研究者的一笔宝贵财富。本书可能也代表着同类图书的顶尖水平,是一本真正能引导我们较为容易地、极为透彻地理解Linux内核的经典之作,也可能是当前唯一能从本质上指引我们去设计和开发拥有自主知识产权的操作系......一起来看看 《Linux内核设计的艺术》 这本书的介绍吧!