您不需要SMS-2FA

2020-07-30 02:32:47

我相信SMS 2FA是完全无效的,鼓吹它是有害的。这篇帖子将回应SMS支持者提出的三个主要论点,并提出一个更简单、更便宜、更容易获得、更有效的解决方案。

就像昨天关于可复制构建的话题一样,关于SMS-2FA的讨论迅速升温。我发现SMS-2FA的部署或宣传对一些人来说是一个主要的专业项目,他们对其有效性提出质疑。

短信2FA不能防止钓鱼,但可以防止“凭据填报”。

我还会谈到我听到的其他一些较弱的论点,但这些都是重要的论点。

我想任何对这个主题感兴趣的人都已经知道网络钓鱼是如何工作的,所以我就省去你的介绍了。如果网络钓鱼攻击成功地收集了受害者的凭据,那么用户一定是错误地得出了他们正在使用的网站是可信的结论。

使用SMS-2FA来缓解此问题的问题在于,没有理由认为在输入凭据之后,他们不会同时进入任何OTP。

我发现很多人很难想象这种攻击,即使是安全工程师也是如此。让我们看一段用于钓鱼SMS-2FA代码的渗透测试工具的演示视频,以了解攻击的实际情况。

收到的短信是真实的。不能将其过滤、阻止或识别为网络钓鱼尝试的一部分。

请注意攻击者控制台(视频中1:05左右)。对于本演示,它只包含一个会话,但可以存储无限个会话。在网络钓鱼过程中,攻击者不必在场。

安装和使用此软件并不比安装和使用不支持SMS-2FA的网络钓鱼工具包更复杂。

攻击者不需要拦截或修改SMS,特别是没有向SMS添加“链接”(这是一个常见的误解,即使是安全工程师也是如此)。

我认为,任何缓解措施被认为是攻击的“解决方案”的一个合理的最低限度是,需要不同的攻击。因为SMS-2FA可以用网络钓鱼击败,所以它根本没有达到这个标准。

再次重申,SMS 2FA可以进行网络钓鱼,因此不是网络钓鱼的解决方案。

凭证填充是指将从一个受损站点收集的用户名和密码重放到另一个站点。这是一个如此廉价和有效的攻击,它是一个重要的妥协来源。

凭据填充之所以有效,是因为密码重用非常普遍。需要强调的是,如果你不重复使用密码,你就不会受到凭证填充的影响。SMS-2FA的论据是,凭证填充不再是自动的。如果这是真的,SMS-2FA将有资格作为凭据填充的解决方案,因为攻击者将需要使用新的攻击(如网络钓鱼)来获得动态口令。

不幸的是,它不是那样工作的。当服务启用SMS-2FA时,攻击者可以简单地移动到不同的服务。这意味着不需要新的攻击,只需要一项新的服务,如果问题没有解决,甚至没有缓解,用户仍然会受到伤害,问题只是被转移了。

供应商经常报告在实施SMS-2FA后网络钓鱼和凭据填充攻击减少。支持者指出,SMS-2FA在理论上是否有效是无关紧要的,我们可以衡量和看到它在实践中是否有效。

使用大规模网络钓鱼活动的机会主义攻击者并不关心他们伤害了谁,他们的目标是从大量泄露的账户中榨取少量价值。

如果供应商实施SMS 2FA,攻击者将被迫升级其网络钓鱼工具和方法以支持SMS 2FA(如果他们想要危害这些帐户)。这是一次性成本,可能需要购买新的网络钓鱼工具包。

一个理性的网络钓鱼者现在必须计算添加对SMS 2FA的支持是否会增加他们的受害者收益,足以证明进行这项投资是合理的。

如果只有1%的帐户启用SMS 2FA,那么我们可以合理地假设支持SMS-2FA将使受害者收益增加1%。受害者收益率提高1%的收入会让钓鱼者收回他们的投资成本吗?今天,采用率仍然太低,无法证明该成本是合理的,这就解释了为什么启用SMS 2FA的帐户被网络钓鱼的频率较低,在渗透率提高之前吸收损失更有意义。

对于有针对性的(而不是机会主义的)网络钓鱼来说,今天支持SMS-2FA通常在经济上是有意义的,我们确实看到网络钓鱼者在他们的工具和流程中实现了对SMS-2FA的支持。

即使SMS 2FA有瑕疵,那不也是在“抬高门槛”吗?

诚然,如果被普遍采用,SMS 2FA将迫使攻击者一次性投资来更新他们的工具和流程。

每个人都喜欢激怒钓鱼者的想法,他们是诈骗和欺骗无辜人民的罪犯。无论如何,我们必须权衡制造这种烦恼的代价。

我们有有限的善意,我们可以用它来倡导实施新的安全技术。如果我们把所有善意都花在激怒攻击者上,那么当我们准备好实际实现解决方案时,开发人员就不会感兴趣了。

这就是我认为SMS-2FA不仅毫无价值,而且有害的论点的基础。我们在浪费我们仅存的一点点善意。

好消息是,我们已经有了实际有效的优秀解决方案,它们更便宜、更简单、更容易获得。

您可以使用唯一的密码,这使您不受凭据填充的影响,并降低了网络钓鱼的影响。如果您使用现代浏览器内置的密码管理器,它还可以有效地消除网络钓鱼。

如果您使用第三方密码管理器,您可能没有意识到现代浏览器内置了一个漂亮的用户界面的密码管理。坦率地说,不使用它更难。

即使您不能使用密码管理器,在纸质笔记本、电子表格、rolodex或任何其他您可以用来记录数据的方法中记录您的密码也是完全可以接受的。这些都很便宜,到处都可以买到,而且很容易买到。

这是个好消息:你可以自己处理事情,不需要任何人的帮助,你就可以保护自己和你所爱的人不受证书造假的影响。

问:如果我安装恶意软件,恶意软件会不会窃取我的密码数据库?

是的,但是SMS-2FA(甚至U2F)也不能防御恶意软件。为此,我们最好的解决方案是应用程序白名单。因此,这不是使用SMS-2FA的好理由。

您当前允许您的用户选择自己的密码,其中许多用户使用的密码与他们在其他服务上使用的密码相同。没有其他可能的方式使您的用户容易受到凭据填充的攻击。

取而代之的是,为什么不简单地为他们随机生成一个好的密码,并指示他们写下密码或将其保存在他们的Web浏览器中呢?如果他们丢失了密码,他们可以使用您现有的密码重置程序。

这完美地消除了凭据填充,但不会消除网络钓鱼(但SMS-2FA也不会)。

如果您还想要消除网络钓鱼,您有两个很好的选择。您可以教育您的用户如何使用密码管理器,或者部署U2F、FIDO2、WebAuthn等。这可以使用硬件令牌或智能手机来完成。

如果这两个选项都不吸引您,那并不意味着您应该部署SMS-2FA,因为SMS-2FA不起作用。

SMS-2FA使登录过程变慢,让用户有更多时间考虑安全性。

[注:这不是我编造的,支持者真的提出了这个论点,例如这里、这里和这里]。

这个想法显然是荒谬的。但是,如果您真的相信这一点,那么您不需要SMS-2FA。一个会降低登录速度的简单协议是拆分登录过程,首先请求用户名,然后再请求密码。

当您收到用户名时,创建一个带签名和时间戳的令牌,并将其添加到隐藏的表单字段中。然后,您可以在允许提交令牌并请求密码必须附带的另一个令牌之前暂停。

这比集成SMS简单得多,因为您只需修改已用来保护其免受XSRF攻击的逻辑即可。如果您还没有针对XSRF进行保护,我的建议是在实现任何可疑的“越慢越好”理论之前解决这个问题。

如果您可以购买并安装一个工具包,那么可以很合理地假设您能够购买并安装另一个工具包。这里的主要障碍是升级成本,而不是黑客能力。

当采用率高到有可能收回这些成本时,网络钓鱼者肯定会升级。

安全带也不完美,你认为我们不应该系安全带吗?

只有当你为之辩护的东西是好的时,这个论点才有效。正如我已经解释过的,SMS-2FA不好。

唯一密码和U2F不是完美的,但它们很好。独一无二的密码会降低网络钓鱼的影响,但不能消除它。U2F不能防止恶意软件,但可以防止网络钓鱼。

实现SMS-2FA支持的网络钓鱼工具包比不支持SMS-2FA的网络钓鱼工具包要复杂得多。

这是真的,但是这种复杂性是可以对网络钓鱼者隐藏的。我对音频处理一窍不通,但我仍然可以播放MP3。我只是简单地从了解这些主题的人那里购买了软件和硬件。

SIM交换攻击是一个合理的担忧,但如果这是SMS-2FA唯一的主要问题,我的意见是,这不足以对其不屑一顾。