20233808《Linux内核原理分析与设计》第十三周作业

分组:和20233809黄雅琦

实验楼

Linux Capability探索实验

1.重新下载一个libcap库

2.在一个capability系统中,当一个程序运行时,对应的线程会初始化一系列capabilities(令牌)。当线程尝试访问某个对象时,操作系统会检查该线程的capabilities,并决定是否授权访问。

capabilities如何移除root特权程序中的不必要的权利

事例1:

ping命令需要打开RAW套接字,该操作需要root特权。但有了capability,我们就可以杯酒释兵权了,分配cap_net_raw给ping就不需要root权限即可运行:

事例2:

证明一开始无法修改密码,但是在分配了cap之后就可以成功修改密码

3.一个线程具有3组capability设置:允许(permitted P),可继承(inheritable I),和有效(effective E)。允许组由允许线程使用的cap组成,但其中的cap可能还没有激活。有效组由线程当前可以使用的cap组成。有效组是允许组的子集。线程可以随时更改有效组的内容只要不越过允许组的范围。可继承组是在程序运行exec()调用后计算新子线程的cap组用的。

当一个线程fork新线程的时候,子线程的cap组从父线程拷贝。当在一个线程中运行一个新程序时,它的新cap组将根据以下公式计算:new后缀指新计算值,p前缀指线程,f前缀指文件cap。I,P,E分别指代 inheritable,permitted,effective,是一个cap位一个cap位计算的。

pI_new = pI
pP_new = fP | (fI & pI)
pE_new = pP_new if fE = true
pE_new = empty if fE = false

为了让程序操作cap变得简单,添加以下三个函数到 /home/shiyanlou/libcap-2.21/libcap/cap_proc.c 。

在 /home/shiyanlou/libcap-2.21/libcap 目录下新建一个 use_cap.c 文件,并分配cap_dac_read_search给它。

问题1: 当我们想动态调整基于ACL访问控制权限的数量时,应该怎么做?与capabilities比较哪种更加便捷?

回答1:

要动态调整基于ACL访问控制权限的数量,可以使用ACL的管理工具来添加或删除特定的权限。

与ACL相比,capabilities更加便捷,因为它们将权限直接与对象关联起来,而不需要维护一个单独的ACL列表。通过在对象上分配或撤销capabilities,可以更加灵活地管理权限,而无需修改ACL列表。

问题2: 当程序(以普通用户运行)禁用cap A时,它遭到了缓冲区溢出攻击。攻击者成功注入恶意代码并运行。他可以使用cap A么? 如果线程删除了cap A呢,可以使用cap A么?

回答2:

当程序禁用了cap A时,即使遭到了缓冲区溢出攻击并成功注入恶意代码,攻击者也无法直接使用cap A。这是因为即使恶意代码能够运行,但它仍受到程序本身所拥有的权限限制。

如果线程删除了cap A,那么攻击者可能会获得cap A的权限,并且可以使用它来执行特权操作。因此,即使程序禁用了cap A,但如果攻击者能够成功删除该权限,他们仍然可以利用它来执行特权操作。

问题3: 问题如上,改用竞态条件攻击。他可以使用cap A么? 如果线程删除了cap A呢,可以使用cap A么?

回答3:在这种情况下,如果攻击者成功利用竞态条件攻击获取了cap A的权限,那么他可以使用cap A来执行特权操作。

如果线程删除了cap A,那么攻击者可能会利用竞态条件攻击来在cap A被删除之前获取该权限,然后使用它来执行特权操作。

总结:跟使用ACL的访问控制相比,capabilities有其它优势:它可以动态调整大量线程的权限,这对于遵守最小权限原则是很有必要的。当线程中某个权限不再需要时,它应当移除所有相对应的capabilities。这样,即使线程被入侵了,攻击者也得不到已经被删除的capabilities。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值