内容提示:在微软Windows的带领下,操作系统供应商和一些软件供应商正在努力让其产品更安全,并为应用程序开发人员提供工具和最佳做法以提高安全性。如果每个人都使用最新版本的软件并遵循软件开发的准则,那么操作系统将非常安全,然而,事情永远没有那么简单。
互联网带来源源不断的软件安全问题,浏览器和其他面向互联网软件的保护已经成为安全开发人员最重要的工作,保护这些程序的技术也将应用到其他应用程序以及操作系统本身。
最新安全研究发现DEP(数据执行防御)、ASLR(地址空间布局随机化)和其他系统保护技术存在问题,但是开发人员知道,它们并不是不可逾越的障碍,它们是能够阻止攻击的障碍,攻击者越来越难以攻破这些障碍。部署的障碍越多,攻击者就越难发动攻击,这也就是纵深防御。
操作系统改进
操作系统开发人员还将进行其他系统性的改进。沙盒技术在管理环境(如Java)的运用已有很长时间,很多人认为Java以及这样的管理环境将是操作系统的未来发展方向,然而Java和.NET的安全性并没有特别突出,尽管他们的设计宗旨是以安全为主导。
管理虚拟环境主要通过管理应用程序内存和保护内存损坏错误来提高安全性,而对应的代价就是对系统性能的影响。问题在于,环境本身也存在漏洞,有些漏洞甚至多年来一直存在。另外,除了内存错误外,还有很多其他类型的错误,因此在管理环境中编写的应用程序并不是绝对安全的。
尽管如此,内存损坏错误是很重要的,发展托管代码的趋势也是提高安全性的必经之路。企业开发从Java转移到ASP.NET环境是有原因的,编写传统代码且避免安全漏洞非常困难,需要专门的技术知识,而编写托管代码至少可以避免简单的错误。
Chromium环境形成了Chrome浏览器和操作系统的基础,谷歌还采取了沙盒来进一步保护在浏览器运行的本机代码,虽然这样并不能避免Chrome浏览器中的漏洞以及攻击,但是这样能够通过阻止攻击越过浏览器环境的有限功能而有效限制这些攻击的影响。事实上,整个Chromium沙盒是在用户模式运行的,攻击者的攻击范围不会超出用户运行浏览器的功能。
这就如同微软IE7和IE8的保护模式,保护模式运行浏览器只有有限的用户功能,而不会写入临时文件夹外的任何地方。
然而,Windows下的Chromium和保护模式都依赖于windows特定功能,例如完整性水平、工作对象和限制令牌,而这些功能在其他平台上不一定可用。
沙盒的发展可能是最大功能性与平台灵活性之间的最新篇章,但这完全取决于你如何编写程序,如果你编写的程序在Chromiun沙盒中运行且遵守其规则,你应该确保一些灵活性以及Chromiun提供的其他沙盒功能,不管是在windows、Mac还是Linux系统中。
其他平台
其他平台上有哪些改进功能呢?Linux有一个沙盒功能称为SECCOMP,原本是为计算密集计算环境所设计的。SECCOMP具有很强的限制性:在里面运行的线程只能访问非常小的系统调用: read()、write()、exit()和 sigreturn(),任何其他调用都将终止该线程。这样真的非常安全,但在实际操作中并不实用。
谷歌试图将其Chromium沙盒架构植入Linux中,但这并不像植入windows那么简单,对于Mac系统也是同样的道理。这种移植将需要更细致和错综复杂的编程。