应用程序间的安全隔离问题(2)
推荐 原创
©著作权归作者所有:来自51CTO博客作者wenbomao的原创作品,请联系作者获取转载授权,否则将追究法律责任
上回我在"应用程序间的安全隔离问题(1)"中介绍了硬件虚拟技术的一个特点:由于VMM的不可被旁路的强制性监控性质,不同的客户虚拟机之间具有很强的隔离效果, 跑在不同虚拟机上的用户应用程序是很难做到实现互访而同时又不被VMM所监控到. 那么将不同用户的应用程序部署于不同的虚拟机上,是否应用程序间的严格隔离就得到满足了呢?
如上问题的回答其实是安全操作系统要解决的一个问题. 假定在客户VM中跑的操作系统本身不存在安全漏洞可被利用来攻击用户程序, 那么对如上的问题我们可以给出肯定的回答. 当然这也是一个有点儿奇怪的回答: 如果这样安全的操作系统存在, 用户程序之间的隔离则无须走硬件虚拟化技术的途径. 其实当前利用硬件虚拟化技术来解决操作系统安全问题这样的做法变得越来越热门.这一现象本身恰恰是因为安全操作系统的缺失才使得人们考虑另辟蹊径走虚拟化道路的. 常用的商业操作系统(如Windows, Linux, Unix各种版本, Mac等)可以说没有一个能被认为是安全的操作系统. 如果跑在一个客户VM中的操作系统是这些商业操作系统中的任何一个, 则客户虚拟机之间哪怕是再怎么强的隔离效果都无法在用户程序之间形成有效隔离. 哪怕是在一个VM中只跑一个用户程序也不解决问题! 原因是如此简单: 你无法在用户程序及操作系统之间做隔离! 用户程序需要操作系统对其提供服务.而其中最起码的一项服务就是内存管理. 很不幸,所有商用操作系统偏偏在内存管理上尤其弱得不堪一击(理由我在上一讲中叙述过,下一讲中我还将给出攻击实例演示).广为所闻的堆栈缓冲区溢出攻击就是利用了商用操作系统在内存管理上存在的设计漏洞. 你也许可以要求让你的程序"独享专用"一个VM,即不允许其他任何程序使用你的VM.可是你的"仆人",操作系统,却始终在为你服务!这个仆人的确能为你提供许多优质的服务使得你已经离不开它.可是它却有许多与生俱来的缺点和毛病可以被隐藏的敌人利用而给你带来危险!如今似乎没有人能知道常用的商用操作系统中隐含的安全漏洞在哪里.人们已达成共识:发现一个漏洞打一个补钉的方法是不能够得到一个安全操作系统的.
这就是为什么我们说VM之间的隔离无法延伸到用户程序之间的隔离. 在下一讲中我要用一个播客来展示如何利用商用操作系统的漏洞来攻击一个用户应用程序. 这一杂谈系列将引入道里项目试图解决应用程序间的安全隔离问题的技术手段.
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
Web应用程序安全
评估方法包括黑盒测试和白盒测试两种方法。此外,采用一些Web应用程序安全防御技术,如Web应用程序防火墙
安全 前端 网络 应用程序 Web -
ios应用程序间互相启动
受限与iOS系统的运行机制,绝大多数情况下一个
操作系统 自定义 ios 共享内存 -
确保dhtmlxGantt应用程序安全
本教程为您提供有关如何在服务器端使用ASP.NET Core 2 创建Gantt的分步说明,如何启用存储甘特图的应用安全。
dhtmlxGantt ASP.NET Core ASP.NET 应用安全 -
网络安全与应用程序安全
在当今的数字环境中确保数据安全变得比以往任何时候都更具挑战性。
网络 数据 应用 挑战 安全 -
「安全工具」57个开源应用程序工具:免费应用程序安全软件指南
您无需花费大量资金在应用程序开发和交付日程中引入高功率安全性。这本开源应用程序工具指南势。这使...
java 安全 linux web 软件测试 -
维护 ASP 应用程序的安全应用程序 服务器 身份验证 字段 服务器安全