如果您错过了《关于如何挑选密码管理器》。
许多 LastPass 用户在去年底收到了如下电子邮件,表明其他人试图登录他们的帐户:
该邮件是合法的,是由 LastPass 服务发出的。然而,据称的登录地点通常离用户的实际位置非常远,例如在巴西或印度这样的国家。然而,这不仅仅是企图猜测密码,因为只有在异地登录尝试中提供了正确的主密码时,LastPass 才会发送这样的邮件。
一位受影响的用户在 Hacker News 上创建了一个主题,至少有十几个人也加入了表明了类似的经历。这表明,一个大规模的攻击正在进行,受影响的用户总数相当可观。
作为在线密码管理器,用户的主密码是最关键的信息。因此,重要的问题是:攻击者是如何知道主密码的?主要被讨论的解释包括:凭证填充、网络钓鱼、恶意软件、LastPass 泄露。
由于作者对 LastPass 有一定的了解,于是本文将分析一下这些可能性到底有多大以及为什么。
凭证填充攻击
Hacker News 上的话题促使 AppleInsider 写下了这个问题。这篇文章引用了 LastPass 发言人的以下声明:
LastPass 调查了最近关于登录尝试受阻的报告,我们认为该活动与试图 “凭证填充” 有关,在这种情况下,恶意者或不良行为者试图使用从与其他无关联服务相关的第三方漏洞中获得的电子邮件地址和密码访问用户账户。
凭证填充攻击是很常见的,它依赖于密码重用:一个服务泄露的密码刚好也用于另一个服务。但是,当谈到一个以消除密码重用为全部目标的密码管理器时,密码重用是否可能?由于 LastPass 有淡化安全问题的历史,我们应该对他们的声明持谨慎态度。
几个受影响的 Hacker News 用户声称(我相信他们),他们的主密码没有在任何地方被重复使用。更糟糕的是,一些用户报告说,他们在收到这个通知后就立刻改变了主密码,但不久后又收到了用新的主密码异地登录的通知。
如果是真的(我没有什么理由怀疑这种说法),这就完全排除了凭证填充作为这里的攻击媒介的可能性。
然后 LastPass 发表了一份扩大的声明,它也声称凭证填充是问题的根源,但有一个重要的补充:
我们的调查后来发现,其中一些安全警报是发给 LastPass 有限的子集用户的,可能是错误触发的。
这似乎表明,这些电子邮件信息是由使用错误密码的登录尝试错误地触发的。这将是一个好消息,使这篇文章的其余部分变得过时。但是,请注意他们在这里说的 “可能”。如果他们发现并修复了电子邮件通知机制中的一个错误,他们为什么不直接说明?不幸的是,这种声明听起来像是他们仍然不知道发生了什么事,但还是想安抚群众。
钓鱼
网络钓鱼,作为另一种可能的解释被提及,由于同样的原因,是相当不可能的。这里的疑点是,用户被引诱到一个假的 LastPass 登录页面,并在那里输入他们的主密码。虽然这也是一种常见的攻击形式,但它无法解释为什么在更改主密码后继续出现同样的现象。
此外,几个受影响的 LastPass 账户至少有一年没有使用了。这意味着,在这种情况下,网络钓鱼攻击肯定至少发生在一年前。然而,任何通过网络钓鱼攻击收集密码的人都会试图尽快使用这些密码。他们等待的时间越长,用户就越有可能认识到自己的错误并更改密码。
恶意软件
由于攻击者似乎对变化有反应,一些人得出结论,他们确实被盯上了。可能是一个恶意的(或严重脆弱的)浏览器扩展或一个独立的应用程序损害了整个系统。这至少解释了攻击者如何在用户更改后获得了新的主密码。
然而,这一理论也是不太可能的,原因是多方面的。首先,恶意软件提供的访问级别使黑客攻击 LastPass 账户变得没有必要。如果它能拦截或提取 LastPass 的主密码,它也能对所有其他密码做同样的事。登录 LastPass 账户只是一个额外的步骤,一个不必要地暴露了整个活动的愚蠢步骤。
同样值得注意的是,这里的攻击被基于地理位置的基本保护所挫败。为什么控制用户的浏览器或整个系统的攻击者要进入这个陷阱?他们完全可以从用户自己的浏览器登录 LastPass。更好的是:他们可以劫持现有的 LastPass 会话。
最后,还有一个时间问题。恶意软件只有在密码被使用时才能窃取密码。然而,一些受影响的账户已经被放弃了,最后一次使用是在一年多以前。攻击者是否在很长一段时间内收集凭证并做了充分准备?看起来不是这样。这些攻击并不复杂,否则他们也不会试图从巴西登录美国用户的账户。有了真正的准备,他们就不会反复地违背这种地理保护。
LastPass 自身泄露
于是这就只剩下 LastPass 本身被泄露的可能性了。但这个可能性也引起了一些问题:甚至 LastPass 的服务器都不应该知道用户的主密码。主密码只以散列方式传输,这种方式很难逆转。
最初的怀疑是,有人滥用了2018年的这篇文章中描述的漏洞。允许 websiteBackgroundScript.php 被任何网站加载的问题。而破解仅用5000次 PBKDF2 迭代的主密码(2018年之前的 LastPass 默认)是完全可能的。然而,这个选项被排除了,因为用户也报告了全新的账户、以及最近更改的主密码,都受到了影响。
新的默认值(100,000次迭代)使得从哈希值中恢复主密码需要相当多的资源,对于不成熟的攻击者来说,即使在另一个类似的数据泄漏的情况下,也无法完成这样的大规模攻击。但这是在假设 LastPass 的服务器事实上不知道您的主密码的情况下。
LastPass 的用户经常会在 lastpass.com 上托管的网页中输入自己的主密码,即使在使用浏览器扩展时也是如此。这是一个设计缺陷,因为没有真正的方法来验证密码是否从未被发送出去过。例如,一些日志功能有可能无意中把明文密码发送到服务器上。由于 log4j 的漏洞现在正被积极利用,有人可能已经破坏了接收这些数据的服务器。2021–12–31,LastPass 与作者联系,表示(除其他外)他们没有在任何地方使用log4j。
作者试着通过网页界面登录 LastPass,没有看到任何意外的数据被传输。当然,这并不能证明什么,因为一些其他形式可能是这里的罪魁祸首。或者这个功能可能只对特定国家用户启用。但也有另一种解释,一个不需要 LastPass 知道未哈希的主密码的解释。
哈希传递攻击
事实上,攻击者知道主密码是不可能的。这是因为 LastPass 认证(与适当的PAKE协议不同)容易受到哈希传递攻击。每次登录都使用相同的主密码哈希值,所以攻击者可能使用该哈希值而不是主密码本身。而从 LastPass 服务器上提取该哈希值应该比获得未哈希的主密码要容易得多。
因此,人们可以只使用主密码哈希值来登录,然后呢?一旦登录,攻击者可以下载 https://lastpass.com/getaccts.php,其中包含所有账户的数据。这给了他们网站的地址,但如果不知道主密码,就无法解密相应的用户名和密码。
然而,这并不意味着这种攻击毫无价值。一旦攻击者得到了这些数据,他们就可以永远在本地破解主密码。他们甚至可以将持有密码的账户优先用于更有价值的网站。所以这很可能就是这里发生的事。⚪️
事实上,攻击者知道主密码是不可能的。这是因为 LastPass 认证(与适当的PAKE协议不同)容易受到哈希传递攻击。
这一段翻译有问题,它本身就是不合逻辑的,后一段提及的是lastpass存在某种问题使攻击者不需要主密钥就可以完成攻击,前一段写的是攻击者不可能知道主密码,两者就不存在因果性。从逻辑上看,应该是攻击者“不需要”知道主密码,原文也表达同一意思,原文照抄如下:
It is in fact not given that the attackers know the master password. That’s because LastPass authentication (unlike proper PAKE protocols) is vulnerable to pass the hash attacks.