CN1763710A - 基于能力的特权最小化方法 - Google Patents

基于能力的特权最小化方法 Download PDF

Info

Publication number
CN1763710A
CN1763710A CN 200410046856 CN200410046856A CN1763710A CN 1763710 A CN1763710 A CN 1763710A CN 200410046856 CN200410046856 CN 200410046856 CN 200410046856 A CN200410046856 A CN 200410046856A CN 1763710 A CN1763710 A CN 1763710A
Authority
CN
China
Prior art keywords
capability
user
ability
privilege
role
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN 200410046856
Other languages
English (en)
Inventor
陈松政
何连跃
罗军
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National University of Defense Technology
Original Assignee
National University of Defense Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by National University of Defense Technology filed Critical National University of Defense Technology
Priority to CN 200410046856 priority Critical patent/CN1763710A/zh
Publication of CN1763710A publication Critical patent/CN1763710A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

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

Description

基于能力的特权最小化方法
技术领域
本发明涉及提高计算机安全性的方法,尤其是提高操作***的安全性和防止操作***特权滥用的特权最小化方法。
背景技术
目前主流的计算机操作***都存在一个无所不能的超级用户。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,表示特权控制模块是否加载,内核引导特权控制模块不加载时,置lpa_enabled为0;特权控制模块加载时,将其置为1。一旦该模块被加载,***就可以实施最小特权;如果模块没有加载,则不实施最小特权,对***无任何影响。这样,操作***既可以应用于对安全要求高的环境,也可以适应一般的普通环境。
内核利用“特权检查器”在各个特权操作点检查进程的特权以决定是否允许操作。在特权操作进行前,内核首先判断开关变量lpa_enabled是否为1,如果是1,则表示特权控制模块已经加载。此时,调用特权检查器判断进程能力状态的有效集Ce(p)是否具有相应的能力,如果有,则允许操作,否则拒绝操作;如果lpa_enabled为0,则判断进程的有效用户标识euid是否为超级用户root,是,则允许操作,否则拒绝操作。
本发明支持文件能力的方法是将每个文件关联一个能力状态<Ci,Cp,Ce>。考虑到文件是一种永久性实体,本发明把文件的能力状态存放在文件的扩展属性之中。文件的扩展属性是inode结点的延伸,容量比inode结点大得多,可以自如地存放文件的各种属性。这样,既可以永久性地保存文件的能力状态,也给存取带来了方便。并且只有具备CAP_SETFCAP能力(允许设置文件能力状态的特权)的角色或用户才能进行设置。
本发明定义能力逻辑关系如下:
Ce(p)=(Cp(f)∪(Ci(f)∩Ci(u)))∩Ce(f)
p表示用户u的进程,f表示可执行文件(即程序),该逻辑关系表示用户u执行文件f生成进程p,其能力状态的有效集等于可执行文件继承集交上用户能力,然后并上可执行文件许可集,最后交上可执行文件有效集。根据能力逻辑关系,用户在执行程序时,产生的新进程既可以增加新的能力,也可以禁用一些能力;同一个用户执行不同的程序可以具有不同的特权;不同的用户执行相同的程序也可以具有不同的特权。这种灵活性不仅符合操作***传统的授权模式,也为实施最小特权和分权奠定了基础。
能力逻辑关系的计算分布在三个过程:一是用户登录,二是fork操作,三是exec可执行文件。
本发明利用操作***的PAM(Pluggable Access Module,可插拔式认证模块)机制,设计一个会话类型的PAM最小特权模块——“pam_lpa.so”。它负责在用户登录时把用户能力传递给用户的shelll进程。登录时,如果用户成功通过鉴别,login进程就会调用PAM最小特权模块“pam_lpa.so”执行。在支持角色的***中,它首先检索用户角色文件“user_role.conf”,查出用户承担的角色,然后根据该角色检索角色能力文件“role_cap.conf”,最终确定用户能力Ci(u);在不支持角色的***中,则直接检索用户能力文件“user_cap.conf”,确定用户能力Ci(u);最后调用***调用把Ci(u)赋给该用户第一个进程,即shell进程能力状态的继承集Ci(shell)。通过PAM,本发明不需要修改操作***原有的任何程序,就能将角色能力传递到用户的shell进程。
操作***fork的子进程,除进程标识符pid不同外,实际上是父进程的拷贝。因此子进程的能力状态也是复制父进程的,保持不变。
当进程exec一个可执行文件时,本发明通过特权控制模块中的“能力计算器”来重新计算该进程的能力状态。“能力计算器”计算新的进程能力状态的过程是:“能力计算器”的输入是进程的继承集Ci(p)和存放在文件扩展属性中的可执行文件的能力状态<Ci(f),Cp(f),Ce(f)>,输出则是进程新的能力状态<Ci(p),Cp(p),Ce(p)>。首先,进程的继承集保持不变,其次,进程新的许可集等于可执行文件继承集和进程继承集的交集并上可执行文件的许可集,最后,进程新的有效集等于进程新的许可集和可执行文件有效集的交集。
为了易于使用和便于分权,本发明采用这样的缺省设置:一是,操作***1号进程init是所有进程的父进程,它的能力状态在内核中指定,其继承集、许可集和有效集均是能力全集,即能力状态等于<∑,∑,∑>;二是,对于***中的任意文件,如果没有特意设置,其能力状态缺省为<∑,φ,∑>,即继承集和有效集是全集,而许可集是空集;三是,如果不进行特别的设置,任意角色或任意用户的能力缺省为空集。把上面的缺省值代入能力逻辑关系,就会发现对于用户能力为Ci(u)的特权用户,其进程特权就是Ci(u),而对于能力为空的普通用户,其进程没有任何特权。
基于能力逻辑关系和特权最小化模型,本发明可以控制***中的每个程序即操作***中按特权大小划分的普通程序、setuid和setgid程序以及守护程序生成的进程仅仅拥有完成它的合法功能所必需的能力,从而实现最小特权,具体方法是:
对于普通程序,其能力状态一般不需要进行特别的设置,直接取缺省值<∑,φ,∑>。因此,根据能力逻辑关系,没有特权的普通用户执行普通程序,其特权为空,特权用户执行普通程序,获得的特权就是该用户的能力。如果把普通程序的能力状态置成<φ,φ,φ>,则它无论是被特权用户还是普通用户执行,都没有任何特权;
对于setuid和setgid程序,在传统的操作***中,普通用户往往通过执行它们来获取超级用户的所有特权,而实际上这些程序仅仅需要一部分特权就可以完成它的功能。本发明控制这些程序生成的进程仅仅具备完成功能所必需的特权的方法是设置程序能力状态的许可集和有效集均等于所必需的能力。例如setuid程序passwd需要CAP_DAC_OVERRIDE(覆盖自主访问控制)能力来修改‘/etc/passwd’和‘/etc/shadow’等文件。因此,设置passwd的能力状态为<φ,{CAP_DAC_OVERRIDE},{CAP_DAC_OVERRIDE}>,根据能力逻辑关系,任何用户执行passwd程序,其特权为{CAP_DAC_OVERRIDE},而不是以前的能力全集∑;
守护程序常以超级用户身份向外提供各种服务,因此拥有全部的特权。本发明控制守护程序仅仅具备完成功能所必需的特权的方法是把守护程序能力状态的继承集和有效集置为它所必需的能力,而许可集置为空集。同时,守护程序是以超级用户root的身份启动,而Ci(root)=∑。将这些值代入能力逻辑关系,就会发现对应进程的特权等于守护程序能力状态的继承集。例如samba服务程序smbd,它必需的能力是CAP_SETUID(允许setuid操作),CAP_SETGID(允许setgid操作)和CAP_NET_BIND_SERVICE(允许绑定1024以下的TCP/UDP端口)。因此,设置它的能力状态为<{CAP_SETUID,CAP_SETGID,CAP_NET_BIND_SERVICE},φ,{CAP_SETUID,CAP_SETGID,CAP_NET_BIND_SERVICE}>,则smbd进程的特权就是{CAP_SETUID,CAP_SETGID,CAP_NET_BIND_SERVICE},而不是以前的能力全集∑。
采用本发明可以达到以下的技术效果:
1.本发明可以有效地对***中的应用或进程实施最小特权,使普通程序、setuid和setgid程序以及守护程序生成的进程都仅具有完成其功能的特权,从而把安全威胁降低到最小,且对***性能无任何影响。
2.本发明引入角色能力和用户能力,使最小特权管理和操作***的基于标识的访问控制融为一体,极大提高了***的可配置性和易用性。另外,利用角色能力和用户能力的概念,可以方便地将操作***原来的超级用户划分成多个相互制约的管理员,如***管理员、安全管理员、审计管理员等,从而大大降低超级用户所带来的安全威胁;
3.采用本发明可以方便地实施管理员分权,即把超级用户划分成多个管理员,使每个管理员仅具有部分特权,从而降低***被攻破的危险。假设把***的超级用户划分为***管理员sysadm、安全管理员secadm和审计管理员auditadm,则他们能力的并集等于能力全集,即Ci(sysadm)∪Ci(secadm)∪Ci(auditadm)=∑。根据能力逻辑关系和缺省设置,用户sysadm进程的特权就是Ci(sysadm);用户secadm进程的特权就是Ci(secadm);用户auditadm进程的特权就是Ci(auditadm)。
4.采用本发明,使得操作***既支持进程能力,又支持文件能力。并且利用文件扩展属性存储文件能力状态,摆脱了用配置文件存储的繁杂和低效;
5.角色能力和用户能力在登录时通过PAM机制传递给用户的shell进程,不需要修改操作***已有的登录程序,如login、getty等,降低了实现难度。
6.本发明通用性强,本发明特权最小化模型所包括的***调用和库函数完全兼容于Posix1003.1e的能力规范,符合该规范的应用不需要做任何移植工作就可以直接在采用本发明的操作***上编译并运行。
7.采用内核动态模块形式实现特权控制,具有很好的***裁减性和环境适应性。采用本发明的操作***可以轻而易举地配置成有最小特权管理和无最小特权管理两种模式,以适应高安全要求的环境和普通的应用环境。
8.本发明所采用的缺省设置可以有效提高***的易用性和安全性,在***启动和关闭时,需要执行大量的特权操作,而利用缺省设置则不需要进行繁琐的设置,***就可以正常运行。
附图说明
图1是本发明基于能力的最小特权管理模型结构图;
图2是本发明的PAM最小特权模块在用户登录时的工作过程示意图;
图3是exec可执行程序时,本发明的“能力计算器”计算新的进程能力状态的过程示意图;
图4是特权检查器进行特权检查的流程。
具体实施方式
图1是本发明基于能力的特权最小化模型结构图,该模型分为核内和核外两部分,核内由以动态模块方式实现的特权控制模块和***调用组成,核外由PAM最小特权模块、函数库、命令行工具和图形化工具组成。特权控制模块主要包括能力计算器和特权检查器,能力计算器在exec进程时根据能力逻辑关系计算进程的最终特权;特权检查器则在各个特权操作点判断进程是否拥有相应的访问特权;特权控制模块采用***调用的方式向用户层提供查看文件的能力状态、设置文件的能力状态、查看进程的能力状态、设置进程的能力状态、查看和设置角色能力、查看和设置用户的角色、查看和设置用户能力的功能。PAM最小特权模块负责在登录时将角色能力或用户能力传递给用户的第一个进程——shell进程;在***调用的基础上,本发明提供一个函数库用于操作角色能力、用户能力以及进程和文件的能力状态,这套库函数还包括能力的二进制表示和文本表示之间的相互转换。能力的二进制表示通常采用长整数,以便于操作;能力的文本表示则采用可读性强的字符串表示。在函数库的基础上,本发明设计一套命令行工具和一个图形化工具,它们完成相同的功能,包括查看和设置文件的能力状态,查看进程的能力状态,查看和设置角色能力,查看和设置用户的角色以及查看和设置用户能力。命令行工具提供给高级用户使用,而一般用户则可以使用图形化工具。
图2描述了PAM最小特权模块“pam_lpa.so”在用户登录时的工作过程。登录时,如果用户成功通过鉴别,login进程就会调用PAM最小特权模块“pam_lpa.so”执行。该模块首先检索“user_role.conf”文件获取用户的角色,然后根据角色查找“role_cap.conf”文件,从而得到用户能力Ci(u),最后调用设置进程能力状态的***调用把它赋给用户shell进程能力状态的继承集Ci(shell)。图中虚线部分表示操作***不支持角色时,PAM最小特权模块则直接检索“user_cap.conf”文件获取用户能力。
图3是exec可执行程序时,本发明的“能力计算器”计算新的进程能力状态的过程。图中的空圆弧框表示“∩”操作,带“+”号的圆弧框表示“∪”操作。“能力计算器”的输入是进程的继承集Ci(p)和可执行程序的能力状态<Ci(f),Cp(f),Ce(f)>,输出则是进程新的能力状态<Ci(p),Cp(p),Ce(p)>。首先,进程的继承集保持不变,其次,进程新的许可集等于可执行程序继承集和进程继承集的交集并上可执行程序的许可集,最后,进程新的有效集等于进程新的许可集和可执行程序有效集的交集。
图4是“特权检查器”进行特权检查的流程,虚线框指的就是“特权检查器”。内核利用“特权检查器”在各个特权操作点检查进程的特权以决定是否允许操作。在特权操作进行前,内核首先判断开关变量lpa_enabled是否为1,如果是1,则表示特权控制模块已经加载。此时,调用特权检查器判断进程能力状态的有效集Ce(p)是否具有相应的能力,如果有,则允许操作,否则拒绝操作;如果lpa_enabled为0,则判断进程的有效用户标识euid是否为超级用户root,是,则允许操作,否则拒绝操作。
本发明已成功应用于银河麒麟操作***(YHKylin,863“服务器操作***内核”项目所推出的国产操作***),有效提高了它的安全性,取得了良好的应用效果,且本发明也可比较容易地应用到Linux和BSD***中。

Claims (9)

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)是否具有相应的能力,如果有,则允许操作,否则拒绝操作;如果lpa_enabled为0,则判断进程的有效用户标识euid是否为超级用户root,是,则允许操作,否则拒绝操作。
7.如权利要求1所述的基于能力的特权最小化方法,其特征在于角色能力、用户能力和文件能力最终传播到进程能力以发挥效用,这种传播体现在三个过程:一是用户登录,二是fork操作,三是exec可执行程序:
7.1本发明利用操作***的PAM即可插拔式认证模块机制,设计一个会话类型的PAM最小特权模块——“pam_lpa.so”,它负责在用户登录时把用户能力传递给用户的shelll进程;登录时,如果用户成功通过鉴别,login进程调用PAM最小特权模块“pam_lpa.so”:在支持角色的***中,它首先检索用户角色文件“user_role.conf”,查出用户承担的角色,然后根据该角色检索角色能力文件“role_cap.conf”,最终确定用户能力Ci(u);在不支持角色的***中,则直接检索用户能力文件“user_cap.conf”,确定用户能力Ci(u);最后调用***调用把Ci(u)赋给该用户第一个进程,即shell进程能力状态的继承集Ci(shell);通过PAM,本发明不需要修改操作***原有的任何程序,就能将角色能力传递到用户的shell进程;
7.2操作***fork的子进程,除进程标识符pid不同外,实际上是父进程的拷贝,因此子进程的能力状态也是复制父进程的,保持不变;
7.3当进程exec一个可执行程序时,本发明通过特权控制模块中的“能力计算器”来重新计算该进程的能力状态,“能力计算器”计算新的进程能力状态的过程是:“能力计算器”的输入是进程的继承集Ci(p)和可执行程序的能力状态<Ci(f),Cp(f),Ce(f)>,输出则是进程新的能力状态<Ci(p),Cp(p),Ce(p)>,首先,进程的继承集保持不变,其次,进程新的许可集等于可执行程序继承集和进程继承集的交集并上可执行程序的许可集,最后,进程新的有效集等于进程新的许可集和可执行程序有效集的交集。
8.如权利要求1所述的基于能力的特权最小化方法,其特征在于为了易于使用和便于分权,本发明采用这样的缺省设置:一是,操作***1号进程init是所有进程的父进程,它的能力状态在内核中指定,其继承集、许可集和有效集均是能力全集,即能力状态等于<∑,∑,∑>;二是,对于***中的任意文件,如果没有特意设置,其能力状态缺省为<∑,Φ,∑>,即继承集和有效集是全集,而许可集是空集;三是,如果不进行特别的设置,任意角色或任意用户的能力缺省为空集。把上面的缺省值代入能力逻辑关系,就会发现对于用户能力为Ci(u)的特权用户,其进程特权就是Ci(u),而对于能力为空的普通用户,其进程没有任何特权。
9.如权利要求1所述的基于能力的特权最小化方法,其特征在于基于能力逻辑关系和特权最小化模型,本发明可以控制***中的每个程序即普通程序、setuid和setgid程序以及守护程序生成的进程仅仅拥有完成它的合法功能所必需的能力,从而实现最小特权,具体方法是:
9.1对于普通程序,其能力状态一般不需要进行特别的设置,直接取缺省值<∑,Φ,∑>,即没有特权的普通用户执行普通程序,其特权为空,特权用户执行普通程序,获得的特权就是该用户的能力,如果把普通程序的能力状态置成<Φ,Φ,Φ>,则它无论是被特权用户还是普通用户执行,都没有任何特权;
9.2对于setuid和setgid程序,在传统的操作***中,普通用户往往通过执行它们来获取超级用户的所有特权,而实际上这些程序仅仅需要一部分特权就可以完成它的功能,本发明控制这些程序仅仅具备完成功能所必需的特权的方法是设置程序能力状态的许可集和有效集均等于所必需的能力;
9.3守护程序常以超级用户身份向外提供各种服务,因此拥有全部的特权,本发明控制守护程序仅仅具备完成功能所必需的特权的方法是将守护程序能力状态的继承集和有效集置为它所必需的能力,而许可集置为空集,同时,守护程序是以超级用户root的身份启动,而Ci(root)=∑,将这些值代入能力逻辑关系,就会发现对应进程的特权等于守护程序能力状态的继承集。
CN 200410046856 2004-10-22 2004-10-22 基于能力的特权最小化方法 Pending CN1763710A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 200410046856 CN1763710A (zh) 2004-10-22 2004-10-22 基于能力的特权最小化方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200410046856 CN1763710A (zh) 2004-10-22 2004-10-22 基于能力的特权最小化方法

Publications (1)

Publication Number Publication Date
CN1763710A true CN1763710A (zh) 2006-04-26

Family

ID=36747862

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 200410046856 Pending CN1763710A (zh) 2004-10-22 2004-10-22 基于能力的特权最小化方法

Country Status (1)

Country Link
CN (1) CN1763710A (zh)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101997912A (zh) * 2010-10-27 2011-03-30 苏州凌霄科技有限公司 基于Android平台的强制访问控制装置及控制方法
CN103745157A (zh) * 2014-01-11 2014-04-23 浪潮电子信息产业股份有限公司 一种基于pam模块的***分权的方法
CN105653960A (zh) * 2015-12-31 2016-06-08 北京元心科技有限公司 一种Linux能力分配方法及装置
CN109831419A (zh) * 2018-05-04 2019-05-31 360企业安全技术(珠海)有限公司 shell程序权限的确定方法及装置
CN110598393A (zh) * 2018-06-12 2019-12-20 杨力祥 一种安全用户架构及权限控制方法
CN113299013A (zh) * 2021-05-20 2021-08-24 中铁信安(北京)信息安全技术有限公司 一种智能文件夹及其控制方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101997912A (zh) * 2010-10-27 2011-03-30 苏州凌霄科技有限公司 基于Android平台的强制访问控制装置及控制方法
CN103745157A (zh) * 2014-01-11 2014-04-23 浪潮电子信息产业股份有限公司 一种基于pam模块的***分权的方法
CN105653960A (zh) * 2015-12-31 2016-06-08 北京元心科技有限公司 一种Linux能力分配方法及装置
CN109831419A (zh) * 2018-05-04 2019-05-31 360企业安全技术(珠海)有限公司 shell程序权限的确定方法及装置
CN110598393A (zh) * 2018-06-12 2019-12-20 杨力祥 一种安全用户架构及权限控制方法
CN113299013A (zh) * 2021-05-20 2021-08-24 中铁信安(北京)信息安全技术有限公司 一种智能文件夹及其控制方法
CN113299013B (zh) * 2021-05-20 2023-06-27 中铁信安(北京)信息安全技术有限公司 一种智能文件夹及其控制方法

Similar Documents

Publication Publication Date Title
Pitoura et al. Object orientation in multidatabase systems
Lecluse et al. O2, an object-oriented data model
US8312459B2 (en) Use of rules engine to build namespaces
Liu et al. Fabric: Building open distributed systems securely by construction
US20020166052A1 (en) System and methods for caching in connection with authorization in a computer system
US20030115487A1 (en) Object security boundaries
US7685597B1 (en) System and method for management of characterized resources
DE60018505T2 (de) Vertraute Überprüfung von Rechnerprogrammodulen
CN1773413A (zh) 角色定权方法
US20100287597A1 (en) Security policy trigger for policy enforcement
Jordan et al. Scaling J2EE™ application servers with the Multi‐tasking Virtual Machine
US20200342008A1 (en) System for lightweight objects
Julin et al. Generalized Emulation Services for Mach 3.0: Overview, Experiences and Current Status.
Clamen Type evolution and instance adaptation
Jaeger et al. Support for the file system security requirements of computational e-mail systems
CN1763710A (zh) 基于能力的特权最小化方法
Wood Coordination with attributes
Hagimont et al. Persistent shared object support in the Guide system: evaluation & related work
Kleindienst et al. Lessons learned from implementing the CORBA persistent object service
Tomlinson et al. The Carnot extensible services switch (ESS)—Support for service execution
Dias et al. Enforcing history-based security policies in mobile agent systems
Albano et al. A strongly typed, interactive object-oriented database programming language
Saleh Object model in Java: elements and application
Fernandez et al. Securing design patterns for distributed systems
Spengler Increasing performance and granularity in role-based access control systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication