写在前面得话
最近,世界最时兴的torrent手机客户端uTorrent被获取了一个安全性漏洞,该漏洞的CVE序号为CVE-2020-8437。依据科学研究工作人员表露的信息内容,远程控制网络攻击可以使用该漏洞来侵入一切一个联接至网络的uTorrent案例,并让其运作奔溃。做为达标的白帽黑客,我们在发觉了该漏洞以后便马上将其汇报给了uTorrent精英团队,该漏洞也在短期内快速获得修补。现在在这篇文章中,大家将公布该漏洞的概述及其相对应的运用方法。
Torrent协议书
Torrent下载(传说中的BT下载)可以一起与好几个对等节点创建联接(别人下载同一文档),并建立一个分散化的下载互联网来使全部对等节点组一同获益。每一个对等节点都能够提交和下载数据信息到所有其它的对等节点,这类方法可以清除一切单一常见故障点或宽带网络短板,进而使全部对等节点的下载速率变快更平稳。
对等节点中间采用了BitTorrent协议书开展通讯,而这类协议书通信方式必须根据握手来进行。在下面的研究流程中,大家将关键关心握手包及其之后的数据。
BitTorrent握手
握手包是对等节点中间复位通讯所要传送的第一个数据,握手包中包括了五个字段,每一个字段名都是有严谨的结构型格式。
握手包格式:
- Name Length:1字节数无符号整型,后跟字符串长度。
- ProtocalName:可变尺寸的字符串数组,用以标识进行复位的对等节点适用的协议书。此字段名将用以兼容问题,但是在现阶段首要的协议书完成中该字段名都被设定为了更好地“BitTorrent protocol”。
- Reserved Bytes:8字节数比特犬字段名,每一位意味着了一个协议书作用拓展,当代Torrent手机客户端将应用这一字段名来跟高級作用开展通讯以提升下载每日任务。
- Info Hash:20字节数SHA1,用以鉴别复位对等节点要想下载的种子资源,这一hach是总体目标种子资源所有信息内容的hach,主要包括种籽名字、文档域hach、图片大小、总数这些。
- Peer ID:20字节数缓冲区域,一个发起方跟自身规定的任意标志。
当一个节点接到一个握手包以后,它可能用自身的握手包来回复。假如2个节点的Reserved Bytes字段名都设定为了更好地“Extension Protocol”,那麼节点中间将应用一个“拓展”信息握手来互换大量有关拓展建立的信息内容。
BitTorrent拓展信息握手
拓展信息握手是对等节点中间用以共享资源附加拓展完成信息内容时采用的,跟大家以前研究的BitTorrent握手包不一样的是,BitTorrent握手包的高低是确定的,但拓展信息握手包是可以变化规律的,这将容许该数据传送很多拓展数据信息。
拓展信息握手包格式:
- Length:4字节数无符号整型,后跟全部信息内容的长短。
- BitTorrent Message Type:1个字节数,即数据的BitTorrent信息ID,拓展信息相匹配的是20(0x14)。
- BitTorrent Extended Message Type:1个字节数,意味着拓展信息的ID,相匹配的数值0。
- M:变化规律的数据尺寸,适用的填补拓展Bencoded格式词典。
Bencoded字典
M字段名是一个Bencoded格式的词典,这类格式跟Python词典格式相近:即字符串类型的键值对。可是,跟Python词典对比,Bencoded词典在值前边会包括每一个字符串数组的长短,“d”和“e”各自用于意味着“{”和“}”。下边得出的是Python词典和Bencoded字典的对比分析:
此外,Python词典和Bencoded字典都能够在词典内部结构包括一个直接的词典,即适用词典嵌入:
漏洞CVE-2020-8437
漏洞CVE-2020-8437存有于uTorrent分析Bencoded词典的编码当中,说精确一点,便是分析嵌入词典的编码。在补丁包公布以前(uTorrent 3.5.5以及以前版本号),uTorrent将应用一个32位整数金额做为一个比特犬字段名来追踪Bencoded词典现阶段已经分析的一部分。例如,当uTorrent在分析第一层时,这一比特犬字段名可能被设定为‘00000000 00000000 00000000 00000001’,当uTorrent在分析第二层时,这一比特犬字段名可能被设定为‘00000000 00000000 00000000 00000011’。
可是,假如一个Bencoded词典的嵌入叠加层数超出32层得话,会产生什么?因此,我便建立了一个如此的词典,随后丢给了uTorrent的词典在线解析,結果如下所示:
这就很Nice!uTorrent奔溃啦!详细分析后,大家看到这是一个空指针引入不正确。
漏洞运用
漏洞CVE-2020-8437有两个简易的运用空间向量,最先是要一个远程控制对等节点推送一个含有故意Bencoded词典的拓展信息数据,次之是要一个涵盖了故意Bencoded词典的.torrent种子资源。
1. 远程控制对等节点运用
当2个适用拓展信息的对等节点逐渐互动通讯时,他们都是会推送一个数据来枚举类型分别适用的拓展作用,而有关适用拓展的新闻便是根据Bencoded词典来推送的,假如词典是故意词典,那麼手机客户端在分析Bencoded词典时便会开启漏洞CVE-2020-8437。
2. Torrent文档运用
.torrent种子资源封装形式了手机客户端逐渐下载torrent需要的最基本信息,这种文档在torrent网址上公布共享资源,所有人都能够立即下载,随后应用torrent手机客户端来开启,因而这种文档都是有也许变成开启漏洞CVE-2020-8437的专用工具。一个.torrent文档等同于是一个以文档格式储存的Bencoded词典,因而大家只要将一个故意Bencoded词典储存为一个.torrent文档,就可以完成进攻空间向量的建立了。
漏洞运用编码:【点我获得】
漏洞运用演试短视频
视频地址:【点我收看】
减轻计划方案
依据该漏洞的严重后果状况,提议众多客户尽早将uTorrent客户端程序更新至最新版!