FreeBuf | uTorrent协议层远程漏洞的分析和利用,安全研究( 二 )


FreeBuf | uTorrent协议层远程漏洞的分析和利用,安全研究
文章图片
漏洞CVE-2020-8437漏洞CVE-2020-8437存在于uTorrent解析Bencoded字典的代码之中 , 说准确一点 , 就是解析嵌套字典的代码 。 在补丁发布之前(uTorrent3.5.5及其之前版本) , uTorrent将使用一个32位整数作为一个比特字段来跟踪Bencoded字典当前正在解析的部分 。 比如说 , 当uTorrent在解析第一层时 , 这个比特字段将会被设置为‘00000000000000000000000000000001’ , 当uTorrent在解析第二层时 , 这个比特字段将会被设置为‘00000000000000000000000000000011’ 。
但是 , 如果一个Bencoded字典的嵌套层数超过32层的话 , 会发生什么呢?于是乎 , 我便创建了一个这样的字典 , 然后丢给了uTorrent的字典解析器 , 结果如下:
FreeBuf | uTorrent协议层远程漏洞的分析和利用,安全研究
文章图片
这就很Nice!uTorrent崩溃啦!深入分析后 , 我们发现这是一个空指针引用错误 。
漏洞利用漏洞CVE-2020-8437有两个简单的利用向量 , 首先是要一个远程对等节点发送一个包含恶意Bencoded字典的扩展消息数据包 , 其次就是需要一个包含了恶意Bencoded字典的.torrent种子文件 。
远程对等节点利用当两个支持扩展消息的对等节点开始交互通信时 , 它们都会发送一个数据包来枚举各自支持的扩展功能 , 而关于支持扩展的消息就是通过Bencoded字典来发送的 , 如果字典是恶意字典 , 那么客户端在解析Bencoded字典时就会触发漏洞CVE-2020-8437 。
Torrent文件利用.torrent种子文件封装了客户端开始下载torrent所需的最基本信息 , 这些文件在torrent网站上公开共享 , 任何人都可以直接下载 , 然后使用torrent客户端来打开 , 因此这些文件都有可能成为触发漏洞CVE-2020-8437的工具 。 一个.torrent文件相当于是一个以文件格式保存的Bencoded字典 , 因此我们只需要将一个恶意Bencoded字典保存为一个.torrent文件 , 就可以实现攻击向量的创建了 。
漏洞利用演示视频视频地址:https://youtu.be/wIXZvz_Y4Ag
缓解方案根据该漏洞的严重性情况 , 建议广大用户尽快将uTorrent客户端程序升级至最新版本!
FreeBuf | uTorrent协议层远程漏洞的分析和利用,安全研究
文章图片


推荐阅读