在即时通讯应用中,送达回执(Delivery Receipt)是一个看似无害的功能 —— 它告诉发送者消息已成功送达目的地。然而,维也纳大学与 SBA Research 的安全研究团队发现,这个功能可以被恶意利用,成为一个强大的时序侧信道攻击向量。研究人员将这种攻击命名为「Careless Whisper」,该攻击允许攻击者在不发送任何通知的情况下,持续探测目标用户的设备状态,甚至推断其日常行为模式。
攻击原理:静默回执的隐蔽性
传统的消息送达确认机制需要发送消息后才能获取回执,这会向目标用户推送通知,容易被发现。但研究团队发现,WhatsApp 和 Signal 支持通过特定消息类型触发送达回执,而不触发任何推送通知。这些静默触发方式包括:对消息添加表情反应、编辑已发送消息、删除消息等操作。即使这些操作引用的是不存在的消息 ID,服务器仍然会返回送达回执。这意味着攻击者可以在没有任何前置会话关系的情况下,对任意已知手机号码的用户发起持续探测。
在「 creepy companion」( creepy companion,即与目标有现有对话关系的攻击者)场景中,攻击者只需对自己发送的旧消息添加表情反应,即可触发针对目标的回执,而且目标不会收到任何通知。对于「spooky stranger」(spooky stranger,即与目标没有任何关系的攻击者),攻击者可以发送引用不存在消息的表情反应,同样能获取送达回执而不会引起目标警觉。整个探测过程完全在后台进行,目标用户对正在进行的监控一无所知。
时序侧信道:RTT 泄露的关键信息
攻击的核心在于测量送达回执的往返时间(Round-Trip Time, RTT)。研究团队发现,RTT 的细微差异与目标设备的当前状态密切相关。在对多款主流设备的测试中,研究人员观察到了显著的模式差异:当目标设备的屏幕处于开启状态时,WhatsApp 的 RTT 通常在 1 秒以内;而当屏幕关闭、设备进入待机状态时,RTT 增加到 2 秒以上。这种差异在不同厂商和型号的设备上都表现出可辨识的特征,包括 iPhone 13 Pro、iPhone 11、三星 Galaxy S23、小米 Poco 系列等。
更令人担忧的是,RTT 还能区分目标应用是否处于前台活跃状态。以 WhatsApp 为例,当应用在 iPhone 上处于前台时,RTT 约为 300 毫秒;当应用被最小化但屏幕仍亮着时,RTT 跳升至 500 毫秒并持续约 30 秒;如果应用完全进入后台,RTT 最终稳定在 1 秒左右。这种精确的状态区分能力意味着攻击者可以绘制出目标用户详细的应用使用习惯图谱,包括何时打开应用、在应用中停留多长时间、以及何时切换到其他应用。
多设备场景下的攻击放大
现代即时通讯服务普遍支持多设备同步,WhatsApp 和 Signal 采用的 client-fanout 架构为每个设备分配独立的加密密钥。这一设计虽然在安全性上有所提升,但也意外增加了攻击面。当攻击者向目标用户发送探测消息时,所有在线设备都会独立返回送达回执。这意味着攻击者可以同时监控目标用户的主设备(手机)以及桌面客户端、Web 客户端的在线状态。
研究团队在真实场景实验中验证了这一点。他们追踪了一名志愿者从家里到办公室的完整过程,通过分析多设备返回的送达回执时序,研究人员成功识别出用户何时关闭台式电脑、何时离开家并从 Wi-Fi 切换到移动网络、何时开始通话、以及何时到达办公室并重新连接到 Wi-Fi。这种攻击甚至能够区分不同的网络接入方式 —— 局域网连接表现出稳定且低抖动的 RTT 模式,而 Wi-Fi 连接则呈现出不同的时序特征。
设备指纹识别与操作系统识别
送达回执的处理方式在不同操作系统和客户端实现中存在差异,这些差异可以被攻击者利用来识别目标设备的类型。当目标设备离线时,重新上线后会一次性发送多个待处理消息的送达回执。研究人员发现,不同平台在回执的堆叠(stacking)方式上表现不同:有些客户端总是单独发送每个回执,有些则将多个回执合并在一起;即使使用堆叠方式,回执的顺序也可能不同 —— 有些按自然顺序排列,有些按倒序,还有些随机打乱。
这种差异构成了一个信息泄露渠道,可用于指纹识别目标的操作系统和设备类型。例如,研究人员确定 macOS 桌面客户端发送的堆叠回执采用倒序方式,而 Windows 客户端则不同。通过分析这些细微的实现差异,攻击者可以在不直接与目标设备交互的情况下推断其使用的平台组合。
资源耗尽攻击:电池与流量的隐形消耗
除了隐私信息泄露,研究人员还证明了这类攻击可以转化为资源耗尽攻击。虽然探测消息不会在目标设备上显示,但它们仍然消耗网络流量和设备电量。WhatsApp 的消息反应功能允许携带高达 1 MB 的数据载荷,尽管客户端只会处理约 30 字节的内容,但所有数据仍然会传输到目标设备。
研究团队测量发现,单个攻击客户端可以持续以每秒 3.7 MB 的速度向目标设备推送数据,相当于每小时约 13.3 GB 的流量消耗。这种攻击可以在用户不知情的情况下迅速耗尽其移动数据配额。在电池消耗方面,研究人员对多款设备进行了为期一小时的攻击测试:iPhone 13 Pro 每小时消耗 14% 的电量,iPhone 11 消耗 18%,三星 Galaxy S23 消耗 15%。相比之下,这些设备在正常待机状态下的电量消耗通常低于每小时 1%。值得注意的是,Signal 由于实施了更严格的速率限制,电池耗尽效果相对有限,仅约 1% 每小时。
影响范围与威胁评估
根据研究数据,WhatsApp 是此次攻击影响最广泛的目标平台,全球活跃用户超过 20 亿,这意味着全球超过四分之一的人口可能成为潜在受害者。Signal 虽然用户基数较小,但其定位为注重隐私的通讯工具,且被美国国会、欧盟委员会等机构广泛使用,因此对高敏感度用户群体构成了更严重的威胁。研究特别指出,包括美国国防部长在内的政府高级官员已被曝出使用 Signal 进行敏感通讯,而他们公开可查的手机号码使他们成为这类攻击的理想目标。
从技术角度来看,攻击者的入门门槛极低。他们只需要一个注册过目标通讯应用的手机号码和一台联网设备即可发起攻击。使用预付费手机卡和旧款智能手机就足以隐藏身份。关键在于,这类攻击不会产生任何可见的痕迹 —— 目标用户既不会收到通知,也无法识别攻击来源,更无法通过屏蔽联系人来阻止攻击,因为攻击者可以引用不存在的信息发送探测消息。
缓解建议与防御策略
针对这类时序侧信道攻击,可以从多个层面实施防御措施。首先,服务端可以引入随机延迟机制。送达回执的时序信息不需要实时传递,添加几秒钟的随机延迟可以有效阻止基于 RTT 的状态推断,同时不会显著影响用户体验。其次,服务端应实施速率限制,限制单个账户在单位时间内可以发送的探测消息数量,特别是对消息反应、编辑、删除等非标准消息类型的速率限制。
在客户端层面,研究人员建议加强消息验证。当前的客户端对无效消息 ID 仍然返回送达回执,这是一个设计缺陷。客户端应该在返回回执之前验证引用的消息 ID 是否有效,无效消息应直接丢弃而不产生任何响应。此外,用户应该能够选择禁用送达回执或限制其发送给非联系人。
从架构层面来看,多设备同步机制导致了回执放大的问题。一种可能的缓解策略是让设备在发送送达回执之前先同步状态,确保对同一消息只发送一次回执。另一种方向是考虑隐藏设备数量信息,使用更高级的密钥管理方案来避免泄露用户拥有的设备数量。
工程实践中的具体参数建议
对于需要评估自身系统安全性的开发团队,以下是研究中发现的关键参数阈值。在屏幕状态检测场景下,当 RTT 小于 1 秒时通常表示屏幕开启或应用处于前台;当 RTT 在 1 到 2 秒之间时通常表示屏幕关闭但设备仍在线;当 RTT 超过 2 秒时表示设备已进入深度待机状态。这些阈值在不同设备型号上可能有所差异,但整体模式保持一致。
在探测频率方面,研究团队对不同设备进行了优化:三星设备建议使用较低的探测频率(每分钟 1 次),以允许设备进入深度睡眠状态;而小米等设备可以使用较高的频率(每秒 1 次)而不影响测量结果。对于 WhatsApp,测试中未发现服务端速率限制,可以以 50 毫秒间隔发送消息反应;对于 Signal,建议将探测频率控制在每秒 1 次以下以避免触发速率限制。
在数据耗尽攻击场景下,单个消息反应的最大载荷为 1 MB(服务器端限制为 65 KB),持续攻击可达 3.7 MB/s。防御方可以将每小时消息反应数量限制在合理范围内,并对大载荷消息实施额外验证。
结语
Careless Whisper 攻击揭示了一个被长期忽视的安全隐患:即使是看似必要且无害的功能,也可能成为强大的攻击渠道。在端到端加密的通讯架构中,送达回执是少数仍然保留在服务器端的可观测信息,而其设计未充分考虑潜在的隐私风险。这一发现提醒我们,在构建安全系统时,需要对每一个看似微小的功能特性进行全面的威胁建模,平衡功能便利性与用户隐私保护之间的关系。截至目前,WhatsApp 已确认收到漏洞报告但尚未发布修复方案,Signal 仍未对此作出回应。对于普通用户而言,在官方修复发布之前,暂无有效的个人防护手段,这一事实本身就凸显了问题的严重性。
资料来源:Arxiv 预印本《Careless Whisper: Exploiting Silent Delivery Receipts to Monitor Users on Mobile Instant Messengers》(2024 年 11 月),研究人员于 2024 年 9 月向厂商披露该漏洞。