利用 Verizon iOS 应用入侵数百万美国人的通话记录
入侵数百万美国人的通话记录:利用 Verizon iOS 应用
想象一下,如果任何人都可以输入美国最大移动运营商的电话号码,并立即检索到该号码最近的来电列表——完整包含时间戳——而无需入侵设备、猜测密码或提醒用户。
再想象一下,这个号码属于记者、警察、政客,或正在逃离虐待者的人。
这种能力并非假设。
我最近在 Verizon Call Filter iOS app 中发现了一个安全漏洞,攻击者可以利用该漏洞泄露 Verizon Wireless 客户的通话记录。
通话记录非常有价值,尤其是对国家行为体而言,正如最近关于 Salt Typhoon 入侵电信网络的报道中所指出的那样:https://www.nytimes.com/2024/10/25/us/politics/trump-vance-hack.html
鉴于这些数据如此有价值,你可能会认为访问数据的方式以及谁可以访问这些数据都会受到严密保护。 然而,正如我发现的,情况可能并非如此。
高层级概述:
为了在 Verizon Call Filter app 中显示您最近的已接来电历史记录,需要向服务器发出网络请求。该请求包含各种详细信息,例如您的电话号码和请求的通话记录时间段。 然后,服务器会返回一个包含每次通话和时间戳的列表。
那么,服务器肯定会验证请求的电话号码是否与已登录的用户相关联? 对吧? 对吧?? 好吧……并没有。 可以修改发送的电话号码,然后接收与已登录用户无关的 Verizon 号码的数据。
简而言之,任何人都可以查找任何人的数据。
这当然是对所有人的隐私担忧。 但对某些人来说,这也可能代表安全问题。
考虑一下涉及家庭虐待幸存者、执法人员或公众人物的情况——这些人依赖于其通信模式的保密性。 泄露他们的来电记录不仅具有侵入性,而且很危险。
通话元数据可能看起来无害,但在不法分子手中,它会成为一种强大的监视工具。 通过不受限制地访问另一个用户的通话记录,攻击者可以重建日常活动、识别频繁联系人并推断人际关系。
可以将时间戳与社交媒体或公开场合的目击事件进行交叉引用,以绘制物理移动轨迹。 重复的号码会暴露私人或一次性电话号码,从而危及举报人、记者或虐待幸存者。
这不仅仅是数据泄露。 这是一种等待被滥用的实时监控机制。
技术细节:
Verizon Call Filter app 使用端点 https://clr-aqx.cequintvzwecid.com/clr/callLogRetrieval
来查找已验证用户的通话记录,并在 app 中显示。
此端点需要在 Authorization
标头中使用 Bearer
方案的 JWT (JSON Web Token),并使用 X-Ceq-MDN
标头来指定要检索通话记录的手机号码。
JWT 有三个部分:标头、有效负载和签名。 它通常用于 Web 应用中的身份验证和授权。
在这种情况下,有效负载看起来像:
{
"sub": "SIGNED_IN_USER_PHONE_NUMBER_HERE",
"iat": "1740253712",
"iss": "df88f1ed1dfd9a903e4c8dca7f00089e134c6c4e0a566cd565147ba1dadf78a6",
"secret": "REDACTED",
"alg": "ECDSA-256",
"exp": "1740255512"
}
JSON
sub
代表 subject ——它标识了 token 是关于谁的(通常是用户 ID)。 在这种情况下,它是已登录用户的电话号码。
应该发生的事情,并且似乎发生在其他端点以实现额外的 app 功能的是,服务器会将请求中指定的电话号码与 JWT 中的用户标识符 (sub) 进行比较,以确保请求信息的用户应该有权访问它。
但是,/clr/callLogRetrieval
端点没有验证 X-Ceq-MDN
标头中指定的电话号码是否与 JWT 有效负载中的 sub
匹配,这意味着可以通过在 header 的值中传递所需的电话号码来查找应用程序中任何电话号码的通话记录。
示例漏洞请求:
我发现的问题至少影响了那些启用了 Verizon Call Filter 服务的人(我没有测试禁用该服务的号码;我不能排除是否所有 Verizon 号码都可能受到影响)。
基于 https://www.verizon.com/support/call-filter-faqs/ 和 https://www.verizon.com/about/news/verizon-helps-customers-avoid-15-billion-robocalls 我相信这项服务可能默认对许多/所有 Verizon Wireless 客户启用,因此无论如何,似乎这个问题影响了几乎所有或所有客户。
虽然此端点_仅_返回指定电话号码的已接来电,但我认为这对影响没有重大限制。 首先,这仍然是大量信息。 但同样,对于有针对性的个人来说,这也可以延伸到外拨电话的部分图片,前提是外拨电话是打给其他受影响的 Verizon 客户。
Cequint 是谁?
有趣的是,托管此 app 的 API 的域名注册在 GoDaddy 上,这对于一家大公司来说有点不寻常,尤其是像 Verizon 这样的大公司。
这让我更仔细地检查了域名,我注意到它似乎代表“CEQUINT VZW ECID”
VZW ECID 似乎是 Verizon Caller ID app,因为 Android APK 的包名称是 com.vzw.ecid
https://play.google.com/store/apps/details?id=com.vzw.ecid&hl=en_US
但 CEQUINT 呢? 这似乎是一家独立的公司。
网站 http://www.cequint.com/ 似乎已关闭,但 crunchbase 显示它们是一家专门从事来电显示服务的电信技术公司。
https://www.crunchbase.com/organization/cequint
因此,基于 GoDaddy 域名注册商和域名中的 Cequint 关键字,我认为此问题最终可能在于 Cequint 拥有的服务器上。
这确实提出了问题:这家没有自己网站的默默无闻的公司拥有多少数据? 它的安全性如何?
时间线
- 2/22/2025 - 发现问题并报告给 Verizon
- 2/24/2025 - Verizon 确认收到我的报告
- 3/23/2025 - 我要求更新,因为在我看来这似乎已修复
- 3/25/2025 - Verizon 确认问题已解决
我要感谢 Verizon 的快速响应和修复。 虽然我没有他们修复此问题的确切日期,但我相信这比我重新测试该问题并在我的方面注意到它看起来已解决的时间要早。 他们也很及时地确认了我的报告。