别了,系统漏洞

时间:2022-10-19 10:06:03

别了,系统漏洞

去年年底,微软的研究部门对外展示了新的操作系统Verve,该系统最吸引人的地方就是它运行速度极快,而且没有任何安全漏洞。

众所周知,每个月的第二个星期二,微软都会对外最新的系统安全漏洞补丁。然而,就像一个病人若不是因为有明显的病征就不会主动去医院检查一样,原则上,如果不是因为有新的攻击方式出现,微软就不会推出相应的Windows安全补丁,所以Windows系统的安全隐患总是被动修补的,无法一次性清除。其中,在针对Windows系统的攻击中,有大约90%的恶意代码通过缓冲区溢出的方式入侵操作系统。

缓冲区溢出是指入侵者破坏内存中预留的区域,从而非法“操纵”Windows系统本身或者运行在系统中的应用程序以及其他在内存区域中连接的设备。每年,微软都需要为Windows系统提供超过100个补丁来修复由此带来的系统安全漏洞。但是,在微软研究院研发的新操作系统Verve中,安全漏洞数量已经降到了0,它是如何实现的呢?

借编程语言突围

Windows操作系统之所以容易受到恶意软件的攻击,源头在于它使用的编程语言。Windows、Linux和Mac OS X都使用“C语言”来构建它们的关键功能,但是C语言从设计之初就无法保证安全性,因为C语言源代码在处理器上运行之前,必须首先被编译器“翻译”为机器语言(汇编语言),同时还需要链接库文件将代码与系统库文件关联起来。在这些步骤中,只要编译器、链接库文件出现了差错,或者系统库文件被篡改,安全漏洞就难以避免。更重要的是,C语言代码本身并不足以完成所有的系统核心功能,为保证操作系统的整体性能表现,部分操作系统核心功能必须直接通过汇编语言编程来实现。然而,不管是C语言还是经典的汇编语言都没有完整的“类”概念,无法检查代码的安全性。

简单举例来说,如果变量被指定了整数类型,那么这个变量就被指定了类型,该变量就无法存储字符和浮点数。如果没有赋予变量类型,攻击者就可以给变量赋予一个非常大的浮点数值,从而造成内存的缓冲区溢出。如果一个编程语言在编译源代码的过程中会检查数据的类型,那么我们就说该语言是“类型安全”的。但是这样做的副作用就是额外的检查势必会影响代码执行效率。

可以自检的操作系统

在新的操作系统Verve中,微软研究员将类型安全检查引入了汇编语言程序,确保操作系统最重要的部分使用类型安全的机器语言编写。类型安全的汇编语言虽然并非微软的新发明,但是它在Verve操作系统上的应用是该语言首次运用于大型的操作系统平台。而且,在Verve系统中,代码被执行之前会发送给一个核查器,该检查器会验证代码并没有访问不该访问的内存位置,确保运行后不会产生错误。这样的话,无论入侵者想对系统进行怎样的非法操纵,都不可能在Verve系统下制造缓冲区溢出。

从系统架构上看,Verve与Windows系统也不相同。Verve操作系统由内核(nucleus)、核心(kernel)和应用程序组成,通过系统内核完成与硬件的连接。与Windows系统不同的是,Verve系统内核会检查提供硬件设备接口的硬件抽象层(Hardware Abstraction Layer,HAL)代码是否有错误。另外,系统内核的其他任务包括控制数据的输入输出,进行异常、错误的识别与处理。值得一提的是,Verve增加了垃圾回收(一种即时释放不再需要的动态内存的管理机制)的功能,可以确保应用程序不浪费太多的内存,同时减轻了程序员的负担,降低其犯错误的机率。

运行代码安全的软件

操纵系统的核心(不同于上面提到的内核)主要做为应用程序开启新的线程和进程的接口使用,而且Verve系统的核心和应用程序也通过类型安全的汇编语言进行编译,因此不仅系统核心运行快速安全,而且应用程序也可以安全稳定地运行。从编程的角度看,Verve系统的开发者这样解释内核与核心的区别:在核心中,所有的功能都是通过安全的C#语言编写的;而在内核中,开发者需要亲自编写类型安全的汇编语言代码,这是一项极其繁杂和耗时的工作。

目前,Verve系统上可以运行的应用程序还非常有限,而且其中大部分都是硬件测试、评分软件。另外,Verve系统也无法通过TCP协议进行互联网接入,没有相应的浏览器程序,并且仅支持在单个处理器核心上运行。但是,喜欢折腾操作系统的IT狂人仍然可以自行测试这个系统,在微软的开源平台Codeplex()上可以免费下载到Verve系统的源代码,只需要将源代码进行编译就可以了。

Verve系统的诸多特性是否会在Windows 8或者Windows 9中得到体现,目前还不得而知。但是,做为普通用户,我们非常期待Verve可以早日运用于新版本的Windows系统。到时候,微软就可以取消每月的漏洞补丁,我们也不用在每个月的第二个星期二都被“打扰”一次了。

目前的软件:安全与速度不可兼得

一些计算机编程语言被认为是类型安全的,因为程序员可以指定运算过程中值的类型。运行代码的时候会进行类型检查,但是额外的检查就意味着对性能的消耗――唯一的例外就是使用类型安全的汇编程序语言。

类型安全的新操作系统Verve

在Verve系统中,内核控制硬件的连接,类型安全的汇编语言代码使系统运行不仅快速,而且不容易崩溃。不安全的外部应用程序需要被编译为类型安全的汇编语言代码,才可以在Verve中运行。

上一篇:运动机器人 下一篇:关于社交网站你不知道的10件事