密码经理

2021-06-06 06:51:36

我花了很多时间试图了解流行密码经理的攻击面。我想我花了更多时间分析它们,而不是几乎是别人,我认为这有资格有意见!

首先,让我们在路上得到一些东西。出于某种原因,很少有科目可以比密码更快地加热。也许政治和宗教,但这是关于它的。如果你不喜欢我的意见,没关系。

其次,每个人都需要使用唯一的密码。您不必使用密码管理器来执行此操作,无论系统为何工作都很好。如果您想在桌面抽屉中使用笔记本,这完全可以接受。

概念上,什么可能比密码经理更简单?这只是一个琐碎的钥匙价值商店。事实上,最简单的实现通常很大。简单安全的密码经理的良好示例是KeepAss和Keepassx,如果您是书呆子,甚至通过。

当您希望与其他应用程序集成时,或者当您希望由不受信任的中介同步时,事项开始出错。有安全的方法来实现这一目标,但是重复订阅费用的诱惑吸引了企业与这种空间,具有不同程度的能力。我通常对这些在线订阅密码管理者持怀疑态度,这将是本文其余部分的重点。

我经常说“使用密码管理器”是错误的建议。那是因为难以讲述能力实施和天真的差异。科技出版社可以审查可用性和船上的体验,但无法逼真地评估任何安全声明,那么您如何提出用户介绍差异?出于这个原因,我认为“使用密码经理”是如此模糊,这是危险的。

一个良好的类比正在告诉某人头痛,以弹出他们在药物内阁中找到的任何药丸。也许他们会幸运,找到一个阿司匹林,或者也许他们不会,你会呼吁毒毒控制。

有关此主题的建议需要具体。更好地建议设计精心设计,而不是一般产品类别。这个职位令人惊讶地有争议,很多人认为任何密码经理都是可以接受的,并且我通过实际评估供应商索赔来播种恐惧。我仍然毫不符合。

我的主要感兴趣领域是远程攻击者如何与密码管理器进行交互。

我对测试耐用加密的斑点是如何离线开裂的东西并不感兴趣。这可能对某些人有效,但在大多数情况下,如果攻击者处于访问或篡改加密状态的位置,则无论您是否使用密码管理器都遇到了麻烦。

我遇到了两个常见问题,首先是可信用户界面元素被注入潜在的敌对网站。第二个是,不同的组件IPC过度使用Web可访问的通道(例如WebSockets,PostMessage等)而没有足够的相互认证。

大多数在线密码管理器使用内容脚本,插入您访问的每个网站的JavaScript。写内容脚本真的很容易,但真的很难让他们篡改篡改。这是一个问题,因为他们将被托管在敌对的环境中。

这个微妙的方式的一个很好的例子,这可能出错是这样的错误。孤立的世界互动如何复杂,但密码经理通过模糊用户界面和内容之间的区分使得更糟糕。

有两个主要组件构成了浏览器界面,Chrome(困惑地,术语与Google Chrome无关)和内容区域。 Chrome包含像地址栏,标签和后退按钮等内容。这些组件可以信任,网站无法干扰它们。相反,内容区域内的任何内容都可以由网站控制,因此它无法受到信任。

大多数密码管理器通过在内容区域中绘制UI来模糊此区分。没有办法安全地做到这一点,使演示表明为什么这是微不足道的。

好的,但它与不同的特权具有不同的内容区域不同的部分并不罕见,这基本上是如何运作的。这并不能使它安全,您可能熟悉X帧选项,这是一种选择退出框架的网站的方法。大多数安全意识的网站都会做到这一点,因为攻击者太容易欺骗了你以意外的方式与框架交互。

这些有时被称为补救袭击或点击(呻吟,我讨厌这个术语)。对浏览器安全手册中的攻击进行了彻底的分析。

如果纠正攻击足以让每个人都禁用框架,如果软件应任务保护密码也选择退出?这是一个诡计问题,他们不能!

在我写这篇文章中,我碰巧看到一个名为nordpass的新密码管理器的商业广告。让我们用它作为测试箱,看看。所有在线密码管理器都以类似的方式工作,这不是任何一个实现的特定。

注意:我故意尝试避免查找特定的漏洞,以便我不必开始繁琐的正式披露过程。这只是这些设计中固有的弱点的一般例证。

安装扩展后,我立即看到它使用内容脚本将接口元素添加到登录表单。

通常,网站可以与该UI进行交互,并快速测试在此处确认。它看起来我也可以在那些元素中等,这意味着琐碎的补救是可能的。

此问题在线密码管理器中普遍存在,您可以确定您是否与网站或密码管理器进行交互。让我们快速演示。

这是一个快速的例子,你可以自己尝试自己,如果你安装了Nordpass,请原谅我可怕的设计技巧。

我在这些UI元素的工作方式找到了许多真实的,可利用的漏洞。像这样的琐碎,或者这一点。有时互动甚至是必要的。

我们已经建立了在线密码管理器的一个组件必须注入潜在的敌对环境。这些组件如何与其他组件通信?

一个天真的解决方案是只使用XHR或WebSocket到本地的HTTP端点。这听起来对开发人员有吸引力,他们是在网上沟通的本地方式。此解决方案的问题是在您的内容脚本之间区分,以及在同一页面上运行的恶意脚本,而是非常困难。

基本上,我看过的每一个实施都有这个错误,导致危急的游戏漏洞。一些最糟糕的罪犯是这样的错误,这是这样的。

供应商提出了所有类型的贺卡解决方案,通常涉及固有的Rency Background脚本,这些脚本尝试验证标签原点。

我拥有在线密码管理人员的另一个抱怨是它们呈现浏览器沙箱的效果较低。现代浏览器使用沙箱架构隔离可能出错的组件。

问题是,在线密码管理器将特权组件有效地将特权组件注入扩展的这些沙箱进程中。沙箱的目的是彼此隔离潜在受损的组成部分,但如果你在沙箱里面的所有最有价值的秘密 - 那么那点是什么?

我担心人们不明白他们在这里制作的权衡。

尽管您的供应商表示,如果他们的网络受到损害,攻击者可以读取您的密码。以下是来自密码管理器供应商的一些选定的营销索赔:

“除了你,没有人,甚至没有[美国],可以访问你的密码。”

“您的数据是以只有您可以查看和管理的方式保护。 [我们]员工不能“

这些索赔都是废话。控制供应商网络中的攻击者(或恶意内幕)可以将送达的代码更改为浏览器,并且该代码可以显然可以访问您的密码。这并不差,改变网站的内容(即污秽)是如此普遍,即它实际上是一项运动。

现实是,您必须相信您的供应商维护其基础架构并保持安全。加密的存在(“银行成绩”或不)不会改变这一点。

也许你认为这不是一个大的交易,你已经在安装软件时已经信任了它们。罚款,但这些索赔是所有营销的前方和中心,所以供应商必须相信他们的客户关心它。我认为这些索赔是弯曲真相,以缓解合法的担忧。

很容易在营销绒毛中戳孔,但这里有一些我注意到真正的密码经理供应商的其他一些有趣的人。

许多.NET程序集[...]被混淆,因此即使使用反汇编程序用户也无法查看方法/函数/类的关键区域。好吧,我当然感觉更安全。

如果要使用在线密码管理器,我建议使用已内置浏览器中的那个。它们提供相同的功能,可以避免这些基本问题。

我使用Chrome,但其他主要浏览器也很好。他们可以从网站隔离他们的信任UI,他们不会打破沙箱安全模型,他们有世界级的安全团队,他们不能更容易使用。

毫无疑问,有很多人读到这个不喜欢这个建议的人。 我只能说的是我听到了所有的争论,并通过我的结论代表。