频道栏目
读书频道 > 安全 > 嵌入式系统安全:安全与可信软件开发实战方法
2.5.1 案例分析:安全Web浏览器
2015-12-08 16:51:15     我来说两句
收藏   我要投稿
从读者的角度出发,以通俗易懂的语言,结合丰富多彩的实例,详细介绍了嵌入式系统安全开发设计各方面的知识。通过行业标准和实际经验提出切实可行的嵌入式安全方法,这无论对于初学者还是资深开发者来说都具有一  立即去当当网订购

访问控制针对嵌入式系统中的进程和资源采用最小权限原则。当通用操作系统中(比如Windows)出现了因软件缺陷引发的安全漏洞,我们常常就把这个漏洞归责于该软件。事实上,罪魁祸首应是系统缺少相应的访问限制。如果给予适当的控制,一个软件缺陷是可以不对系统安全产生什么影响的。可悲的是,应用程序中的漏洞将被攻击利用,以获得应用程序对资源本不该有的访问权。

让我们来看看典型的Web网页浏览器,例如Firefox或Chrome。浏览器是用户交互类应用程序,因此它需要图像显示输出和鼠标键盘输入等资源(这两类资源可能通过系统窗口管理器的访问来提供)的访问权限。浏览器需要访问文件系统,以存放从网络上下载的文件,或装载要浏览的文件。浏览器需要它自己私有的应用程序代码和数据的执行访问权。浏览器需要启动和能与大量插件(例如HTML5和JPEG渲染器)通信。这些浏览器插件通过动态链接库实现。通过直接将DLL装载进应用程序的地址空间,应用程序就可以动态地、可编程地访问外部的功能函数。DLL很容易配置、启动和分发。

但是,DLL——至少像大多数操作系统中实现那样——是访问控制权限管理糟糕的典型例子。DLL运行在调用应用程序环境中,因此其拥有相应用户属主同样的访问控制许可。这样,不被用户信任的插件可以启动其他程序来访问所有的用户文件,访问浏览器所有的内存和其他资源,访问网络,等等。另外,许多浏览器的插件都是庞大而复杂的软件程序,它们都充斥着各类缺陷。

插件中的缓存溢出漏洞,就为在用户环境执行攻击者的代码提供了潜在可能。这种攻击常有发生。当下已有多个流行应用程序(包括Adobe Flash、Adobe Acrobat和JPEG的渲染器)被利用了。常见的攻击影响即制造不良Flash、PDF或JPEG文件,并将这些文件放置到Web网页上以供浏览,这些文件在被渲染的过程中将产生缓存溢出,进而注入不良代码。

构建一个安全的浏览器确保其不受这些问题的影响,除了要进行访问控制,还要做许多。让我们先看看JPEG渲染器为什么要访问文件系统、网络或其应用程序的资源,而不是只做JPEG的解码而已(第3章将进一步讨论如何构建安全的软件)。现在假设JPEG渲染器可以实现为一个进程,其访问计算机资源时是不依赖于用户或用户的浏览器应用程序的。输入到该JPEG进程的是一串位流,该位流就代表着JPEG压缩图像。该JPEG进程所需要的资源仅仅是一些RAM、处理器执行时间,以及通信机制,其中通过该通信机制浏览器可提供压缩的输入流给JPEG进程,并从JPEG进程接收解压的输出流。该JPEG进程将不再允许访问其他任何东西——包括文件、网络甚至是启动其他程序的能力。

现在让我们假设该JPEG进程充满了缺陷,包括上面提到的对全世界Web用户来讲都是“毒药”的缓存溢出缺陷。在JPEG应用程序中缺陷使得一张恶意构造的JPEG图像引起JPEG进程的运行时栈溢出,进而注入不良代码。该代码可以破坏、禁用甚至完全控制该JPEG进程。但是此时该攻击者不能访问用户的文件,不能启动其他程序来做破坏,也不能访问超过上面提到的资源,所以一切损失就都限制在JPEG进程自己的范围里。访问控制工程极大地限制了从缓冲区溢出造成的损害。

关键点 缓冲区溢出破坏力强的最大原因就是其会利用不安全的操作系统和软件开发技术提升对环境资源的权限。

正如在Web浏览器例子中所看到的,插件的权限是与其所处的环境相关的,因为它继承了用户所处环境的权限。为了方便,开发者设计了浏览器,使其让一个插件可以代表用户实现功能和访问资源。这种过度授权导致一些本身无害的编程缺陷产生了大范围的破坏。

您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力  
上一篇:2.5 访问控制与访问能力
下一篇:2.5.2 访问控制的粒度与简化
相关文章
图文推荐
排行
热门
最新书评
特别推荐

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训 | 举报中心

版权所有: 红黑联盟--致力于做实用的IT技术学习网站