电子说
目前流行的操作系统对嵌入式系统的保护几乎不可能实现
研究人员对目前市场上流行的数十种操作系统进行了分析,从最大众的(Windows、iOS)到一些极客所用的系统都包括在内。由分析结果来看,目前绝大多数操作系统主要处理实际的功能任务,而信息安全功能(如果它们包含在系统中)只是以插件、实现加密算法的组件或外接程序架构的形式对现有功能的扩展。
这些措施虽然可以帮助系统改进整体安全特性,但不能保证系统免受所有现代攻击模式的威胁。如果在最初的系统设计中,开发者并没有将嵌入式系统的安全问题考虑进去,那么随着保护机制的不断添加,系统将不可避免地会被攻击。
操作系统的分类
目前市场上流行的操作系统可以根据许多标准进行分类,而在本次分析时,研究人员则是从安全架构的角度来对操作系统进行分类的,所以根据它们的内核类型,研究人员将目前市场上流行的操作系统分为四大类。
**· **单片系统(monolithic system);
**· **基于单片内核(monolithic kernel)的操作系统;
**· **基于微内核(micro kernel)的操作系统;
**· **混合系统( Hybrid System);
单片系统
这是嵌入式设备最普遍使用的操作系统的架构类型,研究人员分析的大多数操作系统都是基于微控制器设计的单片系统的运行环境,在微控制器中,所有进程(包括用户和系统)都可以在一个地址空间中不受限制地运行。
从信息安全的角度来看,这种架构仅适用于非常简单的任务,随着设备功能变得越来越复杂,漏洞的风险也会随之变得非常大。当此类系统中出现漏洞时,无论是在系统服务的实现中,还是在辅助应用程序中,都会导致整个安全环境受到干扰。
此类操作系统的额外安全措施经常是提供包含多组加密算法的库,然而,这些措施很难起到根治的效果,因为它们根本没有考虑到许多重要问题的全面解决方案,例如密钥和证书的生成和存储,可信下载的安全保障,安全更新等。另外,由于这些库是专门为特定的操作系统而创建的,因此,它们通常不会经过足够地验证或测试。所以这些库本身很可能就会包含漏洞,最后的结果就是整体的解决方案的安全性不但不会提高还会降低。
而除了库之外,其他措施(如堆栈保护,各种类型的附加检查等)虽然也可以在一定程度上对不同类型的故障和漏洞提供保护,但如果攻击者是专门针对特定的已知漏洞,那这些防范措施通常是无用的。
即使在以上的这些解决方案中正式应用了微内核架构,也不可能确保用户的保护级别能得到质的提升,因为任何用户进程都可能影响微内核的操作,除非用户进程与系统进程隔离。
从理论上讲,在微内核操作系统中,用户进程是很难与系统进程进行隔离的,根据研究人员的测试,在目前流行的RIOT操作系统(它是一个开源的物联网操作系统,提供了一个强大的功能,函数、文件、名称查找功能,是一个纯C语言编写的操作系统。),Zephyr操作系统(它是一个用于物联网的开源操作系统,受到 Linux 基金会支持,Zephyr 的目标非常远大,即一统物联网操作系统。),Unison RTOS,甚至是由Green Hills Software公司提供的商用微控制器内核μ-velOSity操作系统,以及由Vector开发的用于汽车解决方案的基本操作系统Microsar中,都是这样的情况。
尽管单片系统存在很多安全缺陷,但这种紧凑型操作系统却非常适用于常用的廉价微控制器。它们可以用于简单紧凑的设备中,在这些设备中,单片系统唯一的任务是测量单个参数,例如温度,压力,体积等。在研究人员看来,当面对更复杂的任务时,单片系统不是最好的选择。
基于单片内核的操作系统
基于单片内核的操作系统是另一种类型的操作系统架构,它可能是嵌入式系统和通用系统(即服务器,工作站和移动设备)使用最广泛和最流行的操作系统体系结构类型。
与单纯的单片系统解决方案不同,单片内核系统中的用户进程与内核是隔离的,内核只有通过有限的系统调用才能访问用户进程的函数。从信息安全的角度来看,这就可以形成一个很大的安全优势,因为大量服务运行在内核环境中,如协议实现、文件系统、设备驱动程序等。
目前市场上流行的单片内核操作系统包括基于Linux内核(及其派生产品),以及Windows,FreeBSD等。FreeBSD是一种类UNIX操作系统,是由经过BSD、386BSD和4.4BSD发展而来的Unix的一个重要分支,RTEMS是一个开源的无版税实时嵌入操作系统RTOS,它最早用于美国国防系统,早期的名称为实时导弹系统(Real Time Executive for Missile Systems),后来改名为实时军用系统(Real Time Executive for Military Systems),现在由OAR公司负责版本的升级与维护。
目前无论是航空航天、军工,还是民用领域RTEMS都有着极为广泛的应用。同大多数嵌入式操作系统一样,RTEMS采用微内核设计思想,将内核主要功能集成在一个小的执行体中,附加的功能在包裹内核层的外层实现,应用可以根据实际系统配置,裁剪、链接相应的资源。
不过这些操作系统的内核服务仍然留有许多攻击面,而在内核环境中运行的代码库也是百分百安全的。因此,不要指望内核服务没有漏洞,实际上,研究人员经常会定期检测到其中的漏洞。
任何对内核服务的攻击都不可避免的导致整个系统受到攻击,无论使用何种工具来保护都无济于事。另外,内核模型更新时需要重启设备,这个操作方式对嵌入式系统的安全性影响特别大。事实上,内核模型更新时,并不总是需要重新启动设备,但是,如果不需要重新启动,则经常会发生异常现象。
在上下文切换(Context Switch)的数量较少的情况下,与微内核操作系统相比,单核内核架构的主要优势在于其具有更好的性能。上下文切换指的是CPU从一个进程切换到另一个进程,如果上下文切换过高,会导致CPU像个搬运工,频繁在寄存器和运行队列直接奔波 ,更多的时间花在了线程切换,而不是真正工作的线程上。
目前市面上流行的不同版本的Linux系统的比较
基于Linux内核的操作系统之所以如此流行的原因,就在于它们有着非常好的用户体验:它们不但提供了开放的源代码,而且还提供出色的硬件支持,并且拥有大量的配套应用程序和系统软件。因此对于嵌入式系统的开发人员来说,Linux系统的特性能满足嵌入式系统的各种功能的实现。
注意:Linux仅作为操作系统的内核,成熟的操作系统是基于linux的各种版本。
值得注意的是,Linux是作为多用户操作系统的内核开发的,并且包含一组内置的安全机制,但从最新的安全角度来看,无论是在架构和实现方面,它都隐藏着许多安全问题。
传统观点认为,基于Linux的系统只要被正确配置,那嵌入式系统的安全性就能得到充分保障。但是,这只是理论上的推测,往往实际的配置过程相当复杂,大多数安全限制可以被绕过。此外,Linux也存在与安全引导机制的实现,更新操作系统组件以及许多其他问题有关的漏洞。
鉴于此,目前有许多新的基于Linux的新系统已经开发了出来,旨在提高嵌入式系统的安全性。其中有很多是为解决信息安全问题而开发的扩展,包括AppArmour,内核加固补丁集项目 Grsecurity,PAX(PaX是针对linux 内核的一个加固版本的补丁,它让linux内核的内存页受限于最小权限原则),SELinux等。虽然这些扩展不能保证百分百的嵌入式系统的安全性,但还是有助于整体改善安全状况的,因为Linux内核的代码非常大,目前还没有办法让内核全部都变得可信赖。
根据www.cvedetails.com的官方数据,2017年在Linux内核中检测到453个漏洞,其中有159个漏洞允许在攻击者内核上下文中执行任意代码的漏洞。而且利用Linux内核中的漏洞,可以绕过任何保护机制,即使是最复杂和精心配置的保护机制也起不到防护作用。更不幸的是,这个问题目前似乎还没有解决方案。
本文主要介绍的是单片系统和基于单片内核的操作系统,接下来我会接着给大家介绍有关基于微内核的操作系统和混合系统的安全性分析,敬请大家继续关注。
全部0条评论
快来发表一下你的评论吧 !