即便是最先进的汽车和其他车辆都隐藏着一大批电子设备,其中有成百上千个处理器和数百万行代码,但是虽然它们都是被单独设计的,却必须在发动机罩下一起工作数年。
据外媒报道,美国密歇根大学(University of Michigan)的研究人员Baris Kasikci表示,要让这么一堆系统保持更新,同时又没有安全漏洞是极其困难的。而安全漏洞威胁的不只是车辆,对宇宙飞船、无人机和其他正在得到广泛应用的交通工具构成了更大的威胁。
计算机科学与工程系教授Kasikci表示:“这有点混乱。一般来说,可以在源代码中修复错误,重建软件并重新部署就可以。但是此类移动交通工具的环境对此种模式非常不利,因为会有很多不同的软件以及不同种类的计算机。”
Kasikci正在领导一个研究团队,并研究了一个名为Ironpatch的系统以解决上述问题。该项目为期4年,旨在研发一个独立的补丁系统,以解决汽车和大型交通工具(如卡车和航天器)日益严重的安全漏洞问题。
Ironpatch与计算机系统上常见的软件补丁完全不同,后者通过生成一个计算机系统的副本,然后对其源代码进行更改而生成。接下来,需要对补丁进行测试,以确保其不会干扰软件的功能。之后,再采用一种称为编译器的工具重建程序,将源代码编译成计算机可以理解的1和0。最后,将其加载到计算机上。
这个过程在计算机上运行得很好,但是对于车辆系统而言就几乎没用了。为进行测试,生成系统的准确副本是不可能的,而编辑和重新编译可能会以无法预测到的方式搅乱复杂的代码网络。
Kasikci表示:“会有成百上千个处理器运行着不同类型的软件,不同版本的软件,由不同的人以不同的语言编写。随着时间的推移,这个系统可能会发生变化,如航天器增加了一个新组件,以监测一个行星上的地面事件等。以正确的方式复制所有的系统确实是一项无法完成的任务。”
Ironpatch则采用了不同的方法,绕过了源代码,直接对运行软件的二进制核心进行称为micropatches(微补丁)的微小修改,消除了重新编译软件的需要。此外,由于所做出的更改非常微小,因此也可以在不引起其他问题的情况将问题修复。
Ironpatch是一个独立的系统,一旦识别到漏洞,该系统会自动生成、验证并应用一个微补丁以消除漏洞,这也消除了向远程软件上传软件补丁的需求。当该系统位于数百万英里外的航天器上时,这就是一个特别方便的功能。
研究人员表示:“我们经常假设软件开发人员能够访问源代码和复杂的车辆模拟环境。不过,有些情况会让这种想法变得不具可行性。我们看到越来越多的人需要一种技术,可以在没有完整模拟堆栈或原始源代码的情况下,为易受攻击的软件部署补丁。”
为了避免创建一个车辆系统副本用于测试,Ironpatch将把原始软件和补丁版本转换成两个复杂的数学方程。然后,Ironpatch会解决这两个方程,从数学上证明,除了想要做出的修改,这两个程序的功能完全相同。
研究人员表示:“由于我们没有系统副本来测试补丁,因此需要用另一种方式证明这个微补丁不会改变系统的基本功能。所以,我们采用数学证明法,来分析二进制代码,结果显示打补丁的版本与原始版本的功能相同。”
该项目的目标是让成熟的系统能够在发现安全漏洞时自动生成和部署补丁,从而使即使最复杂的系统都不会发生故障。虽然该系统的首个版本是为卡车和航天器设计的,但研究人员预测,类似的系统最终可应用于更广泛使用的系统,如汽车系统。未来,技术人员还可以在不访问源代码的情况下诊断和修复计算机软件。
研究人员表示:“该项研究造成的更广泛的影响是可以直接在二进制代码中给软件打补丁,而不需要进行编译等中间步骤,也不需要访问源代码。因此,该系统可以用于提高汽车的安全性,甚至可以用于智能家居组件或传统系统等其他类型的计算机,可能还会进行审核工作,以确保软件的安全,而且可以按照软件的要求去完成工作。”