今天要介绍的是2024 IEEE S&P的预录取论文Injection Attacks Against End-to-End Encrypted Applications,这篇文章针对WhatsApp和Signal两款软件的消息备份功能,利用它们的某些特性(前者用到了附件去重存储、zlib压缩、SQLite序列,后者用到了数据序列化),在没有密钥的情况下实现了端到端(E2E)加密的注入攻击,在某些情况下甚至可以恢复消息内容。
Background
现有的通信app如果支持E2E加密备份,那么它们通常会对消息进行加密,要么保存在本地存储空间,要么保存在云端。此时,攻击者的任务假定为在用户U收到消息m后,在已知一些可能的明文空间V的情况下,去窃取机密信息:
-
当|V| = 1时,称为confirmation attack,即判断某消息是否被用户接收
-
当|V| = 2时,称为distinguishing attack, 判断两个消息中的哪一个被用户接收
-
当|V| > 2时,称为(partial) message recovery attack,即(部分)消息恢复攻击
在攻击时,用户的设备有两种情况:一种是“Quiet device”,即在攻击期间用户没有收到任何其他人的消息;另一种是“Noisy device”,即注入期间仍然会收到其他消息,这被视作噪声。
同样,在本篇文章的威胁模型中,作者假定攻击者有5个能力:
-
可以访问备份存储空间(加密后的)
-
可以向用户发送(注入)消息
-
合理的备份频率(在WhatsApp中默认是每天备份一次,
-
某些攻击要求目标设备为“quiet device”
-
受害者没有将目标消息从设备中删除。关于这一点,作者认为如果用户这么做了,那么相当于他没有收到消息。
下面这张图概括了作者实现的攻击以及对应攻击所需要注入的消息数量和备份的次数:
接下来依次介绍针对针对WhatsApp和Signal的注入攻击
Injection Attacks against WhatsApp
WhatsApp的备份功能存在三个问题:
-
附件去重存储:由于WhatsApp对附件和附件名称会进行去重加密存储,因此可以利用存储中的空间大小判断某个附件是否已被受害者接收。作者对各种文件格式(PNG images, MP4 videos, PDFs, and Word documents)都做了测试,在所有情况下都能恢复目标文件
-
zlib压缩:WhatsApp用B-tree数据结构保存消息,当收到的某个消息m中包含了先前收到的消息s,那么在备份时zlib压缩策略导致不会再次保存s,而是用一个引用指向上一次收到的s,这种情况下占用的存储空间会比较小,可利用空间大小变化作为区分器去判断受害者是否收到某个消息。作者实现了真实场景和本地模拟的实验,实验结果如下图所示(其中行代表候选消息的数量,列代表目标消息的长度,左侧的数据为真实场景实验得到、右侧为模拟得到的结果):
-
内部数据结构维护方式:针对前一种攻击,一个简单的修复方法是不再使用压缩,但作者表明这样仍然会存在问题。WhatsApp在保存消息时,会对语法进行解析,并使用一个docid代表某一条消息,将解析出来的每个词指向这个docid代表它们组成某一段消息。同上一种攻击类似,当注入的消息m包含已存在的消息s时,则整个数据结构占用的空间更大,因此仍然可以利用这种方式作为区分器。由于将zlib压缩取消,所以作者无法在真实的WhatsApp上进行实验,作者使用模拟环境展开实验,在某些情况下成功实现distinguishing attack
Injection Attacks against Signal
由于Signal使用截然不同的备份方法,作者并未能实现恢复消息内容的攻击,但该注入攻击可以导致泄露某些敏感数据,例如受害者收到联系人和消息的数量。
Signal的备份策略为保存建立数据库的SQL语句,便于重构数据库,并使用protobuf库进行编码,随后进行加密。在这个过程中,由于数据始终是按照结构化的格式排列的:contacts表、threads表(存储每个聊天的最后一条消息的表)、消息表、其他数据,并在每一个数据之间插入一个四字节的明文,代表下一个段密文的长度。因此即使没有解密密钥,任何一个人都能够解析密文组成。所以,只要攻击者能够获取攻击前的备份状态,再使用一个新的号码对受害者发送消息,就可以根据备份数据的变化算出联系人的数量和消息的数量。
作者在模拟器上完成了攻击的实验,并通过某些观察将其迁移到了Noisy device的情况。
Discussion
最后,作者负责地将漏洞报给了两家供应商,Signal确认了这一漏洞并已经提出了修改措施;WhatsApp也确认了漏洞,但尚未修复。
论文:https://www.computer.org/csdl/proceedings-article/sp/2024/313000a082/1RjEaQAIfkc
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2024-01-12 端到端加密APP的注入攻击