安全研究人员发现,大多数USB设备都存在一个根本的安全漏洞,这个漏洞可被利用来感染计算机,而且很难被阻止或检测。
位于柏林的安全研究实验室创始人兼首席科学家Karsten Nohl表示,大多数USB驱动器和市场上出售的其他USB设备都不能保护其固件—其内部微控制器上运行的软件。
Nohl表示,这意味着恶意软件程序可以通过使用秘密的SCSI(小型计算机系统接口)命令来替代USB设备上的固件,让它冒充其它类型的设备,例如键盘。
研究人员称,然后这个假冒的键盘可以被用来模拟按键,并发送命令来下载和执行恶意程序。该恶意软件可以重新编程其他插入到受感染计算机的USB驱动器,基本上让它们变成自我复制的病毒。
来自安全研究实验室的研究人员已经开发出几个概念证明型攻击,他们计划在下周举行的黑帽安全大会上展示。
其中一个攻击是一个U盘作为三个独立的设备—两个驱动器和一个键盘。当该设备第一次插入到计算机,并被操作系统检测到时,它作为一个常规存储设备。然而,当计算机重启时,该设备会检测到它正在与BIOS通话,它会切换到隐藏的存储设备,并模拟键盘。
作为一个键盘,该设备可以发送必要的按键来调出启动菜单,并从隐藏的驱动器启动最小的Linux系统。这个linux系统随后会感染计算机硬盘驱动器的引导程序,就像是一个引导型病毒。该安全研究实验室开发的另一个概念证明型攻击涉及重新编程USB驱动来作为快速千兆网卡。
Nohl表示,操作系统更喜欢选择有线网络控制器,而不是无线控制器,更喜欢千兆以太网控制器,而不是更慢的控制器。这意味着操作系统将会使用新的伪造千兆以太网作为默认网卡。
USB设备还会模拟DHCP(动态主机配置协议)服务器,以自动分配DNS(域名系统)服务器到假冒服务器,但并不是网关地址。在这种情况下,该操作系统会继续使用真正网卡指定的网关,而不是来自假冒控制器的DNS服务器,这样互联网连接将不会受到影响。通过控制DNS服务器—将域名转换为IP(互联网协议)地址,攻击者可以劫持互联网流量。
为了证明这种攻击不仅能够通过USB驱动器实现,研究人员还将使用Android手机连接到电脑来模拟流氓网卡。
任何USB连接都可能变成恶意,如果你让别人连接USB驱动器或手机到你的电脑,这基本上意味着你授权他们来在计算机输入命令。
安全研究实验室展示的攻击证明了我们很难同时确保USB标准的通用性和安全性。USB最大的特点是即插即放功能,而这个功能也是其最大的弱点。
不幸的是,对于这个问题并没有简单的解决办法。安全研究实验室的研究人员已经确定了几种方法来解决这个问题,但没有办法能够完全或及时解决问题。
其中一种解决办法是,在USB规范中规定,在添加新的USB设备到计算机时,要求使用安全的配对过程,类似于蓝牙设备使用的程序。然而,即使USB规范被改变(+微信关注网络世界),我们仍然需要几年才能全面部署新标准,以及用新设备取代旧设备。
操作系统还可以要求用户确认添加新USB设备到其计算机,然后记住授权设备,一种USB防火墙。然而,这可能不可行,因为很多USB设备使用一串零作为其序列号,操作系统没办法区分USB设备。此外,这并不能解决USB从操作系统外部感染启动区域的问题。
解决这个问题的一个明显的位置是在USB微控制器本身,要求固件升级进行数字签名,或者部署某种形式的硬件锁定机制,来防止设备离开工厂后被改写固件。Nohl表示他和他的团队并没有在他们测试的USB设备中看到这种保护。
即使制造商开始部署这种保护,我们需要想办法来区分新的USB设备和旧的不安全的设备,让用户可以明确哪些设备正在连接到他们的计算机。
最后,更短期的解决方案是,让用户开始了解USB插入到计算机的风险,并提高警惕。如果用户想要与他人交换文件,与USB驱动相比,SD(安全数字)内存卡是更好的选择。