密码恢复的陷阱 - 当账户恢复成为攻击途径

本文约需 12 分钟阅读

密码恢复流程本是帮助用户重新获得账户访问权限的机制,但矛盾的是,它却是认证安全中最薄弱的环节之一。攻击者越来越多地将目标对准账户恢复流程而非密码本身,因为恢复机制往往会绕过保护账户的安全措施。Google 威胁分析组 2024 年的报告显示,账户恢复滥用占定向账户接管的 28%,在某些类别中超过了网络钓鱼成为主要攻击途径。据 FBI IC3 统计,针对基于 SMS 恢复的 SIM 卡交换攻击自 2021 年以来激增了 450%。本文揭示密码恢复系统的结构性漏洞,并为用户和服务设计者提供可操作的防御措施。

基于邮件重置的结构性问题

基于邮件的密码重置是最普及的恢复手段,但从安全角度来看,它存在"将密码强度依赖于邮箱账户强度"的根本问题。无论设置多么强大的密码,一旦邮箱账户被入侵,就可以通过重置链接立即接管账户。

技术漏洞使这个问题更加严重。许多服务生成的重置令牌随机性不足,或未设置适当的过期时间。OWASP 2023 年的分析发现,12% 的被调查 Web 应用使用可预测的令牌生成模式,8% 允许重置令牌在超过 24 小时后仍然有效。此外,通过未加密邮件传输的重置链接可能在公共 Wi-Fi 网络上被中间人攻击截获。关于保护作为所有重置基础的邮箱账户,请参阅我们的邮箱账户保护指南。

SMS 重置与 SIM 卡交换威胁

曾经有一段时间,基于 SMS 的密码重置被认为比邮件更安全。然而,SIM 卡交换攻击的激增已经完全颠覆了这一前提。SIM 卡交换是攻击者欺骗移动运营商客服 (或利用内部协助者) 将目标的电话号码转移到攻击者的 SIM 卡上的技术。

据 FBI IC3 2023 年报告,SIM 卡交换攻击造成的损失每年达到 4800 万美元,随着手法日益精密,单次攻击的损失金额从 2021 年的总计 6800 万美元基础上持续增大。攻击者掌控电话号码后,可以接收所有通过 SMS 发送的密码重置代码和双因素认证代码。换句话说,基于 SMS 的恢复手段对攻击者来说是"一石二鸟"的攻击途径,可以同时绕过密码和双因素认证。

安全问题为何不"安全"

安全问题仍然是目前使用中最危险的恢复机制之一。Google 2015 年的里程碑式研究"Secrets, Lies, and Account Recovery"表明,37% 的用户为了增加安全性而故意提供虚假答案,但这些虚假答案往往被遗忘,导致无法恢复。相反,对"母亲的婚前姓氏"或"出生城市"等常见问题的真实答案,可以通过社会工程学或公共记录搜索轻松发现。

社交媒体的普及使这个问题进一步恶化。Facebook 个人资料列出了家乡和学校,Instagram 上有家人和宠物的照片。"你第一只宠物的名字是什么?""你毕业于哪所高中?"等问题的答案,往往只需浏览目标的社交媒体 5 分钟就能找到。如果不得不设置安全问题,最佳做法是将与问题无关的随机字符串设为答案,并保存在密码管理器中。

如何安全保管恢复代码

设置双因素认证时,许多服务会发行备份恢复代码 (通常为 8-10 个一次性代码)。这些恢复代码是丢失认证设备时的最后手段,但保管方法不当会产生新的攻击途径。

最危险的保管方法是将恢复代码保存在邮件草稿或云笔记中。如果邮箱账户被入侵,恢复代码也会同时泄露。将其作为截图保存在照片库中也有通过云同步泄露的风险。

推荐以下三种保管方法。第一,保存在密码管理器的安全笔记功能中。第二,打印在纸上并保管在防火保险箱中。第三,离线保存在加密的 USB 驱动器上。无论哪种情况,都不要将恢复代码限制在一个位置,应分散保管在 2 个以上的位置,这样即使一个位置丢失也能恢复。

关于包括恢复代码管理在内的综合密码管理,密码管理实践指南 (Amazon)也可供参考。

服务设计者常犯的恢复流程设计错误

密码恢复的漏洞不仅仅是用户端的问题。服务提供商的设计中也存在结构性问题。

  • 重置令牌有效期过长: 有效期超过 24 小时的令牌给攻击者充足的时间。推荐 15-30 分钟
  • 重置后未使现有会话失效: 即使重置了密码,攻击者的现有会话仍然存活,访问继续
  • 重置尝试次数无限制: 攻击者可以大量请求重置链接,尝试令牌猜测或时序攻击
  • 重置成功时不通知账户所有者: 合法用户错过发现未授权重置的机会
  • 恢复流程绕过双因素认证: 完成密码重置后无需重新设置双因素认证即可登录的设计

用户现在就应实施的防御措施

  1. 将邮箱账户作为最优先保护对象。使用 passtsuku.com 生成 20 个字符以上的随机密码,并使用 FIDO2 密钥或认证应用启用双因素认证
  2. 尽可能避免基于 SMS 的恢复。改用认证应用或 FIDO2 密钥。如果 SMS 是唯一选项,请联系运营商设置 SIM 卡转移 PIN。详情请参阅我们的双因素认证指南
  3. 为安全问题设置随机字符串并保存在密码管理器中。绝对不要设置真实答案
  4. 将恢复代码分散保管在两个位置:加密的密码管理器和纸质打印件
  5. 在支持的服务上采用通行密钥。基于通行密钥的认证完全消除了密码恢复问题,因为根本没有密码需要恢复

常见问题

如果收到自己没有请求的密码重置邮件该怎么办?
不要点击重置链接。立即自行登录该服务并更改密码。可能有人正在尝试访问您的账户。如果尚未设置双因素认证,请立即启用,并检查登录历史是否有可疑访问。作为预防措施,建议同时更改使用相同邮箱地址的其他服务的密码。
如何保护自己免受 SIM 卡交换攻击?
联系移动运营商设置 SIM 卡转移时的额外认证 (PIN 码或当面确认)。最有效的措施是将基于 SMS 的双因素认证切换为认证应用或 FIDO2 安全密钥。此外,重要的是不要将电话号码作为唯一的恢复手段,应设置多种恢复选项。
有安全设置安全问题的方法吗?
最佳方法是将与问题内容无关的随机字符串设为答案,并保存在密码管理器中。对"母亲的婚前姓氏"设置 "xK9#mP2vL" 这样的随机字符串,就不可能从社交媒体推测出来。绝对不要设置真实答案,因为可以从社交媒体上公开的信息轻松推测。

相关术语