基于能力的特权最小化方法技术

技术编号:2853876 阅读:286 留言:0更新日期:2012-04-11 18:40
本发明专利技术公开了一种基于能力的特权最小化方法,目的是解决操作系统的主体获得超越其本身所需的特权导致特权被滥用安全性降低的问题。技术方案是继承草案标准POSIX1003.1e的能力机制,定义角色能力和用户能力,定义能力逻辑关系,设计一个基于能力的特权最小化模型来实现特权的最小化,该模型的特权控制模块以动态模块方式实现,包括能力计算器和特权检查器,能力计算器根据能力逻辑关系计算进程的最终特权,特权检查器则在各个特权操作点判断进程是否拥有相应的访问特权。本发明专利技术可以有效地对系统中的应用或进程实施最小特权,使操作系统中的主体仅仅拥有完成其功能所必需的特权,且采用它实现的操作系统易于使用,既支持进程能力,又支持文件能力。(*该技术在2024年保护过期,可自由使用*)

【技术实现步骤摘要】

本专利技术涉及提高计算机安全性的方法,尤其是提高操作系统的安全性和防止操作系统特权滥用的特权最小化方法。
技术介绍
目前主流的计算机操作系统都存在一个无所不能的超级用户。Windows2000和WindowsXP的超级用户是Administrator,Unix、Linux和FreeBSD的超级用户则称为root。这个超级用户虽然为使用系统带来了极大的方便,但也是一个巨大的安全隐患。因为超级用户无所不能,而完成任务的用户或进程通常只需要很小一部分特权,这样,合法用户有可能越权使用系统,对它造成无意的破坏,而恶意用户更是利用该隐患来滥用特权,有意破坏系统。例如,很多守护进程往往以超级用户的身份运行,而这些守护进程或多或少存在一些漏洞。这样,一旦恶意用户通过网络攻击这些漏洞成功,就会获取超级用户的权限,从而给操作系统的安全带来威胁。为此,人们提出了最小特权的概念,即应用或进程仅具有完成其功能所必需的权限。一方面,最小特权可以有效约束合法用户,特别是超级用户,使他们只能在其职责范围内使用系统;另一方面,最小特权还可以有效减小恶意用户对系统的破坏,因为即使应用存在漏洞,系统被攻破,恶意用户所能得到的权限也是有限的。草案标准POSIX1003.1e所定义的能力机制正是实施最小特权的一种有效措施。POSIX1003.1e把操作系统的所有特权划分成能力,每一个能力代表一种特权,全部能力共同组成能力全集∑,它的子集称为能力集合。能力集合有三种类型,分别是继承集Ci(inheritable set),许可集Cp(permitted set)和有效集Ce(effective set),它们组成的三元组<Ci,Cp,Ce>称为能力状态。POSIX1003.1e规定操作系统的每个进程关联一个能力状态。其中继承集表示子进程能够从父进程继承的能力,进程之间通过能力继承关系形成一个继承链。有了继承集,即使继承链中间进程的许可集和有效集都为空,子孙进程也可以继承来自父辈进程的能力。许可集表示进程能够使用的能力。如果某个能力属于许可集,不属于有效集,则表示进程暂时禁用这个能力;有效集表示进程真正具有的特权,当一个进程试图进行特权操作时,操作系统将检查进程有效集是否具有相应的能力,如果有,则允许操作,否则拒绝操作。进程可以改变自身的能力状态,但是要满足一定的约束,即新的继承集必须包含于原继承集和原许可集的并集,新的许可集必须包含于原许可集,新的有效集则不能超越新的许可集。该约束实际上就是限制进程只能舍弃它的部分或全部能力,不能扩大它的特权。同进程一样,POSIX1003.1e规定每个文件也关联一个能力状态。文件的继承集允许父进程能力状态许可集中的一些能力传递给子进程,禁止其它能力传递给子进程;文件的许可集表示可执行程序执行时必须具备的能力,而不管它代表的是哪个用户;文件的有效集则控制新进程的许可集是否传递到新进程的有效集。实际操作中,只有可执行程序的能力状态有意义。POSIX1003.1e虽然规范了能力机制,为它的实现提供了指南,但POSIX1003.1e仅仅把能力与进程和文件关联,按照这种方式实现的操作系统是很难使用的,因为操作系统一般都是以基于用户身份的访问控制为基础的。Linux操作系统部分实现了遵循POSIX1003.1e的能力机制,但它只有进程能力,不支持文件能力。仅有进程能力很难约束超级用户及setuid程序(执行该程序的用户可以获取程序拥有者的权限)和setgid程序(执行该程序的用户可以获取程序拥有者所在用户组的权限),这些程序很容易造成特权滥用。开源项目RSBAC和LIDS在Linux能力的基础上作了一些补充性的工作,但仍然不支持文件能力。因此目前这些解决方法对于特权最小化是有限的,难以使用的。
技术实现思路
本专利技术所要解决的技术问题是针对操作系统的主体在执行任务时往往获得超越其本身所需的特权导致特权被滥用安全性降低的问题,提出一种,使操作系统中的主体,包括角色、用户、应用和进程,仅仅拥有完成其功能所必需的特权,且采用它实现的操作系统易于使用,既支持进程能力,又支持文件能力。本专利技术的技术方案是在POSIX1003.1e能力的基础上定义角色能力和用户能力以相容于操作系统基于用户身份的访问控制方法,使系统易于使用和实施分权;定义角色能力、用户能力、进程能力和文件能力之间的逻辑关系(简称‘能力逻辑关系’),使管理员可以控制进程仅具有完成其任务所必需的特权,从而全面实现操作系统中主体特权的最小化;设计一个基于能力的特权最小化模型,该模型分为核内和核外两部分,核内由以动态模块方式实现的特权控制模块和系统调用组成,核外由PAM最小特权模块、函数库、命令行工具和图形化工具组成。特权控制模块主要包括能力计算器和特权检查器,能力计算器在exec进程时根据能力逻辑关系计算进程的最终特权;特权检查器则在各个特权操作点判断进程是否拥有相应的访问特权;特权控制模块采用系统调用的方式向用户层提供查看文件的能力状态、设置文件的能力状态、查看进程的能力状态、设置进程的能力状态、查看和设置角色能力、查看和设置用户的角色、查看和设置用户能力的功能。PAM最小特权模块负责在登录时将角色能力或用户能力传递给用户的第一个进程——shell进程;在系统调用的基础上,本专利技术提供一个函数库用于操作角色能力、用户能力以及进程和文件的能力状态,这套库函数还包括能力的二进制表示和文本表示之间的相互转换。能力的二进制表示通常采用长整数,以便于操作;能力的文本表示则采用可读性强的字符串表示。在函数库的基础上,本专利技术设计一套命令行工具和一个图形化工具,它们完成相同的功能,包括查看和设置文件的能力状态,查看进程的能力状态,查看和设置角色能力,查看和设置用户的角色以及查看和设置用户能力。命令行工具提供给高级用户使用,而一般用户则可以使用图形化工具。操作系统通常都是基于用户标识进行访问控制的,为了相容于这种访问控制,本专利技术引入角色能力和用户能力的概念,这样更有助于实施管理员分权和方便使用。角色能力是指角色为了完成其职责所必须具备的特权,用户能力则是指用户为了完成自身职责必须具备的特权,一般等于他所承担角色的能力。本专利技术定义每个角色或每个用户关联一个继承集Ci,该能力集合就表示角色能力或用户能力,用户能力Ci就等于他所承担角色的Ci。角色能力是由一个组织或机构的管理者根据角色的职责静态地指定的,用户承担何种角色也是由管理者根据他的职责静态地确定。这两种关系都以配置文件形式保存在操作系统中,分别称为角色能力配置文件“role_cap.conf”和用户角色配置文件user_role.conf”,前者描述一个角色具有哪些能力,如果没有明确指定,则能力为空集;后者描述用户承担何种角色。如果操作系统不提供角色支持,则只设置一个用户能力文件“user cap.conf”,直接描述用户具有哪些能力。在不支持角色的操作系统中,角色能力文件和用户角色文件合并成一个用户能力配置文件“user_cap.conf”。本专利技术的特权控制模块采用操作系统的内核动态模块实现,可以在系统启动时选择是否加载。具体方法是在操作系统的内核中设置一个开关变量lpa_enabled,表示特权控本文档来自技高网
...

【技术保护点】
一种基于能力的特权最小化方法,继承草案标准POSIX1003.1e的能力机制,其特征在于定义角色能力和用户能力,定义能力逻辑关系,设计一个基于能力的特权最小化模型来实现特权的最小化,该模型分为核内和核外两部分,核内由以动态模块方式实现的特权控制模块和系统调用组成,核外由PAM最小特权模块、函数库、命令行工具和图形化工具组成;特权控制模块包括能力计算器和特权检查器,能力计算器根据能力逻辑关系计算进程的最终特权,特权检查器则在各个特权操作点判断进程是否拥有相应的访问特权;特权控制模块采用系统调用的方式向用户层提供查看文件的能力状态、设置文件的能力状态、查看进程的能力状态、设置进程的能力状态、查看和设置角色能力、查看和设置用户的角色、查看和设置用户能力的功能;PAM最小特权模块负责在登录时将角色能力或用户能力传递给用户的第一个进程-shell进程;函数库用于操作角色能力、用户能力以及进程和文件的能力状态,这套库函数还包括能力的二进制表示和文本表示之间的相互转换,能力的二进制表示采用长整数,能力的文本表示采用可读性强的字符串表示;命令行工具和图形化工具完成相同的功能,包括查看和设置文件的能力状态,查看进程的能力状态,查看和设置角色能力,查看和设置用户的角色以及查看和设置用户能力,命令行工具提供给高级用户使用,而一般用户则使用图形化工具。...

【技术特征摘要】
1.一种基于能力的特权最小化方法,继承草案标准POSIX1003.le的能力机制,其特征在于定义角色能力和用户能力,定义能力逻辑关系,设计一个基于能力的特权最小化模型来实现特权的最小化,该模型分为核内和核外两部分,核内由以动态模块方式实现的特权控制模块和系统调用组成,核外由PAM最小特权模块、函数库、命令行工具和图形化工具组成;特权控制模块包括能力计算器和特权检查器,能力计算器根据能力逻辑关系计算进程的最终特权,特权检查器则在各个特权操作点判断进程是否拥有相应的访问特权;特权控制模块采用系统调用的方式向用户层提供查看文件的能力状态、设置文件的能力状态、查看进程的能力状态、设置进程的能力状态、查看和设置角色能力、查看和设置用户的角色、查看和设置用户能力的功能;PAM最小特权模块负责在登录时将角色能力或用户能力传递给用户的第一个进程——shell进程;函数库用于操作角色能力、用户能力以及进程和文件的能力状态,这套库函数还包括能力的二进制表示和文本表示之间的相互转换,能力的二进制表示采用长整数,能力的文本表示采用可读性强的字符串表示;命令行工具和图形化工具完成相同的功能,包括查看和设置文件的能力状态,查看进程的能力状态,查看和设置角色能力,查看和设置用户的角色以及查看和设置用户能力,命令行工具提供给高级用户使用,而一般用户则使用图形化工具。2.如权利要求1所述的基于能力的特权最小化方法,其特征在于所述角色能力是指角色为了完成其职责所必须具备的特权,所述用户能力是指用户为了完成自身职责必须具备的特权,一般等于他所承担角色的能力;定义每个角色或每个用户关联一个继承集Ci,该能力集合就表示角色能力或用户能力,用户能力Ci就等于他所承担角色的Ci;角色能力是由一个组织或机构的管理者根据角色的职责静态地指定的,用户承担何种角色也是由管理者根据他的职责静态地确定;这两种关系都以配置文件形式保存在操作系统中,分别称为角色能力配置文件“role_cap.conf”和用户角色配置文件user_role.conf”前者描述一个角色具有哪些能力,如果没有明确指定,则能力为空集;后者描述用户承担何种角色;如果操作系统不提供角色支持,则只设置一个用户能力文件“user_cap.conf”,直接描述用户具有哪些能力;在不支持角色的操作系统中,角色能力文件和用户角色文件合并成一个用户能力配置文件“user_cap.conf”。3.如权利要求1所述的基于能力的特权最小化方法,其特征在于本发明支持文件能力的方法是将每个文件关联一个能力状态<Ci,Cp,Ce>,把文件的能力状态存放在文件的扩展属性之中,文件的扩展属性是inode结点的延伸,容量比inode结点大得多,可以自如地存放文件的各种属性,且只有具备CAP_SETFCAP能力的角色或用户才能进行设置。4.如权利要求1所述的基于能力的特权最小化方法,其特征在于所述能力逻辑关系为Ce(p)=(Cp(f)∪(Ci(f)∩ Ci(u)))∩ Ce(f),该逻辑关系表示用户u执行文件f生成进程p,其能力状态的有效集等于可执行文件继承集交上用户能力,然后并上可执行文件许可集,最后交上可执行文件有效集;根据能力逻辑关系,用户在执行文件时,产生的新进程既可以增加新的能力,也可以禁用一些能力;同一个用户执行不同的程序可以具有不同的特权;不同的用户执行相同的文件也可以具有不同的特权。5.如权利要求1所述的基于能力的特权最小化方法,其特征在于所述特权控制模块采用操作系统的内核动态模块实现,在系统启动时选择是否加载,方法是在操作系统的内核中设置一个开关变量lpa_enabled,表示特权控制模块是否加载,特权控制模块不加载时,置lpa_enabled为0;特权控制模块加载时,将其置为1,一旦该模块被加载,系统实施最小特权;如果模块没有加载,则不实施最小特权,对系统无任何影响。6.如权利要求1所述的基于能力的特权最小化方法,其特征在于所述特权检查器在各个特权操作点检查进程的特权以决定是否允许操作,在特权操作进行前,内核首先判断开关变量lpa_enabled是否为1,如果是1,则表示特权控制模块已经加载;此时,调用特权检查器判断进程能力状态的有效集Ce(p)是否具有相应的能力,如果有,则允许操作...

【专利技术属性】
技术研发人员:陈松政何连跃罗军
申请(专利权)人:中国人民解放军国防科学技术大学
类型:发明
国别省市:43[中国|湖南]

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1