在chrome.storage.local中存储客户端生成的密码的安全隐患

时间:2015-02-16 14:45:48

标签: javascript google-chrome-extension

我已阅读文档here,该文档警告在chrome.storage.local中存储安全信息的危险,因为它未加密。

对于我的application,扩展程序会在本地使用随扩展程序打包的Javascript库为用户生成密码。然后,该密码存储在chrome.storage.local中,并且永远不会通过扩展名传递给远程服务器。我理解存在安全隐患,因为这是未加密的,应用程序仍处于开发阶段。这篇文章的目的是发现可能的最佳安全方案。

具体问题是......

  • 可以使用什么方法(攻击向量)来访问扩展本身之外的chrome.storage.local?

  • 此外,客户端运行扩展程序的风险也会受到影响 通过恶意脚本或本地应用程序,是否存在风险 远程攻击?

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

任何具有物理访问权限的人都可以读取chrome.storage.local的内容,但是根据设计,无法通过其他扩展程序访问您的扩展程序中的数据,或来查找恶意网站直接访问数据。

但这并非不可能 - 可能存在一些允许发生这种情况的zero-day漏洞。

总有一些远程攻击的风险导致设备的控制。一旦发生这种情况,就应用与上述相同的答案,即有控制设备的人可以读取本地存储。

值得注意的是,Chromebook可以更好地防范上述情况,因为底层设备存储实际上可能是加密的,并且用于直接访问该存储的攻击面非常小。但是,其他设备没有这些保护措施。

答案 1 :(得分:1)

chrome.storage.local中存储的数据未以任何方式加密,因此可以作为纯文本读取。

有很多方法可以访问这些数据,无论是通过其他一些“高权限”的chrome扩展程序(比如那些可以访问dev-tools的程序)还是来自任何其他进程(如果他们拥有正确的权限,通过不同操作系统运行在客户端的计算机上,通过直接访问chrome存储此数据的文件。

要回答第二个问题,首先需要了解数据的传输方式以及应用程序的构建方式。如果针对您的应用程序存在针对性攻击,则取决于您的扩展中的后门或任何其他安全漏洞可能导致未经授权访问客户端的扩展。这完全取决于黑客的时间,精力和兴趣 - 为了示例,如果您在此存储中存储敏感的银行访问凭据,那么很可能会显着增加黑客的兴趣,然后,他将花费更多的时间和精力在尽可能多的客户端上尝试访问此存储 此外,如果黑客可以访问客户端的文件,无论您的具体应用程序如何,那么客户端计算机上的所有文件都会受到攻击,包括扩展程序的存储数据。

我强烈建议,不要将任何敏感数据存储在客户端应用程序(扩展名)中,而是将其存储在服务器端,此数据泄露的可能性要低得多。
如果您仍需要在客户端使用此数据,请确保:

  1. 每次扩展程序需要使用时,只传递相关数据。未使用的数据不得转让。
  2. 传递使用可以存储在客户端存储中的密钥加密的数据。密钥应该是每个客户端上随机生成的密钥,以便在一个客户端密钥被泄露后防止大量提取。是的,这仍然是针对您的应用程序的针对性攻击打开的,但是包含了因非目标攻击而导致数据被盗的可能性。
  3. 切勿将此加密或解密数据存储在客户端计算机的任何类型的存储中(包括Cookie,本地存储,会话存储,全局变量等)。
  4. 但是如果您担心数据可能会受到损害,我会建议不要将数据传递给客户端,而是在服务器端做任何您需要做的事情。这可能会迫使您重新设计应用程序,这是大多数情况下的唯一选择。

    祝你好运!