我刚刚在Banque Postale(法国银行)第一次看到了一种输入密码的新方法。您将获得一个虚拟数字键盘,您只需将鼠标光标悬停在一个数字上 1 秒钟即可输入。
起初,这看起来很不错,您无需记录键盘敲击,也无需单击鼠标。然而,我有一种不可思议的印象,即这个系统可能存在问题。显而易见的是,您只能在密码中输入数字,还有其他吗?
我刚刚在Banque Postale(法国银行)第一次看到了一种输入密码的新方法。您将获得一个虚拟数字键盘,您只需将鼠标光标悬停在一个数字上 1 秒钟即可输入。
起初,这看起来很不错,您无需记录键盘敲击,也无需单击鼠标。然而,我有一种不可思议的印象,即这个系统可能存在问题。显而易见的是,您只能在密码中输入数字,还有其他吗?
这些类型的密码输入系统只有在攻击者不适应的情况下才有用。这是一出多幕的戏剧:
正如你所观察到的,我们目前正处于这一点。你能猜到会发生什么吗?
这是一场军备竞赛。攻击者迫使银行采用更复杂的密码输入方法。银行训练攻击者击败越来越“安全”的密码输入方法。同时,银行试图训练他们的客户处理更复杂的密码输入方法。从长远来看,我敢打赌,攻击者会比客户发展得更快;银行打了一场失败的战斗。
您描述的这种保护机制可能会被IE 鼠标跟踪漏洞利用,这是一个Internet Explorer 漏洞,允许攻击者在屏幕上的任何位置跟踪您的鼠标光标,即使浏览器没有被积极使用,对我来说似乎与涉及键盘输入的普通解决方案相比,这种密码保护更容易受到破坏,因为它甚至不需要攻击者侵入最终用户的机器并安装键盘记录器。
开发者只需要隐藏一个 IE 窗口(很简单,比如说弹出窗口会让大多数用户不知道它),或者显示正在运行脚本记录鼠标移动的第三方广告。不想透露太多关于如何使这些漏洞发挥作用的信息(出于明显的原因),只要说鼠标移动模式可以与您的示例中发布的键盘的使用相匹配就足够了,特别是因为用户首先需要点击一个静态定位的访问按钮和键盘相对于窗口的位置(水平和垂直居中),通过它可以很容易地计算出键盘的绝对位置。
对于大多数用户来说,仅跟踪鼠标移动也可以告诉您何时单击了鼠标按钮。但即使不跟踪鼠标点击,仅记录鼠标移动就足以计算用户是否确实登录了提及的银行帐户,并使用随后的鼠标移动来计算他/她的 PIN 是什么。
简而言之,我的 2 美分:我建议不要使用这种机制,直到所有访问它的用户代理(浏览器)都被认为就其功能而言足够安全。;)
更新:开发人员现在已经更新了键盘显示代码,并且它的布局现在是随机的。单独的键在彼此之间被洗牌,这当然有效地防止了我提到的这个特殊的利用,通过单独使用外部浏览器窗口 JavaScript。
它还远不是一个完美的解决方案,也不安全,甚至远非如此;
密钥是通过外部 CGI 应用程序动态绘制的,并由 URI 参数字符串和存储在 cookie 中的唯一会话密钥标识,但是即使请求字段发生变化,它们也可以通过相同的 URL 地址访问,例如没有引荐来源并直接打开。它们似乎只对会话 cookie 值和用户代理字符串敏感,但我没有检查后者,因为 -
然而这并不重要:
单个恶意浏览器插件可以通过跟踪鼠标移动、鼠标点击和读取使用的字形 URL(或在 POST 响应中附加字形本身)轻松读取用户的输入,并将所有这些信息发送到外部或远程处理器。输入的 PIN 本身也以纯文本形式存储在隐藏的表单字段(方便地命名为password)中,与使用内置密码字段类型相比,通过简单的 JavaScript 调用更容易检索其值。这个事实是隐藏的通过在键盘下方的显示框中显示无意义的项目符号字形从普通用户那里获得。这应该骗谁?我用了不到 5 秒的时间就找到了相关的隐藏字段,我什至不是安全分析师!我需要额外的 15 秒来编写这两行 JavaScript 来读取它并将其发送到远程位置。
因此,我们有它:
大量的工作已经投入到虚假和廉价购买最终用户的虚假安全感上,而与此同时,同样的最终用户却一无所获。两个版本(以前的静态版本和新的随机布局)都有效地防止了简单的键盘记录器仅仅按照他们的名字所暗示的那样 - 记录击键(很好地理解了这个的含义!),但是布局随机化并没有阻止过多的其他 JavaScript /browser 插件漏洞利用。并且在某些条件下恶意软件可以读取用户输入的 PIN(尤其是存储在明文中的 PIN),即使浏览器和操作系统正在尽最大努力防止这种情况发生。当然,某些浏览器比该答案中描述的更容易利用和读取活动内存数据,但我想要一个强有力的理由来反对将明文密码存储在内存中。
结论:
在隐藏的表单字段中以明文形式存储密码/PIN 并使用大量 JavaScript 混淆技巧根本不是任何银行都应该考虑的一种安全机制,而且最终不会欺骗任何人它更安全,除非可能是它应该保护的完全相同。哦,很明显,批准这些更改的人、他们的开发人员以及在上述银行工作的几乎所有其他人也是如此。
亲爱的邮政银行,为了您的客户和您未来的存在,请停止这些蹩脚的重新发明轮子的尝试,并聘请合适的 IT 安全专家!
正如Thomas 所提到的,不同形式的密码输入只会保护您的密码,直到攻击形式演变。
对键盘记录器的更强保护是使用双因素身份验证并在另一个通道上请求不同类型的授权。例如,银行可以向您的手机发送一次性代码,并且只有在您提供常规密码和一次性代码时才允许您登录。每次您登录时,他们都会向您发送一个新代码,以确保登录的人确实拥有您的手机。
保护您的计算机免受键盘记录程序和其他危害是很困难的。双重身份验证可确保即使您的密钥被记录下来,一旦您注销,攻击者也不会破坏您的帐户。他们只能在您的会话处于活动状态时执行攻击,这是一个小得多的窗口。只知道您的密码对攻击者没有好处,因为他们仍然需要将密码发送到您的手机。
使用双因素身份验证意味着随着密码攻击类型的发展,您的帐户仍然是安全的,并且只有您可以登录(当然,假设您可以控制您的手机并在手机丢失或被盗时通知您的银行!) .