Reddit系统被黑:基于短信验证码的双因素认证并不安全

Posted 架构头条

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Reddit系统被黑:基于短信验证码的双因素认证并不安全相关的知识,希望对你有一定的参考价值。

编辑 | 张婵
Reddit 通过自身的教训告诉大家:基于短信验证码的双因素身份认证真的不那么安全。

目前 Reddit 已向执法部门报告了这个问题并与他们配合进行调查。如果所有 Reddit 员工都使用生成验证码的 app 或者物理密钥而不是短信验证码来进行双重身份认证,则可能会避免这种情况。

事情经过

6 月 19 日,Reddit 了解到,在 6 月 14 日至 6 月 18 日期间,一名攻击者盗用了 Reddit 员工在其云服务商和源代码托管商的账户。

Reddit 使用双因素身份验证(Two-factor authentication,简称 2FA)来保护这些关键帐户,但有些员工在这一层保护中使用的是短信验证:这意味着有人需要发送到手机中的验证码来完成帐号登录。问题是,基于短信验证码的双因素验证是不安全的,因为攻击者可以发起“SIM 交换”攻击来控制用户的 SIM 卡和所有发送到他们手机号码中的数据。

Reddit 从这次事件中认识到了基于短信验证码的身份认证并不如预期的那样安全,这次事件的主要攻击就是通过短信拦截。通过自己的教训,Reddit 提醒大家都转移到基于令牌的 2FA。

虽然这是一次严重的攻击,但攻击者并未获得对 Reddit 系统的写入权限,他获取得是对包含备份数据,源代码和其他日志在内的的某些系统的只读访问权限。攻击者无法改变 Reddit 信息,Reddit 已经采取措施进一步锁定所有生产机密和 API 密钥,并在增强他们的日志记录和监控系统。

如何判断自己的信息是否被获取?Reddit 正在向受影响的用户发送消息,通知凭据可能仍然有效的帐户重置密码。如果你在 2007 年之后注册了 Reddit,那么显然你的信息被获取了。检查自己的短信和电子邮箱:如果你受到影响,Reddit 会尽快通知你。

如果你的电子邮箱没有和 Reddit 账号相关联,或者在此期间没有查看“电子邮件摘要”,你就不会受到影响。否则,请在邮箱收件箱中搜索 2018 年 6 月 3 日至 17 日期间的 [noreply@redditmail.com](mailto:noreply@redditmail.com)。

由于攻击者可以访问 Reddit 的存储系统,因此还访问了其他数据,如 Reddit 源代码,内部日志,配置文件和其他员工工作区文件,但这以上两个区域是最重要的用户数据类别。所有这些结合在一起可以让黑客深入了解 Reddit 的基本结构和架构,从而对 Reddit 产生长期风险。

目前 Reddit 已经采取的一些措施包括:

  • 向执法部门报告了这个问题,并正在与他们的调查合作。

  • 如果所获取的凭据有可能反映帐户的当前密码,Reddit 会向用户帐户发消息。

  • 采取措施保证 Reddit 系统的额外特权访问点更安全(例如,增强日志记录,更多加密,并在获取访问权的时候使用基于令牌的 2FA,因为 Reddit 怀疑 2FA 中使用基于短信的验证码是导致本次事件的根本原因)。

双因素认证

最后,Reddit 建议大家使用安全系数高的密码,启用 2FA(仅通过身份验证器 app 提供,而不是短信验证码),并警惕潜在的网络钓鱼或诈骗。

然而,保护 Reddit 帐户的 2FA 依赖于通过短信发送的 OTP,尽管早有报告明确表示短信内容容易受到拦截。短信传输的 OTP 容易受到各种攻击,常见的是通过呼叫移动运营商或进入运营商的零售店并模仿用户来控制目标的手机号码。

在过去几年中,基于短信验证码的 2FA 已经失宠,因为越来越多的人采用了能生成 OTP 的 app,例如 Google Authenticator 或 Duo。这种形式的 2FA 优于短信验证码,但它仍然存在潜在的缺陷,因为 OTP 可以通过社交工程或网络钓鱼获取。在更有针对性和复杂的攻击中,手机也可能会感染恶意软件。

更强大的 2FA 机制是使用直接连接到登录计算机的物理安全密钥。在这种机制下,站点经过配置可以支持安全令牌,用户输入正确密码后,站点会需要用户点击设备上的按钮。嵌入在设备中的加密密钥然后发送验证码,提供第二种形式的认证。

这种形式的身份验证远远优于基于短信验证码甚至是密码生成器的 2FA,因为这其中的信息不能被网络钓鱼,泄露或截获。

最后,基于短信验证码的 2FA 总比没有 2FA 好,但它的安全保障力度非常有限。有些网站本来可以允许更强形式的 2FA,但只提供基于短信验证或基于语音的 2FA,这些网站应该多注意。最安全的可行 2FA 方法是使用不需要 OTP 的物理令牌,如果用户认为这种方法太难,那么可以使用生成 OTP 的 app。安全从业者多年来一直在传播这种理念,Reddit 的事件则表明了,很多应该注意安全问题的人并不总是听从这个建议。


活动推荐

2018 年,有哪些值得关注的运维技术热点?第四届 CNUTCon 全球运维技术大会正式启动啦,包括智能化运维、Serverless、DevOps 等热门话题,数十位大牛联合出品,揭秘最前沿运维技术,推荐学习!点击“阅读原文”了解更多大会精彩。


以上是关于Reddit系统被黑:基于短信验证码的双因素认证并不安全的主要内容,如果未能解决你的问题,请参考以下文章

短信验证码不安全,接下来多因素认证或将接班

双因素身份认证动态口令技术原理及优势

有人知道 Symfony 3 构建的应用程序的双因素身份验证 API 吗?

什么是双因子认证?堡垒机都有哪些双因子认证方式?

短信验证码api

轻松搭建CAS 5.x系列-在CAS Server增加双因素认证(DUO版)