Schneier的安全忠告
上QQ阅读APP看书,第一时间看更新

嵌入式系统的安全风险

最初发表于Wired.com(2014年1月6日)

就嵌入式系统的安全性而言,目前形势非常严峻。嵌入式系统指的是在硬件设备中嵌入的特定计算系统,例如物联网设备。这些嵌入式计算机有很多漏洞,目前还没有修补它们的好方法。

这与20世纪90年代中期的情况没什么不同,当时个人计算机的安全性已达到危险级别。软件和操作系统中漏洞很多,而且没有很好的方法来修补它们。软件公司试图将这些漏洞信息进行保密,而不是迅速发布安全更新补丁。而且在发布更新时,也很难让用户安装它们。在过去的二十年中,由于全面披露(发布漏洞以迫使公司更快地发布补丁程序)和自动更新(自动在用户计算机上安装更新的过程)的结合,这种情况发生了变化。虽然结果并不完美,但比以往任何时候都要好。

但是这一次,问题变得更加严重了,因为情况有所不同:这些设备都已连接到互联网。我们的路由器和调制解调器中的计算机比20世纪90年代中期的PC强大得多,并且物联网将使计算机成为各种消费类设备。与PC和软件行业相比,生产这些设备的行业甚至没有能力解决此问题。

如果不能尽快解决这个问题,我们将面临安全灾难,因为黑客发现攻击路由器比攻击计算机容易得多。在最近的Def Con上,一位研究人员研究了三十个家用路由器,并且成功入侵了其中的一半,包括一些非常受欢迎的和常见品牌的产品。

要理解该问题,你需要了解嵌入式系统市场。

通常,这些系统由Broadcom、Qualcomm和Marvell等公司生产的专用计算机芯片提供支持。这些芯片价格便宜,利润微薄。除了价格之外,区别制造商的方式还包括查看芯片特性和带宽。制造商通常将Linux操作系统的版本以及一系列其他开源和专有组件及驱动程序放到芯片上。他们在发货前进行了尽可能少的工程设计,并且在非必要情况下几乎没有动力去更新软件。

系统制造商往往也是原始设备制造商(ODM),一般是别的公司的代工厂,它们通常不会在成品上标明自己的品牌名称,并且往往根据价格和需求来选择芯片,进而生产路由器或者服务器等设备。它们也不会做很多的设计研发。最终的销售公司可能会在设备上添加一个用户界面或者一些新功能,并确保功能一切正常,这样就万事大吉了。

此过程的问题在于,没有一个实体有动机和专业知识来进行专业的安全类研发,甚至没有能力在软件出厂后对其进行修补。芯片制造商正忙于交付该芯片的下一个版本,而ODM则正忙于升级其产品以与下一个芯片配套使用。维护较旧的芯片和产品并不是芯片制造商的首要任务。

而且尽管设备是新的,但是软件却是旧的。例如,我们从一项针对普通家用路由器的调查发现,这些路由器上使用的是四至五年前的老旧组件,比如路由器的Linux操作系统是四年前的版本,而Samba软件至少是六年前的版本。这些老旧软件可能已经更新了所有安全补丁,但也很可能没有。没有人愿意做这份工作。一些组件太旧了,不再需要打补丁。但是这些补丁特别重要,因为随着系统的老化,发现安全漏洞将“更容易”。

更糟的是,通常无法修补软件或将组件升级到最新版本,因为完整的源代码往往是不能直接使用的。是的,它们是有Linux和任何其他开源组件的源代码,但是许多设备驱动程序和其他组件只有可执行文件,根本没有源代码。这是问题中最难解决的部分:没有人可以修补仅仅以二进制形式显示的代码。

即使可能有补丁,它们也很少得以应用。用户通常必须手动下载并安装相关补丁。但是,由于用户从未收到有关安全更新的提示,并且没有手动管理这些设备的专业知识,因此用户不会主动更新系统。有时网络服务提供商(ISP)可以远程修补路由器和调制解调器,但这很少见。

其结果是在过去的五到十年中,有数以亿计的未修补和不安全的设备一直在互联网上运行着。

黑客已经开始注意到这些设备了。恶意软件DNS Changer攻击了家用路由器以及计算机。在巴西,黑客为了敲诈勒索,破坏了450万台DSL路由器。上个月,赛门铁克(Symantec)公司报告了一种针对路由器、摄像机和其他嵌入式设备的Linux蠕虫病毒。

这些仅仅是一个开始。脚本小子仅仅需要一些黑客工具就可以成功入侵并控制这些设备。

物联网的普及会让这个问题变得更突出,因为互联网——以及我们的家庭和自身——会充斥着各种各样的新的嵌入式设备,而针对这些设备的升级维护同样困难,甚至根本无法修补它们的漏洞。但是路由器和调制解调器的问题比较特殊,因为它们处在用户和互联网之间,所以关闭这些设备不是明智的选择,并且它们比其他嵌入式设备的功能更强大、更通用,这些设备7×24小时地在家里运行,自然而然地会带来很多问题。

我们之前讨论过PC的安全问题并且现在基本上解决了这个问题。但是,通过披露漏洞来迫使供应商解决问题的方法不再适用于嵌入式系统。上次的问题主要出在计算机上,这些计算机大部分没有联网并且病毒传播速度也非常缓慢。今天的情况不同了:设备数量快速增长,漏洞也越来越多,病毒在互联网上传播得也越来越快,相比之下只有很少的安全技术专家为这些设备厂商修复漏洞来保护用户安全,再加上部分安全漏洞根本无法修补,所有这些都使物联网设备的安全问题愈发严重。

设备集成的功能越来越多,但是却缺乏安全更新,再加上不太好的市场动态对更新带来阻碍,导致我们目前正面临着一场灾难。灾难降临只是时间问题。

我们必须解决这个问题。我们不得不对嵌入式系统供应商施加压力,要求它们更好地设计自己的系统。我们需要使用开源软件而不是二进制代码来构建这些嵌入式系统!这样只要设备还在使用,第三方供应商和ISP就可以及时提供安全工具和软件更新。我们需要自动更新机制来对这些嵌入式系统进行升级更新。

经济学规律表明,大型ISP是推动变革的动力。不管是否是ISP的责任,网络崩溃之后ISP都应该承担责任——必须向用户发送新的硬件设备,因为这是更新路由器或调制解调器的唯一方法。这些新的设备会浪费ISP从这个客户这里赚取的一年的利润。如果ISP不想办法解决这个问题,那么情况只会变得更糟,而且代价也更高。设计更好的嵌入式系统的开销比支付由此产生的安全灾难的损失要便宜得多。