Linux 脚本执行:由一个补丁分析说起

事情背景 补丁链接:a4ae32c71fe9 (“exec: Always set cap_ambient in cap_bprm_set_creds”) 补丁信息中提到,该补丁是为了确保 cap_bprm_set_creds() 每次都会设置 cap_ambient 变量。另外还提到了下述内容: … if there is a suid or sgid script with an interpreter that has neither the suid nor the sgid bits set the interpreter should be able to accept …

关于一个神奇的 Linux 目录权限问题的探究

TL;DR su 与单纯的 set{u,g}id 不一样:前者会通过 setgroups 系统调用来设置进程的 Supplementary Group1;而后者不会,只会修改进程的 {,s,e,fs}{u,g}id。 Supplementary Group 在内核中体现为 struct cred 下的 group_info,本质上是一个长度不固定的 gid 数组(类似 C++ 中的 string_view) 通过内核代码(init_cred 和 init_groups)确认,内核不会为进程添加 Supplementary Group;且 /etc/group 中也没有对应的条目,但 root 用户进程的 Supplementary …

CVE-2021-43057 分析

0x00 基本信息 信息总览:NVD 链接 漏洞披露:bugs.chromium.org 漏洞评估:CVSS 7.8 上游补丁:链接 0x01 详细描述 在 selinux_ptrace_traceme 函数(即 SELinux 对 PTRACE_TRACEME 的 LSM 接口的实现)中发现一个 Use-After-Free 问题,该问题是由于错误地尝试获取其他内核任务的*主体凭证(Subjective Credential)*而导致的。具体情况如下: 原先在 SELinux 中,有个函数 task_sid() 可以获取一个内核任务的*客体凭证(Objective Credential)*所对应的 SID,但却被用在了一些应该使用 …

一个由动态库对其他动态库的依赖导致的问题

感觉难以解决的编译问题大多是链接的问题,其中大多是动态链接的问题,而这其中又大多是涉及要加 -l 选项的动态库的动态链接问题。 问题场景 编译可执行程序 UnitTest 时报错: 1Scanning dependencies of target UnitTest 2[ 16%] Building CXX object CMakeFiles/UnitTest.dir/test/unit_test.cpp.o 3[ 33%] Linking CXX executable UnitTest 4/home/ubuntu/project/build/libA.so: undefined reference to `dlopen' …

“7/28 XX 版本容器 at 大面积失败问题”分析报告

遗留问题:把 struct mm 放到 file->private_date 中,是否有可能导致泄漏? 情况简述 XXX(xxxxxxxx)2021-07-29 14:32 @XX 有修改引入引起这边容器AT大面积失败 问题引入补丁:bfb819ea20ce (“proc: Check /proc/$pid/attr/ writes against file opener”) 修补补丁: 591a22c14d3f (“proc: Track /proc/$pid/attr/ opener mm_struct”) ,在修复原问题的基础上引入了新问题。 问题现场:Launchpad …