谷歌详细介绍了Signal、FB Messenger和JioChat应用程序中修补过的漏洞
2019年1月,苹果FaceTime群聊功能中报告了一个严重缺陷,该缺陷使得用户可以发起FaceTime视频通话,并通过在群聊中添加自己的号码作为第三人窃听目标,甚至在对方接听来电之前。
该漏洞被认为是如此严重,以至于iPhone制造商在随后的iOS更新中解决该问题之前,将FaceTime群组聊天功能全部删除。
从那时起,在多个视频聊天应用程序中发现了许多类似的缺陷,如Signal、JioChat、Mocha、Google Duo和Facebook Messenger—;这一切都要归功于谷歌零点计划研究员娜塔莉·西尔瓦诺维奇的工作。
“虽然[Group FaceTime]漏洞很快就被修复了,但由于调用状态机中的一个逻辑漏洞,出现了如此严重且容易触及的漏洞,这是我从未在任何平台上考虑过的攻击场景,这让我怀疑其他状态机是否也有类似的漏洞,”席尔瓦诺维奇在文章中写道周二,她对长达一年的调查进行了深入调查。
WebRTC中的信令是如何工作的?
尽管目前大多数消息传递应用程序都依赖WebRTC进行通信,但连接本身是通过在对等方之间使用会话描述协议(SDP)在所谓的信令中交换呼叫设置信息来创建的,该协议通常通过从呼叫者端发送SDP要约来工作,被叫方以SDP应答。
换句话说,当一个用户向另一个用户发起WebRTC呼叫时,会创建一个名为“offer”的会话描述,其中包含建立连接所需的所有信息—;发送的媒体类型、格式、使用的传输协议、端点的IP地址和端口等。然后,接收者会给出一个“答案”,包括对其端点的描述。
整个过程是一个状态机,它指示“在发出要约交换和应答信号的过程中,连接当前在哪里”
作为要约/应答交换的一部分,还可选地包括两个对等方相互交换SDP候选人的能力,以便协商他们之间的实际联系。它详细介绍了可用于通信的方法,而不考虑网络拓扑—;一个称为交互式连接建立(ICE)的WebRTC框架。
一旦两个对等方同意了一个相互兼容的候选方,该候选方的SDP将被每个对等方用来构建和打开一个连接,然后媒体开始通过该连接流动。
通过这种方式,两个设备彼此共享所需的信息,以便通过点对点连接交换音频或视频。但是,在进行这种中继之前,必须使用名为tracks的功能将捕获的媒体数据连接到连接。
虽然预计在音频或视频传输之前会确保被呼叫者的同意,并且在接收器与应用程序交互以应答呼叫之前(即,在向连接添加任何曲目之前),不会共享任何数据,但席尔瓦诺维奇观察到了相反的行为。
多个消息应用受到影响
这些应用程序中的缺陷不仅允许在没有被呼叫方交互的情况下连接呼叫,还可能允许呼叫方强制被呼叫方设备传输音频或视频数据。
共同的根本原因是什么?Silvanovich说,信号状态机中的逻辑错误“是视频会议应用程序中令人担忧且未经调查的攻击表面”
- 信号(2019年9月修复)-Signal的Android应用程序中存在一个音频通话缺陷,使得呼叫者能够听到被呼叫者周围的声音,因为该应用程序没有检查从被呼叫者接收连接消息的设备是否是呼叫者设备。
- 圣战(于2020年7月确定)和摩卡(修订于2020年8月)-在Reliance JioChat和Viettel的Mocha Android应用程序中添加候选项,允许来电者在未经用户同意的情况下强制目标设备发送音频(和视频)。这些缺陷源于这样一个事实,即在被呼叫方接听电话之前就已经建立了对等连接,从而增加了“WebRTC的远程攻击面”
- Facebook Messenger(2020年11月修复)-该漏洞可能使登录应用程序的攻击者能够同时发起呼叫,并向同时登录应用程序和其他Messenger客户端(如web浏览器)的目标发送精心编制的消息,并开始从被叫方设备接收音频。
- 谷歌二人组(2020年12月修复)-禁用视频和建立连接之间的竞争条件,在某些情况下,可能会导致被叫方泄露未应答呼叫的视频数据包。
其他消息应用程序,如Telegram和Viber,均未发现上述缺陷,尽管西尔瓦诺维奇指出,在分析Viber时存在重大的逆向工程挑战,使得调查比其他应用程序“不那么严格”。
“我调查的大多数呼叫状态机都存在逻辑漏洞,允许音频或视频内容在未经被呼叫方同意的情况下从被呼叫方传输给呼叫方,”西尔瓦诺维奇总结道。“在保护WebRTC应用程序时,这显然是一个经常被忽视的领域。”
她补充说:“大多数漏洞似乎不是由于开发人员对WebRTC功能的误解造成的。相反,它们是由于状态机的实现方式错误造成的。也就是说,对这些类型的问题缺乏认识可能是一个因素。”。
“值得注意的是,我没有查看这些应用程序的任何组调用功能,报告的所有漏洞都是在对等调用中发现的。这是未来可能会暴露其他问题的工作领域。”