基于嵌入式平台的安全性监控框架文献综述

 2023-08-17 04:08

文献综述(或调研报告):

嵌入式Linux系统的安全问题一直是一个焦点。过去嵌入式系统的应用场景较为简单,其软件和硬件都封装固化,少有修改的余地,因此人们对嵌入式系统的安全没有足够的重视,但随着嵌入式系统的应用场景越来越多样化和复杂化,对底层硬件设备的可靠性、操作系统的可控性、应用系统的健壮性等方面的要求越来越高,嵌入式系统的安全问题逐渐进入人们的视野。一个合格的正常运行的系统须保证其自身的安全性,在启动前应是可信的状态。与其他主流操作系统一样,传统的嵌入式系统存在的安全隐患主要有:耗尽攻击、身份识别、网络入侵、窃取信息、真实性、混乱/破坏传感器和其他外设,以及储存器重写【1】。为嵌入式系统构建安全方案应遵循自底向上的思路,从底层硬件、操作系统、应用程序和数据采取安全措施,针对一些经典的安全问题,例如缓冲区溢出和提权攻击。获取特定用户的特权在多个层面上都能进行有效的攻击,如在操作系统层面可以禁止更新补丁,保证特权的长久留存;在应用层面可以越权下载应用;在数据层面可以访问高保密性文件,窃取或修改重要数据。目前市面上已存在有一些针对嵌入式系统安全的整体解决方案,包括可信PDA,PRIA,KNOX等,各大电子公司均在此领域有涉猎。

基于Linux最经典的安全改造方案是LSM[2]。Linux内核只提供自主访问Linux控制(DAC),并没有对强制访问控制(MAC)的直接支持。理论上,增强访问控制可以用 Linux内核可加载模块来实现,一般在内核移植中会将非必要的功能编译为模块,这样可以更方便使用且同时保证内核的简洁,且不会由于功能的增加影响现存的Linux主框架,满足LSM安全通用框架设计的一大原则:简单通用性。采用内核可加载模块的方式就可以支持多种不同的访问控制模型,形成Linux安全机制的通用解决方案。流通可使用的一些增强访问控制原型包括有SELinux,POSIX. 权能逻辑,域和类型裁决DTE,LIDS(LinuxIDS),都已经在LSM(Linux安全机制)框架上实现。[3]

权能逻辑在Linux的发展历史中已经有了比较广泛的应用。因此为了兼容权能逻辑,且将其从内核中剥离成为单独的安全模块,多数安全模块能够栈式堆叠权能逻辑模块。通用框架的逻辑原理是在内核不直接插入补丁代码,而是插入对hook函数的调用。插入点的选择须在完全接触请求上下文的地方,只有这类节点才能作出正确的访问判定,在系统调用层次上大多数插入点无法获得作出访问判定的足够信息。回调函数的方式,使得系统对内核对象的存取访问得以实现。[4]

针对上述提出的问题,美国国家安全局(NSA)开发出一种基于Flask模型[5]的新型安全机制:安全增强型Linux(SELinux),并将其作为一个标准模块集成到Linux内核中。随着应用日渐广泛,其重要地位也更加凸显。SELinux是一种通用的细粒度的强制访问控制机制, 它 核心思想是使用安全策略来限制Linux的各种操作。SELinux为主体和客体定义了多种安全策略,能够最大限度地限制进程的权限、保护进程和数据的安全性、完整性和机密性,从而解决了DAC的脆弱性和传统MAC的不灵活性等问题。但SELinux的一项弊病是使用上的复杂性,影响了它的使用与推广。[6]

SELinux的安全结构清晰地将策略判定组件和策略实施组件分割为两个部分,分别对应逻辑上完全独立的安全服务器和客体管理器,判定与处理互不干扰,用户可以做到只修改判断逻辑而不影响其他结构。SELinux支持多种安全策略模型,支持策略的灵活改变。基于LSM框架实现的SELinux支持默认安全模块和权能模块的堆叠,通过注册的 hook函数来传递和处理SID,如前文对增强访问控制的处理方式的描述。但这里存在的一个问题是,由于现有框架结构无法推翻,SELinux采用的是直接插入SID进行安全处理的方式,这破坏了现有框架的整洁性。

SELinux定义了一些概念来方便设计安全策略,包括用户(user)、角色(role),以及客体的类型(type)和进程的域(domain),使用角色来限制主体能够进入的域。安全模型主要由类型裁决(TE)模型和基于角色的访问控制(RBAC)模型组成,两个模型有不同的侧重。TE模型对系统中的进程和客体提供细粒度的访问控制, 而RBAC模型通过提供更高级别的抽象来简化用户管理。前文提到的安全上下文,是由用户、角色、类型三者组成的,这是SELinux安全裁决的依据,创建新目录时默认从上级继承。总的来说,SELinux的安全服务器使用TE模型和RBAC模型,为主体的域和客体的类型之间的交互设计了大量的访问规则,客体管理器根据主客体的安全上下文向安全服务器查询这些规则, 然后作出相应的安全裁决。

在应用过程中,SELinux已经暴露出一些需要升级解决的安全问题。主要的问题有四个:第一,切换过程中存在不安全因素。用户可以根据策略随意选择SELinux角色,也即存在不断切换角色的可能,通过这个方式就可以处理本不应该由自己完成的事务。第二,SELinux 的安全管理员权限仍然很大。SELinux可以进行模式切换,即“/selinux/enforce”接口是开放的,安全管理员有非法操作扩大自身权限的可能。第三,认证方式存在安全隐患。安全系统中的认证方式一般都是基于用户名称或用户ID及口令作出判断,但对于最重要的role并未进行有效控制,攻击者完全可以通过获取特定的用户角色(例如拥有root权限的)的方式来获取特权。第四,作为整个安全系统策略实施的基本依据的SELinux安全策略(policy.ver)在内核启动前的安全性尚无保证。

上述提到的四个SELinux在实际应用中存在的主要问题,根源在于SELinux安全子系统在用户映射关系上与 Linux 系统融合不紧密,且SELinux内核代码本身不严密。通常, Linux系统用户的唯一性标识是用户标识号(即UID),一些安全增强的做法是将系统中每个用户与UID一一对应。一种办法是结合SELinux角色管理,引入可信计算技术,提出一种新型的特权用户标识。其主要针对特权用户,基于SELinux RBAC机制,将各特权用户的角色固定为唯一角色。主要改进是通过“UID Role”的方式确定特权用户身份标识[7],通过可信计算环境提供用户管理所需的所有密码服务,保证特权用户管理的可信性;这样设计也考虑到了由于在现有的 Linux系统内核代码中大量涉及UID为0时的超级权限,这一点在应用层无法更改,因此需要保证特权用户原有标识固定(即“UID=0”)。同时,还需要严格预定义SELinux 内核的初始状态,包括取消“内核模式切换”支持,这样可以有效避免特权用户“升权攻击”,最终稿呈现的结果是增加函数判断使得原setenforce直接修改模式的渠道需要经过再判断,进程中途的修改将判无效。

近年来出现的新问题是SELinux的应用从专注升级其本身的安全能力逐渐转移到如何将其应用在移动设备上,这是由于近年智能手机和平板流行,且从个人使用逐渐转移重心到办公使用,承载了更多须保证秘密的文件,引发安全问题,由此开辟了新的应用领域。

剩余内容已隐藏,您需要先支付 10元 才能查看该篇文章全部内容!立即支付

课题毕业论文、开题报告、任务书、外文翻译、程序设计、图纸设计等资料可联系客服协助查找。