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

编辑 | 张婵

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

8 月 1 日,美国娱乐、社交、新闻网站 Reddit 官方发帖称在 6 月份,一名黑客黑进了 Reddit 系统,致使 2007 年以来所有 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 密钥,并在增强他们的日志记录和监控系统。

自 6 月 19 日以来,Reddit 一直在与云服务商和源代码托管商合作,以便全面了解攻击者访问的数据。攻击者访问了用户数据的两个关键区域:一是 2007 年以来的所有 Reddit 数据,包括帐户凭据和电子邮件地址;另外一个是 2018 年 6 月 Reddit 发送的电子邮件摘要。

被访问内容包括一个旧数据库的完整副本和包含 Reddit 电子邮件摘要(6.3-6.17 之间)的日志。数据库副本中包含了早期 (2005 年到 2007 年 5 月)Reddit 用户数据。最初 Reddit 的功能要少得多,因此备份中包含的最重要的数据是帐户凭据(用户名 + 加盐哈希密码),电子邮件地址和从那时起的所有内容(主要是公开消息,但也包括私人消息)。

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

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

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

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

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

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

双因素认证

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

双因素认证(也叫双重验证,二元认证)是指结合密码以及实物(信用卡、SMS 手机、令牌或指纹等生物标志)两种条件对用户进行认证的方法。在新电脑上访问账户的时候,除了要正确输入账户密码,大多数情况下还需要输入发送到移动电话或由移动电话生成的一次性密码(OTP)。更安全的 2FA 是使用令牌的形式。

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

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

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

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

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

活动推荐

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180802G16SCB00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券