强制完整性控制

科技工作者之家 2020-11-17

强制完整性控制(英语:Mandatory Integrity Control)是一个在微软Windows操作系统中从Windows Vista开始引入,并沿用到后续版本系统的核心安全功能。强制完整性控制通过完整性级别标签来为运行于同一登录会话的进程提供隔离。此机制的目的是在一个潜在不可信的上下文(与同一账户下运行的其他较为可信的上下文相比)中选择性地限制特定进程和软件组件的访问权限。

实现强制完整性控制在对象的安全描述符中使用了一个新的访问控制项(ACE)类型来代表对象的完整性级别。在Windows中,访问控制列表(ACL)被限制为授予访问权限(读取、写入、执行权限)和特权给用户和组。在安全引用监视器执行授权授予对象的访问权限前,会将访问令牌中的完整性级别与安全描述符中的完整性级别比较。Windows 根据主体的完整性级别是高于还是低于所请求的对象,以及访问控制项中的完整性策略标志来决定是否授予访问权限。安全子系统以强制标签的形式实现完整性级别,以便和访问控制列表提供的自由访问控制区别开来。

Windows Vista定义了四个完整性级别:低(SID: S-1-16-4096)、中(SID: S-1-16-8192)、高(SID: S-1-16-12288)、系统(SID: S-1-16-16384)。默认情况下,普通用户启动的进程将获得中完整性级别,而提升的进程则获得高完整性级别。通过引入完整性级别,强制完整性控制可以分类隔离程序,使得沙箱化潜在危险程序(如进行网络通信的程序)成为可能。低完整性进程所拥有的访问权限少于那些拥有更高完整性级别的进程。

带有访问控制列表的对象(如命名对象,包括文件、注册表项,甚至进程和线程)有一个访问控制项,定义着最低需要哪个完整性级别才能访问此对象。Windows确保只有当进程的完整性级别等于或高于所请求的对象的完整性级别时,它才能写入或删除此对象。此外,拥有更高完整性级别的进程对象甚至不允许读取访问。

于是,一个进程就不能与另一个更高完整性级别的进程交互了。所以,进程不能通过CreateRemoteThread()API执行DLL注入到更高完整性级别的进程之类的功能,也不能使用WriteProcessMemory()函数发送数据到另一个进程。1

Windows VistaWindows Vista是微软发行的一款Windows个人桌面操作系统,于2005年7月22日微软正式公布此名称。开发代号Longhorn。在2006年11月8日,Windows Vista开发完成并正式进入批量生产。此后的两个月仅向MSDN用户、电脑软硬件制造商和企业客户提供。在2007年1月30日,Windows Vista正式对普通用户出售,同时也可以从微软的网站下载。Windows Vista距离上一版本的操作系统Windows XP已有超过五年的时间,这是Windows历史上间隔时间最久的一次发布。

根据微软表示,Windows Vista新增上百种功能;其中较特别的是新版的图形用户界面和称为“Windows Aero”的全新界面风格、加强后的搜索功能(Windows indexing service)、新的多媒体创作工具(例如Windows DVD Maker),以及重新设计的网络、音频、输出(打印)和显示子系统。Vista也使用点对点技术(peer-to-peer)提升计算机系统在家庭网络中的通信能力,将让在不同计算机或设备之间分享文件与多媒体内容变得更简单。针对开发者方面,Vista使用.NET Framework3.0版本,比起传统的Windows API更能让开发者能简单写出高品质的程序。

Windows Vista是第一版只能支持在NTFS硬盘分区上安装Windows系统的Windows操作系统。

微软也在Vista的安全性方面进行改良。Windows XP最受到批评的一点是系统经常出现安全漏洞,并且容易受到恶意软件、计算机病毒或缓存溢出等问题的影响。为了改善这些情形,微软主席比尔·盖茨在2002上半年宣布在全公司实行“可信计算的政策”(Trustworthy Computing initiative),这个活动目的是让全公司各方面的软件开发部门一起合作,共同解决安全性的问题。微软宣称由于希望优先增进Windows XP和Windows Server 2003的安全性,因此延误Vista的开发。

在开发期间,有许多团体发表关于Vista的各种负面预测。包括延迟的开发时间、限制更严格的授权方式、限制拷贝受保护的数字媒体而加入的数项新数字版权管理技术,以及新功能的实用性(例如用户帐户控制)。

Windows Vista的后续操作系统是Windows 7,并在2009年10月23日上市。Windows Vista主流支持已停止(已于2012年4月10日到期),扩展支持已停止(已于2017年4月11日到期)。2

访问控制表访问控制表(Access Control List,ACL),又称存取控制串列,是使用以访问控制矩阵为基础的访问控制表,每一个(文件系统内的)对象对应一个串列主体。访问控制表描述用户或系统进程对每个对象的访问控制权限。

访问控制表的主要缺点是不可以有效迅速地枚举一个对象的访问权限。因此,要确定一个对象的所有访问权限需要搜索整个访问控制表来找出相对应的访问权限。2

本词条内容贡献者为:

王沛 - 副教授、副研究员 - 中国科学院工程热物理研究所

科技工作者之家

科技工作者之家APP是专注科技人才,知识分享与人才交流的服务平台。