SIM 卡交换将你的电话号码转移到攻击者控制的 SIM 卡上。如果应用向该号码发送 SMS 一次性密码(OTP),攻击者就能收到验证码并通过应用的验证。因此,应用需要其他方式来判断当前操作者是否是合法的账户持有人。
SIM 卡交换欺诈是如何运作的?
攻击者首先针对运营商账户下手,通常冒充号码所有者或利用从其他途径泄露的信息。运营商将号码转移到攻击者的 SIM 卡上。原机主的手机随即失去服务。该号码的来电和短信全部到达攻击者手中。攻击者利用应用发送的 SMS 验证码尝试接管账户。
这条攻击路径针对的是运营商层面的号码归属权,而非破解 OTP。验证码可以被正确生成、送达和校验,但仍然可能到达错误的人手中。
SMS OTP 能证明什么?
SMS OTP 证明输入验证码的人能够在与该验证关联的号码上接收消息。它无法证明此人是应用账户的合法所有者。NIST(美国标准机构)将基于 PSTN 的身份验证列为受限选项,要求验证方在依赖此方式之前考虑 SIM 卡变更、设备变更和号码携转等信号。详见 NIST SP 800-63B 的保障框架。
| 证明或操作 | 所能确立的内容 |
|---|---|
| SMS OTP | 对当前接收号码的控制权 |
| 已注册的身份验证器 | 对独立身份验证器的控制权(前提是应用已将其绑定到账户) |
| 账户恢复 | 应用基于其恢复证据和策略做出的决定 |
两次 SMS 投递仍然是同一个通道。再发送一个验证码并不能让已泄露的号码变成独立的认证因子。
应该关注哪些信号?
将意外的移动服务中断视为可能的安全事件,尤其是同时伴有运营商告警、账户信息变更或未请求的密码重置时。运营商 PIN 码和账户接管保护可以增加未经授权号码变更的难度,但它们不能替代应用层的身份验证。
如果怀疑发生了 SIM 卡交换,通过可信渠道联系运营商,要求恢复对号码的控制。通过不依赖已泄露号码的恢复路径保护受影响的应用和邮箱账户。不要通过转移真实 SIM 卡来测试这一威胁。
更换投递通道能解决 SIM 卡交换问题吗?
不能。更换通道可以改善投递效果,但无法证明已泄露的号码是安全的。Bird 的下一通道操作会发送新的验证码,之前的验证码仍然有效。从 SMS 切换到其他通道并不会撤销已投递给攻击者的验证码。应将通道回退视为投递选择,而非 SIM 卡交换的补救措施或自动的安全级别提升。阅读什么是 OTP 和什么是双因素认证,了解验证码与独立认证因子之间的区别。
应用应该如何应对?
使用风险信号来判断 SMS 校验是否足够。近期的 SIM 卡或设备变更、号码携转、异常登录或运营商告警可以触发更强的身份验证器或应用自有的恢复流程。NIST 的指南将这些信号描述为验证方风险决策的输入,并非将所有 SMS 登录都视为不合规。
将身份验证和账户恢复分开处理。即使正常登录使用了更强的认证方式,如果账户恢复在号码被接管后仅接受 SMS 验证码,安全性仍会被削弱。在恢复访问权限或更改安全设置之前,要求提供独立的证据。
Bird Verify 在这个流程中如何定位?
Bird Verify 负责发送和校验验证码。安全决策由你的应用掌控。使用目标接收方创建一次验证,收集验证码,然后以同一接收方进行校验。仅在校验返回 success: true 后才授权登录或敏感操作。仅完成消息投递不等于完成验证。参阅 Verify 指南、创建操作和校验操作。
接收人的方案决定了可用的通道。options.channels 可以裁剪或重新排列该方案,但无法添加不可用的通道。如果投递失败,仅在你的风险策略仍允许该验证时才请求下一个可用通道。下一通道操作推进投递流程,但不会检测 SIM 卡接管或撤销之前的验证码。对于已被攻破的通道选择,应改用应用自有的恢复决策。
SIM 卡交换改变了谁能接收某个号码的消息。SMS OTP 能够确认这一变更后的控制权。在账户需要时,将其与运营商保护、风险信号和独立的恢复路径配合使用。