摘要
- 已确认:Twilio 得出结论,攻击者向现任和前任员工发送了数百条短信钓鱼消息,在仿冒的登录页面上截获了凭据,并利用受感染的员工身份进入内部管理工具和应用程序。最后一次观察到的未授权活动发生在 2022 年 8 月 9 日。Twilio 最终统计出 209 个受影响的客户账户和 93 个受影响的 Authy 终端用户账户。
- 下游影响:数字 209 并非终端用户总数。受影响的客户之一 Signal 发现了约 1900 个电话号码,攻击者可能获取了这些号码的注册状态或看到了短信注册码;在三个被明确搜索的账户中,有一个被报告已重新注册。Twilio 在服务链中的地位放大了少数员工账户受感染所造成的后果。
- 控制措施发现:攻击者无需破解加密或窃取 Twilio 客户的 API 密钥。他们说服员工向冒名顶替者进行认证,然后利用由此获得的权限。培训和快速关闭措施固然重要,但决定性的控制在于:认证方式不会为错误的网站生成可重复使用的答案,同时配合狭窄的管理权限和短时会话。
- 问责制:攻击者应对欺骗和未授权访问负责。Twilio 控制了员工认证、内部工具、客户数据范围、会话周期、检测和客户通知。客户控制了下游身份对 Twilio 的依赖程度,以及他们在注册环节设置了哪些独立防护措施。运营商、注册商、托管提供商和身份供应商控制了该活动可更新基础设施的部分环节。整个链条中都存在责任,但这些责任并不相同,也不能相互替代。
少量客户数字可能掩盖巨大的依赖性
Twilio 最终的事故报告提供了两个易于复述但容易误解的比例:209 个客户相对于超过 27 万个客户,以及 93 个 Authy 用户相对于约 7500 万用户。这两个比例都很小。但它们都无法反映通过受影响的 Twilio 客户可能导致数据或账户面临风险的完整人群。一个 Twilio 客户通常是为其自身用户提供服务的组织。因此,一个被攻破的客户关系可能包含数千、数百万或一小部分极具价值的下游身份。
Signal 使这种乘数效应显现出来。它使用 Twilio 进行电话号码验证,并确定大约有 1900 个用户可能被泄露了在 Signal 的注册状态,或者其短信注册码被暴露。攻击者明确搜索了三个号码,Signal 收到报告称其中一个账户已被重新注册。Signal 强调,消息历史、联系人列表、个人信息、封锁名单以及 Signal PIN 码并未通过 Twilio 获取。这是一个重要的局限性,但并非忽视该事件的理由。在访问窗口期间,一次成功的重新注册可能使攻击者能够以受影响的号码发送和接收新的 Signal 消息。Signal 注销了所有 1900 个可能受影响的账户,要求重新注册,并于 8 月 15 日和 16 日通过短信通知了用户。(Signal 的事件通知)
对比 209 个 Twilio 客户与 1900 个可能受影响的 Signal 用户,说明了为什么软件即服务安全事件需要多个分母。提供商必须统计受影响的客户账户。每个客户必须统计受影响的终端用户、记录、标识符和交易。调查人员必须区分查看的数据与篡改的数据、暴露的注册码与重新注册的账户,以及可能采取的行动与实际观察到的行动。将这些状态压缩成一个单一的总数,会丢失补救所需的信息。
Twilio 还表示,没有证据表明攻击者访问了客户控制台凭据、认证令牌或 API 密钥。这一界限大大减少了支持的声明范围。这意味着公开证据并不能确定攻击者能够以每个受影响的客户身份进行任意的 Twilio API 调用。但这并不意味着被访问的管理数据是无害的,也不能抹去 Signal 在支持系统中独立发现的情况。即使客户自身的密钥未受影响,内部工具仍可能暴露具有操作决定性的信息。
这正是该案例中决定性的云依赖关系。客户委托了一项通信或验证功能。Twilio 员工需要一些能力来支持该功能。攻击将员工的权限转化为获取客户信息的途径,而在 Signal 的案例中,这些信息位于账户注册流程中。因此,提供商的员工身份边界就成了客户认证边界的一部分,无论客户是否在架构图中看到这种依赖关系。
两起社会工程事件,随后调查范围扩大
最终的时间线比最初在八月份披露的情况更为复杂。Twilio 的调查将广泛报道的短信活动与更早的一起事件联系起来。2022 年 6 月 29 日,一名员工被语音钓鱼诱骗提供了凭据。入侵者获取了有限数量客户的联系信息。Twilio 表示在 12 小时内识别并清除了该访问权限,并于 7 月 2 日通知了受影响的客户。该公司后来得出结论,可能是同一恶意行为者应对这两起事件负责,但“很可能”仍然是调查评估,而非司法归属。
在七月中旬,攻击者开始向现任和前任 Twilio 员工发送数百条短信。这些消息冒充 IT 部门或管理员,并利用普通的工作焦虑情绪:密码过期、日程变更或其他需要登录的理由。链接指向含有 Twilio、Okta 或 SSO 等熟悉字样的域名,以及模仿 Twilio 真实登录体验的页面。部分员工提供了凭据。攻击者随后进入了内部管理工具和应用程序,并接触到了客户信息。
Twilio 于 8 月 4 日意识到发生了未授权访问。它在 8 月 7 日发布了第一份通知,最初描述了有限的客户账户数量。随着调查的推进,公开数字也在变化:早期更新识别出约 125 个客户;到 8 月 24 日,Twilio 报告了 163 个客户和 93 个 Authy 用户;10 月 27 日的结论给出了最终数字:209 个客户,并保留了 93 个 Authy 用户的数据。最后一次观察到的未授权活动发生在 8 月 9 日。Twilio 综合的事件报告和调查结论是这一时间序列的主要来源。
数字的变化本身并不表明早期声明具有欺骗性。事件范围通常会随着调查人员重建身份、会话、工具、查询和客户记录而扩大。问责制的问题是,每个数字是否都有明确的定义和日期。“截至目前已确认的客户”与“最终受影响的客户”是不同的。受影响的组织账户与个人账户也不同。Authy 用户又不一样。Twilio 的更新总体上标注了这一进展,但最终的公开报告仍然未公布每个受影响客户的数据类别、访问操作或下游受影响人群。
该公司的证券报告增加了一些有用的界限。Twilio 表示,攻击者通过未知来源获得了员工姓名和手机号码;它通知了受影响的客户并与之合作;它通知了相关监管机构并回答了它们的问题;行业报告显示该活动涉及科技、电信和加密货币组织。其第三季度2022 年 10-Q 表和后来的2022 年 10-K 表也重复了 209 个客户的数量并总结了补救措施。
这些文件是根据证券法义务作出的公司声明。它们比匿名报告更能有力地证明 Twilio 正式披露的内容,但它们并非独立的取证审计或监管机构的合规认定。本文所审查的公开记录中,没有一份包含分配该事件法律责任的执行令。因此,它支持对控制和证据的操作性判断,而非声称法院或监管机构作出了最终过失裁定。
员工是攻击目标,而非完整的根本原因
确实,一些员工在虚假页面上输入了凭据。但仅止于此会得出一个薄弱的解释。社会工程正是为了利用这样一个事实:合法的工作本就需要人们阅读消息、点击链接、回应日程变更并进行身份验证。攻击者选择了员工随身携带的沟通渠道、与雇主相关的语言,以及模仿熟悉身份提供商的页面。他们还掌握了足够的个人信息,能将员工姓名与手机号码对应起来,包括属于前员工的号码。
一个员工的操作之所以演变为安全事件,仅仅是因为认证系统接受了攻击者截获的信息,并且由此产生的会话能够访问敏感的内部工具。完整的链条是:目标获取、消息投递、链接信任、凭据输入、第二因素拦截或满足、身份提供商接受、应用会话创建、管理授权、客户数据访问以及延迟撤销。点击之后的每一次跳转,都是组织控制下的机器或策略决策。
这种区分对于公平和工程都至关重要。责怪员工会在报告最有价值的时候抑制上报。它还将资金引向意识培训活动,而让可复用的认证协议留在原地。Twilio 确实增加了强制性的补充培训,但其更重要的对策是向所有员工分发 FIDO2 安全密钥,并加强双因素防护措施。FIDO 认证器会将其响应绑定到真实的网站或依赖方。一个逼真的仿冒域名仍可收集密码,但无法获取合法服务所需的加密响应。
CISA 的抗钓鱼多因素认证指南将 FIDO/WebAuthn 确定为广泛可用的抗钓鱼选项,并将其与要求用户中继代码的方法区分开来。NIST 当前的认证指南更精确地解释了这一机制:手动输入的一次性输出不具有抗钓鱼性,因为冒名顶替者可以中继它们,而加密认证可以将认证器输出绑定到验证器或通道。这些后来的标准并不能证明 2022 年 7 月 Twilio 每个应用的确切因素配置。但它们解释了为什么在事件后分发 FIDO2 令牌比再次警告可疑链接更能直接应对已记录的攻击路径。
剩下的考验在于强制执行。拥有密钥不等于强制使用它们。恢复途径、遗留 VPN、管理例外、不受管理的应用程序、服务台重置或后备因素都可能保留旧的攻击路径。一份可信的补救记录应当显示:必须强制使用抗钓鱼认证的员工和特权应用所占百分比;对承包商和紧急账户的处理方式;例外的数量和时长;以及针对后备和恢复流程的演练结果。
Cloudflare 提供了有用的控制对比,而非道德劝诫
几乎在同一时间,Cloudflare 的员工遭遇了一起特征相似的攻击活动。2022 年 7 月 20 日,至少 76 名员工在不到一分钟内收到了短信,这些短信发到了他们的个人和工作手机上;有些甚至发给了家属。三名员工输入了凭据。Cloudflare 报告称,攻击者随后未能通过所需的 FIDO2 硬件密钥步骤,因此其系统未受侵害。其 24 小时应急团队将收件人与登录活动进行了比对,重置了受影响的凭据和会话,扫描了设备,封锁了基础设施,并与其他目标共享了情报。(Cloudflare 的技术说明)
这种对比很有价值,因为它将人为变量大致固定了下来。两家公司的员工都遇到了具有说服力的短信诱饵;两家公司的员工都与之进行了互动。结果在协议和执行层面出现了分化。Cloudflare 的密钥并没有让它的员工变得更不人性化。它们只是让一个人的错误不足以满足真正的验证器。
简单地得出 Twilio 应当照抄 Cloudflare 架构的每一个元素,或者某一种控制措施就能保证安全的结论,是过于简单化的。Cloudflare 的说明是自我报告,攻击活动相似但并非每个细节都被证明相同,而且一个坚定的攻击者可能会寻求端点控制、账户恢复、会话窃取或其他路径。教训更具体也更有力:持有客户数据管理访问权限的提供商,不应让一次真实的钓鱼演练成功与否,主要取决于每个员工是否识破诱饵。
Cloudflare 还说明了集中可见性的价值。它能够识别出那些使用了正确但被盗的密码、却未能通过硬件密钥要求的认证尝试,并将它们与员工报告联系起来,终止会话,查询访问日志。这些证据把零散的短信变成了一个有组织的活动。对于 Twilio 而言,同等的问责问题不仅仅是身份提供商是否生成了日志,而是公司能否迅速回答:哪些员工身份进行了认证,使用了哪些因素,哪些应用签发了会话,这些会话接触了哪些客户记录,以及是否每个相关会话都已被撤销。
0ktapus 将简单的基础设施转变为可扩展的活动
Twilio 的最终报告引用了独立研究人员,他们将这一更广泛的活动命名为 0ktapus 或 Scatter Swine。Group-IB 的活动调查发现了 169 个钓鱼域名、9931 条泄露的凭据记录、5441 个泄露的 MFA 代码,以及关联着 136 个唯一邮件域名的受害者。其调查人员描述了一个静态的钓鱼工具包,它模仿组织特定的 Okta 页面,收集用户名、密码和代码,并将捕获的材料发送到 Telegram 频道。攻击者必须快速使用那些短期有效的代码,但他们不需要罕见的恶意软件或未公开的加密破解手段。(Group-IB 的 0ktapus 分析)
活动层面的数字不应混入 Twilio 的受害者统计。Group-IB 的数据集涵盖了许多组织,且时间跨度为 Twilio 八月发现事件前的数月。这是关于攻击者经济成本和常用技术的证据,并不能证明数据集中的每条凭据都被使用,或者每个被列出的组织都遭受了相同的后果。
经济上的不对称依然明显。攻击者可以注册域名、克隆登录页面、租用托管服务、发送一波消息,并在遭到关闭后更换基础设施。Twilio 表示它与美国运营商合作阻止恶意消息,并与托管提供商合作关闭账户,但攻击者轮换使用不同的运营商和主机,并恢复了攻击。每一次防御行动都需要一份报告送达正确的提供商、足够的证据以满足其处理流程、作出决定并执行。而攻击者只需要另一个低成本的账户或域名。
这就是滥用举报经济:将外部警告转化为保护行动所需的成本和延迟。这个成本不仅仅是一份表格提交。它包括发现负责的提供商、格式化证据、克服误报过滤器、保护隐私、关联重复报告、确定法律权限、通知客户,以及追踪恶意资源是否在其他地方重现。攻击者可以自动化供应滥用基础设施;防御者往往将报告作为孤立的工单来处理。
Twilio 对发送给现任和前任员工短信的描述,引出了另一个报告问题。现有员工可以接受培训,使用内部按钮、聊天渠道或热线举报。而前员工可能没有经认证的内部途径。收到短信的家属可能不知道被冒充的是哪家雇主,也不清楚如何安全地提交证据。一个成熟的计划需要一个面向公众的、低门槛的渠道,用于涉及公司的可疑消息,而不仅仅是一个仅限员工使用的服务台。
Twilio 现在发布了单独的安全漏洞报告和滥用消息报告途径。前者接收来自研究人员、合作伙伴、供应商、客户和顾问的报告;后者收集有关骚扰电话或短信的详细信息。这些是有用的公开入口,但它们在今天的存在并不能证明 2022 年 7 月员工收到的钓鱼短信报告是如何被路由的,或者多快到达事件响应人员手中。漏洞、产品滥用、客户账户入侵、员工钓鱼和活跃事件情报是相互重叠但并非相同的队列。系统必须能够将它们合并。
RFC 9116 标准化了security.txt,部分原因是因为找到安全联系方本身就是一种延迟的来源。它为网站提供了一个可预测的、机器可读的位置,用于发布报告渠道和披露政策。(RFC 9116)一个联系人文件不能调查报告,一个 Web 表单也不能强制运营商或注册商采取行动。它们的价值在于降低启动协调的固定成本。更重要的衡量标准是收集之后发生的事情:确认时间、分析人员分配、跨报告关联、升级阈值、关闭时间、复发追踪以及对报告者的反馈。
支持控制台是 Signal 认证系统的一部分
Signal 的通知指出,Twilio 的客户支持控制台是通过钓鱼攻击进入的系统。这个细节很重要,因为支持工具往往被视为运营上的便利设施,而非生产环境的安全边界。客服代表可能需要检查投递状态、电话号码、验证事件或账户配置,以解决正常问题。同样的可见性也能帮助攻击者识别已注册的账户或截获一个临时验证码。
因此,Twilio 最终报告中“非生产系统”的措辞应当仔细解读。一个工具不必发送实时流量或托管客户应用程序,就能影响生产环境下的身份决策。如果它显示由生产通信生成的数据、允许搜索客户记录或帮助操作员改变状态,它就属于该服务有效信任边界之内。像“支持”、“后台”或“非生产”这样的标签,并不会降低那里可获得的权限的敏感性。
正确的设计问题不在于支持人员是否应该完全没有权限。一个通信平台不掌握证据就无法调查投递和账户问题。问题在于默认情况下有多少数据是可见的,哪些字段需要提权,特别敏感的搜索是否需要理由或批准,访问如何限定在某个租户范围内,批量查询如何受到约束,以及客户是否能够看到提供商员工访问了其账户。
Twilio 当前的监控事件文档描述了通过 API、控制台用户甚至 Twilio 员工所做的更改产生的事件记录。事件可包括操作者类型、来源、源 IP、资源和事件数据;保留期限因账户套餐而异。这证明客户现在能够获取有意义的平台活动记录,但并不能证明与 Signal 相关的 2022 年支持控制台视图对于客户都是可见的,或者在该产品下被保留。该事件凸显出审计范围应当包括读取访问和搜索,而不仅仅是配置更改。
将提供商集成到账户恢复或验证环节的客户,应当要求一份精确的支持访问模型。提供商员工能否查看实时的一次性验证码?他们能否透露某个号码是否已注册?该访问是否被屏蔽,直到明确提权?提权是否会过期?针对涉及高风险账户的目标查询是否需要第二人授权?客户是否会收到近乎实时的事件通知?提供商能否将这些记录保存足够长的时间,以满足客户自身的通知期限?这些问题直接源于 Signal 事件的影响,且并未假设每个 Twilio 产品都暴露相同的数据。
Authy 展现了第二种形式的下游权限
受影响的 93 名 Authy 用户属于另一个边界。Twilio 报告称,攻击者向这些账户注册了额外的设备,随后移除了未授权的设备并联系了用户。该公司建议用户检查关联账户、审核设备、移除任何不熟悉的条目,并在建立备用设备后禁用多设备功能。
这不仅仅是联系数据的暴露。添加一台 Authy 设备可能为攻击者提供一条持续获取关联服务基于时间认证码的途径,具体取决于账户配置和那些服务的安全措施。Twilio 关于检查关联账户的指导反映了这种可能性。公开报告并未说明所有 93 名用户都在关联服务上遭受了入侵,因此正确的状态是“未授权设备已注册”,随后需进行针对特定客户的调查。
Signal 和 Authy 共同展示了两种云服务放大效应。在 Signal 的案例中,一家通信提供商的支持视图与下游服务的注册流程产生了交集。在 Authy 的案例中,一款身份产品的设备注册机制可能将攻击者的认证能力扩展到其他账户。这两种危害都不能仅仅通过统计 Twilio 的客户组织来很好地衡量。
它们还展示了设计在遏制提供商入侵方面的价值。Signal 的服务器并未存储 Twilio 攻击者本可获取的消息历史、联系人或个人资料数据。其 Signal PIN 和注册锁提供了超越仅持有短信验证码的又一道边界,尽管注册锁是可选的,Signal 也敦促用户启用它。该服务在敏感步骤上仍依赖 Twilio,但其架构限制了这种依赖可能泄露的内容。云依赖很少能被消除;但它可以被缩小。
数据最小化原则必须应用于管理视图
提供商经常从数据库保留的角度来描述数据最小化。这次事件增加了另一个维度:展现最小化。某个字段可能是为投递、欺诈预防、计费或故障排除而合法保留的,但仍无需对每个支持身份完整显示。界面可以显示掩码号码、投递结果或单向验证状态,而无需显示完整的秘密或每个相关记录。
事件报告并未逐字段说明每个受影响 Twilio 客户损失了什么。这种省略可能反映了客户保密要求、调查局限性或产品与支持视图的多样性。然而,它造成了保障缺口。客户无法从 Twilio 的汇总数字推断自己的暴露情况,外部读者也无法检验访问是否得到了适当的约束。
一个负责任的提供商应当能够为每个客户构建一份证据包,其中包含员工身份、应用、会话、时间戳、查询或对象、显示的字段、导出内容、更改以及置信度。然后客户可以将提供商的证据映射到自己的用户和义务上。在没有确切日志的情况下,提供商应当如实说明,并采用保守的受影响人群估算,而不是悄悄地将缺失的遥测数据转化为“无影响”。
当前的 Twilio 文档区分了受限 API 密钥和更广泛的凭据,并建议使用可用的最小特定访问权限。(Twilio API 密钥概述)这种最小权限原则应像管理客户 API 客户端一样严格地适用于人工支持工具。如果内部通用支持身份在一次钓鱼登录后就能查看所有租户和所有敏感字段,那么一个范围狭窄的客户密钥对保护数据几乎无济于事。
管理设计还应将观察与行动分开。查看消息状态、更改账户配置、创建凭据、注册设备以及查看一次性验证码,有着不同的后果。它们应当产生不同的授权要求和明确的审计事件。高风险操作可以要求最近进行过抗钓鱼的重新认证、受管设备状态、经客户批准的支持会话或双人控制。目标不是让支持变得无法使用,而是让员工受感染的后果在演变为客户事件之前失效。
通知是一项分布式的事件响应控制
Twilio 单独通知了受影响的客户组织。这些客户随后必须确定哪些自己的用户受到了影响、数据呈现了什么状态,以及采取何种相应的保护措施。Signal 之所以能够采取行动,是因为它收到了足够的信息,能够识别大约 1900 个号码、搜索三个号码的活动情况以及一个号码的重新注册报告。它在 Twilio 检测到未授权访问后 11 天,即 8 月 15 日,开始直接通知用户,并于次日完成了这一过程。
这一过程表明,提供商的通知不能仅仅是一句“您的账户受到了影响”。下游组织需要统一时区的时间戳、被访问的数据字段、适合匹配的标识符、执行的操作、会话边界、置信度、遏制状态以及持续的指标。它还需要一种安全的方式接收这些信息。模糊或延迟的通知会将会调查成本转嫁给客户,并可能使客户自身的法律或合同时限无法满足。
联邦贸易委员会的数据泄露响应指南告知为他人存储数据的企业应通知受影响的企业,并建议组织核实服务提供商确实修复了漏洞。它还强调记录调查过程、保全证据、核实所涉及的信息和人群,并向人们提供有助于自我保护的具体细节。该指南并非针对 Twilio 的执法发现,但它体现了与提供商链条相关的操作标准。
NIST 当前的事件响应建议将事件处理置于准备、检测、响应、恢复和改进的全过程,而不是将其视为在确认后才开始的安全团队事件。对于云提供商而言,客户沟通属于该运营模式的一部分。应当在事件发生前演练通知质量,生成一个针对具体租户的样本证据包,并测试客户能否据此采取行动。
Twilio 当前的《数据保护附录》规定,它将无不当延误地将涉及的安全事件通知客户,并在客户必须通知当局或数据主体时提供合理协助。它还描述了保密审计报告和客户在配置方面的责任。(Twilio 数据保护附录)由于链接版本于 2026 年更新,因此不应将其反向解读为 2022 年每个客户的确切合同。它作为当前关于通知、协助、审计和共同责任如何分配的声明,是有用的。实际权利取决于适用于每个客户的协议和法律。
补救措施针对了进入路径,但证据仍不完整
Twilio 报告了四项紧急清除措施:重置受感染的员工凭据、撤销与被感染的 Okta 集成应用关联的活动会话、封堵已知的威胁指标,以及请求关闭虚假的 Twilio 域名。随后列出了五项长期措施:为所有员工强化双因素防护措施并配备 FIDO2 令牌、增加额外的 VPN 控制、移除或限制管理工具中的功能、提高 Okta 集成应用的令牌刷新频率,以及补充强制性培训。
这是一份内容具体的补救清单。它对应了攻击的多个阶段,而非仅仅承诺“认真对待安全”。FIDO2 应对的是验证器冒充。缩短令牌生命周期减少了凭据或会话被窃后的可利用窗口。VPN 控制增加了另一道策略边界。限制管理功能缩小了影响范围。培训和安全通报提高了识别和报告能力。
这份清单也暴露了客户接下来应该询问的问题。FIDO2 是否已成为每个员工和特权认证的强制性要求,并配有不可钓鱼的恢复方式?会话撤销是否可靠地使应用会话失效,而不仅仅是身份提供商会话?哪些管理功能被移除了,哪些仅仅是被隐藏了,现在有什么审批流程管控它们?刷新后的令牌生命周期有多短,事件响应团队能否在几分钟内全局撤销它们?前员工的号码是否已从内部通讯录和定向预警计划中移除,同时为他们保留了举报冒充的途径?
Twilio 表示在这些改进措施中看到了立竿见影的效果。公开报告并未用指标来定义这些效果,也未提供对运营有效性的独立评估。该公司当前的安全概述描述了安全事件响应团队、访问控制、测试、认证和其他项目要素。Twilio 信任中心提供对保障文件(如 SOC 2 报告)的受控访问。这些来源可能有助于客户现在进行尽职调查,但不应将当前的认证视为对 2022 年 7 月控制措施的司法裁定。审计范围、期间、测试标准、例外情况以及补充的客户控制措施都很重要。
一份可信的公开补救记分卡可以保护敏感细节,同时揭示结果:
| 控制问题 | 支持结案所需的证据 | 公开状态 |
|---|---|---|
| 克隆的登录页面能否产生有效的员工登录? | 在员工、承包商、管理员、恢复流程和遗留应用中强制实施抗钓鱼认证;例外数量及演练结果 | 已宣布分发 FIDO2;覆盖范围和后备证据未公开 |
| 一个员工会话能否访问过多的客户数据? | 角色和租户范围限定、字段掩码、即时提权、对敏感视图的双人控制、定期权限审查 | 管理功能已受限;确切范围未公开 |
| 被盗的身份在遏制后是否仍能保留访问权限? | 可衡量的全局会话撤销时间、短时令牌、在每个集成应用上的测试结果 | 会话已撤销,刷新频率已提高;运营指标未公开 |
| 客户能否重建提供商的访问记录? | 租户可见的读取和写入日志、可导出的事件、充足的保留期限、经过测试的证据包 | 当前监控功能已有文档;2022 年支持视图覆盖范围未公开 |
| 零散的外部报告能否迅速合并为一个事件? | 公开受理、24 小时分类、跨队列关联、升级服务级别、复发追踪 | 公开漏洞和滥用报告渠道存在;2022 年处理指标未公开 |
| 下游用户能否及时采取行动? | 带时间戳和安全递送方式的字段级、标识符级通知;年度通知演练 | 已确认进行单独通知;完整的通知时间和内容未公开 |
缺少公开证据并不证明某项控制不存在。这是将保障水平与实施情况分开评估的理由。Twilio 可能向企业客户或审计师提供了不能安全公开的机密证据。采购团队应要求提供这些证据。通过汇总覆盖率和性能指标(不泄露任何客户身份或防御秘密),公开问责制仍可得到改善。
客户有责任,但无法控制 Twilio 的员工
云事件后常会提及共同责任,但往往模糊了边界。Twilio 的客户负责其应用程序设计、本地凭据、用户通知以及他们选择通过该服务发送的数据的敏感性。但他们并未选择 Twilio 的员工认证器、决定哪些支持字段可见、配置其内部 VPN,或撤销受感染的员工会话。这些都是提供商的控制范畴。
客户仍可减轻提供商失败带来的后果。使用短信进行注册的服务可以添加应用程序特定的 PIN、延迟高风险账户更改、通知现有设备、检测重新注册,并为敏感用户要求更强的恢复路径。它可以尽量减少消息内容中的数据,避免将通信事件作为唯一的身份证明,并绘制出注册和恢复过程中涉及的所有外部提供商。
Twilio 客户还可以分离项目和凭据、使用受限的 API 密钥、轮换暴露的密钥,并导出平台事件。该公司的反欺诈开发者指南建议使用用量触发器、地理限制、子账户和快速密钥轮换来应对客户端的滥用。这些控制主要针对客户自身账户的被入侵或欺诈,而非针对 Twilio 员工查看内部工具。但它们仍能缩小相邻的受影响范围,并在入侵者从数据访问转向流量生成时,为客户提供独立信号。
企业依赖关系审查应追踪功能,而非供应商名称。“我们使用 Twilio”这种说法过于宽泛。一个团队可能使用可编程语音,另一个使用短信提醒,另一个使用一次性验证,另一个使用客户支持,还有一个使用 Authy。每种功能都有不同的存储数据、支持访问权限、故障行为和用户补救措施。采购应要求为每种用途提供数据流和权限图。
NIST 的网络安全供应链风险管理快速入门指南将技术服务提供商视为供应链的一部分,并将供应商风险与治理挂钩,而非一次性的采购行为。应用于此,客户应盘点提供商依赖关系、识别关键功能和数据、设定事件通知要求、获取保障证据并规划替代方案。这比增加一条通用的违约条款要求更高,但它使云关系变得可控。
Twilio 链条中的责任分配
攻击者挑选了员工,获取了电话号码的对应关系,冒充了内部系统,收集了凭据和验证码,未经授权进入了系统,并搜索了客户数据。他们对此次攻击负有直接责任。将此次活动描述为有组织、有条理,仅说明其能力;它并不能让任何控制方免责。
Twilio 的安全和身份团队控制了认证协议、身份提供商策略、会话生命周期、VPN、监控、事件关联和撤销机制。他们负责确保一个被盗的员工密钥不足以构成威胁、检测异常访问,并切断所有派生会话。
Twilio 的产品和支持负责人控制了管理工具的显示内容和允许操作。他们负责租户边界、数据掩码、提权、读取日志、敏感操作,以及客户支持是否能在较低的常设权限下运作。
Twilio 的高管和董事会监督者控制了投资、风险接受、保障以及围绕报告的激励机制。他们的任务不是确保没有员工会点击。而是要求证明一次点击无法解锁广泛的客户权限,并且事件能够被迅速重建和沟通。
受影响的客户控制了下游应用程序架构和用户响应。Signal 的案例展示了负责任的遏制措施:它将提供商数据映射到用户,界定了哪些内容被暴露以及哪些未暴露,强制要求重新注册,通知了用户,并推广了注册锁。其他客户的义务取决于他们的数据及产品使用情况。
身份、运营商、托管、注册商和平台中介控制了攻击基础设施的各个环节。快速行动可以缩短活动持续时间,但孤立的关闭无法解决对手轮换的能力。这些提供商需要可互操作的证据、可信的升级联系渠道和复发分析,而不是一系列不相关的滥用工单。
监管机构和公共当局有责任接收通知,在法律重叠的地方进行协调,调查有根据的违规行为,并在法律允许的情况下公开重要发现。Twilio 表示已通知相关监管机构并回答了问题。所审查的公开记录并未显示针对此事件的最终公开监管命令,因此不能用来声称获得了监管批准或证实了违规行为。
公开记录仍无法回答的问题
最强有力的问责分析会标记出未知之处,而不是用信心满满的语言去填补。Twilio 尚未公开说明员工电话号码是如何被汇总的。Group-IB 推测,早期对电信组织的攻击可能提供了一些号码,但这是一种活动假设,而非针对 Twilio 的已证实来源。
公开记录未说明有多少员工输入了凭据、每个受影响账户使用了哪些因素、攻击者是否实时截获了一次性验证码,或者是否涉及任何恢复途径。它也未提供从首次成功认证到 8 月 9 日的逐个会话时间线。
它未公布所访问的完整内部工具集、每个员工身份的权限,或按客户列出的被查看字段和操作清单。Signal 为其自身群体提供了详细信息,但这些细节不应推广到其他 208 个客户。
它未显示每名受影响客户是否收到了足够的信息来完成下游通知、每个客户被通知的速度有多快,以及整个事件中最终联系了多少个人终端用户。209 这个数字无法转化为个人数量。
它未提供对已完成的 FIDO2 部署、后备路径、令牌撤销、VPN 限制或管理工具削减的独立公开测试。后续的保障文件可能以保密方式涵盖部分控制措施,但其范围和例外情况必须经过审查,而非假设。
最后,它未证实出现了 Twilio 平台中断、攻击者访问了所有受影响客户的消息内容、客户 API 密钥被盗,或者每个可能暴露的 Signal 用户都被重新注册。这些说法将超出证据支持范围。
持久的考验在于一条可信的消息能换来多大权限
Twilio 事件有时被概括为一次影响了极小部分客户的短信钓鱼。这种描述在算术上站得住脚,但在操作上是不完整的。重要的单位不是客户账户的百分比,而是一个员工在错误地点认证后,可被利用的下游权限的数量。
对于一个客户而言,由此产生的访问触及了一个约有 1900 名潜在受影响的用户所使用的电话号码注册流程。对于 93 名 Authy 用户,未授权的设备被添加到了认证产品中。在整个更广泛的活动里,廉价的域名、克隆的页面、短信以及快速中继的验证码,触及了超过一百个组织。攻击者几乎不花什么成本就能创建另一个联络点。防御者则重复地为识别、报告、验证、禁用、调查、通知和举证付出代价。
Twilio 宣布的应对措施在技术方向上走对了。FIDO2 密钥改变了认证逻辑。更短的会话和更广泛的撤销限制了可利用时间。削减管理功能限制了权限。培训、公开报告途径以及协同关闭措施改进了人员及提供商间层面。这些措施比一份泛泛的道歉更有分量。
然而,问责制并不止于部署。客户需要证据来证明:抗钓鱼认证被强制执行,没有薄弱的后备手段;支持工具仅显示任务所需内容;每一次敏感读取都可溯源;可疑会话能够在跨应用的情况下被撤销;以及针对特定客户的事件证据能够比客户的通知义务更快地传递。董事会需要覆盖范围、例外情况、演练和响应时间等衡量指标。监管机构需要足够的事实,以区分一次不幸的点击与不合理的控制设计。
持久的教训不在于人类不可信或云通信特别不安全。而在于对云提供商的信任,涵盖了其员工、管理界面、身份协议、滥用举报联系人和通知机制。一条可信的消息终将在错误的时刻送达某人。负责任的系统是这样设计的:让这条消息几乎什么也换不来、能立即产生警报,并留下每个受影响客户都可用的记录。

