首页 理论教育 Linux内核安全:SMACK扩展属性详解

Linux内核安全:SMACK扩展属性详解

时间:2023-11-22 理论教育 版权反馈
【摘要】:相比于SELinux只用到一个扩展属性“security.selinux”,SMACK用到的扩展属性非常多。为了应对层出不穷的挑战,SMACK引入了多个扩展属性:SMACK64这是最基本的扩展属性,文件客体的安全标签来自此属性。SMACK64EXEC当进程执行exec系统调用时,进程的新安全标签来自被执行文件的“security. SMACK64EXEC”属性。SMACK64MMAP这个扩展属性针对的是共享库。SMACK64IPINSMACK64IPOUT这两个扩展属性是套接字专有的扩展属性,SMACK64IPIN用于访问控制,比如判断当前进程能不能发送数据包到某个套接字。

Linux内核安全:SMACK扩展属性详解

简单是有代价的!相比于SELinux只用到一个扩展属性“security.selinux”,SMACK用到的扩展属性非常多。原因是SMACK的策略过于简单了,简单的策略难以应付复杂的系统。为了应对层出不穷的挑战,SMACK引入了多个扩展属性:

(1)SMACK64

这是最基本的扩展属性,文件客体的安全标签来自此属性。

(2)SMACK64EXEC

当进程执行exec系统调用时,进程的新安全标签来自被执行文件的“security. SMACK64EXEC”属性。

(3)SMACK64TRANSMUTE

这个属性作用于目录,当其值为“TRUE”时,在此目录下新建的文件/目录的安全标签(扩展属性SMACK64)值来自此目录的安全标签(扩展属性SMACK64)。

(4)SMACK64MMAP(www.xing528.com)

这个扩展属性针对的是共享库(shared library)。通过这个标签为文件赋予了一个新的安全标签——作为共享库的安全标签。当进程通过mmap系统调用载入共享库文件时,文件的共享库标签不能拥有超越进程标签的操作许可。

举个例子,进程标签为normal,一个共享库文件的共享库标签为high。进程要访问的一个文件的标签为secret。系统策略为:

当进程加载共享库时就会失败,因为共享库high对secret的操作许可rwa超越了进程对“secret”的操作许可wa。

SMACK的这种设计不好理解,而且有两个潜在的问题。首先,文件成了某种意义上的主体,这在理论上不好解释;其次,mmap系统调用不止用于加载共享库文件。

(5)SMACK64IPIN

(6)SMACK64IPOUT

这两个扩展属性是套接字专有的扩展属性,SMACK64IPIN用于访问控制,比如判断当前进程能不能发送数据包到某个套接字。SMACK64IPOUT用于给发出的包(packet)赋安全标签

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈