LastPass 扩展安全更新

By March 27, 2017 未分类 No Comments

事件告:2017 年 3 月 31 日(晚上 8:10)

3 月 25 日周六,Google Project Zero 安全研究员 Tavis Ormandy 报告了一个与 LastPass 浏览器扩展相关的安全问题。在过去的 24 小时里,我们针对该漏洞发布了一个更新,我们认为它能够修复所有浏览器中存在的该漏洞,并与 Tavis 本人进行了验证。

对大多数用户来说,这一更新将会自动完成。最新版本可随时从 https://www.lastpass.com/ 下载,请务必运行最新版本(4.1.44 或更高)。

虽然问题已经解决,但我们想为我们的用户群提供一份事后分析报告,介绍报告详情以及我们日后如何构建更好、更安全的 LastPass。请注意,鉴于该漏洞的性质,这份事后分析报告具有很强的技术性。

概述

  • 该漏洞是 LastPass 浏览器扩展的客户端侧的一个漏洞,可被用来窃取数据和篡改 LastPass 扩展
  • 要想利用该漏洞,利用者需(通过网络钓鱼、钓鱼式攻击或其他攻击)引诱用户前往恶意网站,或引诱用户前往运行恶意软件的受信任网站
    • 这意味着,利用者必须通过用户的本地浏览器进行单用户攻击
  • 所有的扩展现已使用补丁进行了更新并已提交至扩展商店
    • 我们的 Android 版和 iOS 版移动应用程序未受影响
  • 您的所有 LastPass 浏览器扩展都应更新到1.44 版或更高版本
    • 请点击“LastPass 扩展图标 > 更多选项 > 关于 LastPass”查看您使用的版本号
    • 对大多数用户来说,这一更新将会自动完成,最新版本可随时从 https://www.lastpass.com/ 下载
    • 下载更新版本时无需先行卸载

事后分析

LastPass 浏览器扩展中的这个客户端侧漏洞是由 LastPass 在“孤立世界”的运行方式造成的。如报告中所述,“孤立世界是指与其他世界共享相同的 DOM(文档对象模型)但不共享变量和函数等内容的 JavaScript 执行环境。如果没有孤立世界,无权限页面可能会干扰具有更高权限的脚本,肆意妄为。”如果用户运行的是二进制版本的扩展(不到 LastPass 用户的 10%),则扩展可能会被篡改,从而允许在扩展中远程执行代码 (RCE)。

 “孤立世界”和受信任

LastPass 主要以内容脚本运行。内容脚本是一些 JavaScript 片段,我们把它们注入到第三方网站,用以获取登录信息,执行自动填充。这些脚本是让 LastPass 发挥作用的主要工具。反过来,内容脚本也与扩展的其余部分通信,以处理复杂的工作:解密保存的网站、更新库等等。扩展的其余部分完全不向第三方开放,也不应影响到内容脚本。

内容脚本通常通过“孤立世界”这一概念与网站的其余部分分离开来。在孤立世界里,我们的内容脚本可以读取第三方的 DOM 内容,但无法读取任何内部的 JavaScript 函数或变量。反之亦然:第三方网站无法调用我们内容脚本中的任何函数,也无法我们内容脚本中的访问任何变量。这种分离应该保护两者的安全,免受外部篡改。

在某些情况下,变量会影响内容脚本的逻辑。因此,很难使用该方法将任意值注入到 JavaScript。但报告显示,通过一种特别聪明的方式便可注入任意字符串,而任何一个字符串都足以骗过扩展,令其以为它是在 lastpass.com 上执行工作。这样,攻击者便能够篡改 LastPass 扩展,让其透露相应用户存储的资料,并且能够发布针对二进制版本的任意可执行文件。

我们的假设是我们能够信任运行内容脚本的全局范围,但事实证明并非如此。因此,我们的 JavaScript 中存在许多可能允许外部提供的全局变量覆盖默认值的地方。

解决问题

在收到完整报告之后,我们的跨职能响应团队立即展开了调查并验证了 Tavis 报告的问题。很明显,需要对我们的浏览器扩展做出重大改变,才能解决问题。这不是一个简单的补丁能够解决的,而是需要一个全面的解决方案。而有了全面彻底的解决方案后,所有受影响的扩展都需要应用这些改变,并进行测试。

简言之:全面解决报告的问题需要展开大量的工作,我们的团队日以继夜,在短时间内便完成了修复。

为了解决问题,我们处理了变量处理,并在内容脚本的外部范围内添加了代理对象,以充当“沙箱”,防止在内容脚本内读取外部提供的窗口属性。为进一步减少远程代码执行,我们对扩展可发布的附件类型进行了适当的限制,并且也限制了可用扩展 API。

我们直接与 Google Project Zero 展开合作,验证我们的修复是否全面。一旦确认修复可用于所有受影响的扩展,我们便能够提交给所有商店进行审查,并快速发布给用户。对于 Apple、Google、Microsoft、Mozilla、Opera、Yandex 及其他快速跟踪我们的扩展审查和发布的合作伙伴,我们特此表示感谢。

展望未来

我们强烈建议其他扩展开发人员查看其代码中是否存在此模式,确保所用代码不易遭受攻击。

我们的业务是密码管理;安全问题永远是我们的重中之重。我们十分感谢安全研究人员,他们对我们产品提出质疑并与我们的团队携手合作,帮助我们确保向客户提供安全服务。身为市场领军企业,我们凭借经过最佳测试的 LastPass 脱颖而出,而我们的软件和用户也会受益良多。

为了保持最高安全性级别,我们将坚持与白帽研究人员合作,并为参与我们捉虫计划 (https://bugcrowd.com/lastpass) 的人员提供奖励。更多更新,敬请期待。

此致

LastPass 团队

____________________________________________________________________________________________________________________________

2017 年 3 月 27 日(晚上 7:10)

上周末,Google 安全研究员 Tavis Ormandy 报告了 LastPass 浏览器扩展中存在的一个新客户端侧漏洞。目前,我们正在积极修复这一漏洞。此次攻击十分独特且非常复杂。为了避免透露某些信息给不够成熟并存在不法企图的相关方,我们不想披露有关该漏洞或我们的修复方案的任何具体信息。但在修复工作完成之后,您会收到一份更为详细的事后分析报告。

同时,我们也想对 Tavis 等人表示感谢,他们的工作在帮助我们提升 LastPass 网络安全性的方面发挥了重要的作用,而且他们还与我们的团队合作,让 LastPass 继续成为市场上最安全的密码管理器。此外,我们还希望为用户提供一些用户自己可以采取的措施,进一步帮助用户保护自己,免受这类客户端侧问题的影响。

  1. 使用 LastPass 库作为发布平台 – 直接通过 LastPass 库发布网站。这是漏洞得到修复之前访问凭证和网站的最安全方式。
  2. 在提供双因素验证的所有服务中执行双因素验证 – 在可能的情况下,尽量对您的帐户使用双因素验证;出于加强安全性的考量,目前许多网站都已开始提供双因素验证选项。
  3. 谨防网络钓鱼攻击 – 随时保持警惕,避免遭受网络钓鱼。绝不点击您不认识之人发来的链接,以及看似不合乎您信任的联系人和公司的链接。不妨看看我们的网络钓鱼介绍

问题解决后,我们将会提供有关补丁的更多更新。