请关闭浏览器的密码自动填充功能

前几天看到一片文章《XSS Hack:获取浏览器记住的明文密码》(抱歉因安全考虑无法提供链接,请感兴趣的朋友百度之),讲的是目前还在萌芽中的一种跨站攻击方式——密码填充劫持。花了点时间研究了一下,觉得这种方法是几乎所有人都很难防范的。我在《网络安全的基石 – 密码安全》一文中曾提到了三种密码攻击的方法,而这次出现的是一种全新的攻击方法,十分隐蔽,且完全不需要互动。

跨站脚本攻击(Cross-Site Scripting),简称XSS,是近几年来十分流行的攻击手段,对社交网站等用户参与的网站尤为有效。我还记得前几年人人网就出过一次攻击,那时所有受影响的人都会自动转发一个帖子,而看到帖子的好友会继续转发,病毒式的扩散开来。

XSS的原理是,利用目标网站(A)的程序设计漏洞,通过发帖留言等正常手段植入代码,调用存放于攻击网站(B)的脚本文件,从而控制A站点的页面行为。XSS的花样繁多,且随攻击目的不同常有变化。今天提到的是劫持浏览器的密码自动填充功能,捕获明文密码。

主要步骤如下:

  1. 创建一个表单,包含用户名和密码等区域,所有的参数都等同于A站点正常的登录框
  2. 等待页面加载完毕,这时候浏览器会自动填充用户名和密码
  3. 探测到密码被填充后,读取密码框的内容
  4. 销毁之前创建的表单,毁尸灭迹
  5. 对密码进行操作,如传输到B站点,盗号完成

以上步骤只需要0.01秒就可以完成,而用户在这段时间内根本看不到多出来的登录框,没有任何互动操作,就成为了受害者。

实测发现,受影响的浏览器非常多。桌面系统的Chrome, Firefox, Safari,手机平板上的大部分浏览器,只要支持密码自动填充,都无一例外。说实话,浏览器的安全防范几乎为0。除此之外,浏览器的密码插件,如Lastpass等,都会受影响。有意思的是,IE自带的密码填充不受影响。

如果你想体验一下这种攻击方式,我制作了一个演示网页,点此进入。注意,请不要输入自己使用的真实密码。随便输入一个就可以了。所有输入的信息不会提交到任何地方。

下面说说防范:

一句话:立刻关闭密码自动填充功能。不管是浏览器自带的功能还是密码管理插件,都要关闭自动填充。另外,也需要遵循我之前提到的密码管理原则,毕竟密码安全是网络时代最基础的安全保护,多花点时间是值得的。