大多数浏览器都提供在许多登录页面上输入密码后保存密码。此类保存的密码存在哪些类型的漏洞。我对稍后访问的网页上的恶意软件可能能够检索密码(或利用它们)的方式感兴趣。这些东西(或其他)是否存在漏洞?:
- 纯html
- javascript
- 闪光
- 爪哇
我说的是普通密码保存,而不是使用其他问题中讨论的主密码之类的(可能)受更多保护的系统。
大多数浏览器都提供在许多登录页面上输入密码后保存密码。此类保存的密码存在哪些类型的漏洞。我对稍后访问的网页上的恶意软件可能能够检索密码(或利用它们)的方式感兴趣。这些东西(或其他)是否存在漏洞?:
我说的是普通密码保存,而不是使用其他问题中讨论的主密码之类的(可能)受更多保护的系统。
在没有保护的情况下(通过非存储的主密码)保存在文件中的密码是一个坏主意,因为某些软件(无论是否是浏览器)中的漏洞可能允许攻击者上传文件。示例(不是唯一的!):CVE-2006-1729,CVE-2011-0167。浏览器配置文件中的文件尤其危险(我现在找不到参考,但记得看到只暴露配置文件目录的错误)。
毕竟,虽然浏览器错误可以让攻击者访问内存中的密码存储,但文件上传错误可能更微妙(CVE-2007-3511:通过转移输入焦点意外上传文件)并且更难在不破坏的情况下修复有用的功能(逻辑错误,不像任意代码执行错误,一旦找到错误,通常很简单)。
假设您说您不使用主密码,因此密码数据库以明文形式存储:这取决于您指的是哪种恶意软件。如果存在 0day 漏洞利用(或者您使用未打补丁的浏览器),它“突破”,嵌入到您提到的任何内容中,有效地导致主机上的任意代码执行,那么该恶意软件将能够恢复整个数据库(但这将是您最不担心的)。
在简单的 javascript 执行(例如通过 xss)的常见情况下,脚本可能能够捕获与该特定页面的表单相关联的密码。同样,如果脚本利用的浏览器中存在未修补的缺陷,例如破坏浏览器的同源策略保护,那么它可能能够从数据库中恢复任何密码。
最后,如果攻击者不能“欺骗浏览器”(如攻击漏洞),他也可能最终尝试“欺骗用户”——想想社会工程——通过使用一些微妙的方式让你发送数据库自己没有注意到它。
我仍然认为值得注意的是其他问题没有:主要漏洞是许多浏览器将密码存储为纯文本或弱模糊。如果是这种情况,那么任何可以暂时访问您计算机的人都可以抓住全部。因此,设置主密码或同等密码很重要。
请注意,某些浏览器甚至没有实现密码加密。
除此之外,如果浏览器或您列出的各种相关查看器软件存在未修补的错误,攻击者自然可能会获得密码以及更广泛的破坏整个系统的机会。保持这些系统的补丁,浏览时要小心!
为了澄清并可能质疑 John 所说的内容 - 我不确定您是否需要打破同源策略才能利用网站中的 xss 漏洞来获取保存的凭据。一些用于解析表单并将它们发送给第三方的 JavaScript 不需要破坏相同的来源。