Linux 2.6.* 内核Capability LSM模块进程特权信任状本地权限提升漏洞
2005-01-10 19:42
901 查看
Linux内核Capability LSM模块进程特权信任状本地权限提升漏洞 (Linux,缺陷) |
涉及程序: |
Linux内核程序 |
描述: |
Linux内核Capability LSM模块进程特权信任状本地权限提升漏洞 |
详细: |
Linux Kernel是开放源代码操作系统Linux的内核。 Linux Kernel在处理Capability模块实现时存在问题,本地攻击者可以利用这个漏洞提升权限。 当特权操作由Capability LSM 模块控制时,系统基于进程信任状(creds)来仲裁特权操作。当Capability未被编译进内核时,内核使用默认的安全模块(security/dummy.c)仲裁特权操作,机制非常简单,仅仅检查进程euid、fsuid(进行文件系统相关特权操作时)是否为0。在这种情况下,dummy模块根本不关心进程的信任状,每个进程的信任状都拷贝其父进程的信任状。追根溯源,每个进程的信任状无论进程用户是否为超级用户,最终都拷贝Init进程的信任状,信任状中包含有超级用户进程的所有权能。在根据用户ID进行特权判断情况下,此错误未被激发。但在插入Capability模块后,特权机制转为根据进程信任状进行判断,而此前存在的任何进程的信任状都与Init进程一致,导致这些进程都具有超级用户root的特权。此错误的本质是装载Capability模块时没有对已有进程的信任状按Capability机制的要求进行重新计算。试验表明,此错误出现在2.6.* Linux内核中。 <*来源:liangbin (liangbin@venustech.com.cn) 链接:http://marc.theaimsgroup.com/?l=bugtraq&m=110384535113035&w=2 *> 受影响系统: Linux kernel 2.6.9 Linux kernel 2.6.8 Linux kernel 2.6.7 Linux kernel 2.6.6 Linux kernel 2.6.5 Linux kernel 2.6.4 Linux kernel 2.6.3 Linux kernel 2.6.2 Linux kernel 2.6.1 Linux kernel 2.6 |
攻击方法: |
以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负! 当Capability模块未被编译进内核时,(如果已经编译进内核,须disable相应编译选项后重新编译内核)。在装载Capability模块前,以普通用户身份允许一个vim编辑器,在vim种输入命令: :r /etc/shadow vim 将回应 “can't open file /etc/shadow”,这个访问root文件操作的操作被拒绝。 不要终结vim,转到其它控制台以root身份登录,插入Capability模块: #modprobe capability 在模块被转载后,回到vim中再次尝试打开shadow文件,将发现能够以普通用户读写并且保存(w!)shadow文件!根本的原因是vim进程的信任状中包含了权能CAP_DAC_OVERRIDE和CAP_DAC_READ_SEARCH,因而能够进行超越访问控制策略的特权操作。 使用以下命令可查看vim的信任状: $cat /proc/2454/status (2454 是vim进程的pid) Name: vim State: S (sleeping) SleepAVG: 91% Tgid: 2454 Pid: 2454 PPid: 1552 TracerPid: 0 Uid: 500 500 500 500 Gid: 500 500 500 500 FDSize: 256 Groups: 500 VmSize: 9356 kB VmLck: 0 kB VmRSS: 2728 kB VmData: 856 kB VmStk: 16 kB VmExe: 1676 kB VmLib: 3256 kB Threads: 1 SigPnd: 0000000000000000 ShdPnd: 0000000000000000 SigBlk: 0000000000000000 SigIgn: 8000000000003000 SigCgt: 00000000ef824eff CapInh: 0000000000000000 CapPrm: 00000000ffffffff CapEff: 00000000fffffeff 最后3行即是vim的信任状,可以看到它具有除了CAP_SETPCAP外的所有Capability权能。 以上测试在 2.6.* 和2.5.72-lsm1中通过。 |
解决方案: |
临时解决方法: 如果您不能立刻安装补丁或者升级,CNNS建议您采取以下措施以降低威胁: * 第三方补丁如下: 在 security/capability.c中加入以下代码 static void recompute_capability_creds(struct task_struct *task) { if(task->pid <= 1) return; task_lock(task); task->keep_capabilities = 0; if ((task->uid && task->euid && task->suid) && !task->keep_capabilities) cap_clear (task->cap_permitted); else task->cap_permitted = CAP_INIT_EFF_SET; if (task->euid != 0){ cap_clear (task->cap_effective); } else{ task->cap_effective = CAP_INIT_EFF_SET; } if(task->fsuid) task->cap_effective &= ~CAP_FS_MASK; else task->cap_effective |= CAP_FS_MASK; task_unlock(task); return; } 并且在已有capability_init 函数在其返回前加入以下代码: struct task_struct *task; read_lock(&tasklist_lock); for_each_process(task){ recompute_capability_creds(task); } read_unlock(&tasklist_lock); return 0; 厂商补丁: Linux ----- 目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本: http://www.kernel.org/ |
相关文章推荐
- [AD_LAB-04003] Linux 2.6.* 内核Capability LSM模块进程特
- 首页巡警v1.2及以下版本 本地权限提升漏洞(任意内核地址写入)
- Linux Kernel do_mremap VMA本地权限提升漏洞
- Serv-u Ftp Server 本地权限提升漏洞的终极防御
- PHP168 V6.01/6.02权限提升及暴本地路径漏洞
- HP-UX SNMP 守护进程存在两个漏洞使用本地攻击者能获得管理员权限
- Linux Kernel 多个本地权限提升漏洞
- Samba NSS_Info插件本地权限提升漏洞
- Linux Kernel 本地权限提升漏洞
- Windows 图像捕获服务本地权限提升漏洞
- Symantec AntiVirus symtdi.sys驱动本地权限提升漏洞
- Serv-U3.X-6.0本地权限提升漏洞的防御方案
- Windows XP 核心驱动 AFD.sys 本地权限提升漏洞分析(ms08066)
- glibc $ORIGIN 本地权限提升漏洞
- Linux Kernel 'perf_event.c'本地权限提升漏洞
- 转载的Serv-u 本地权限提升漏洞的终极防御
- Linux Kernel ‘CLONE_NEWUSER|CLONE_FS’本地权限提升漏洞
- NVidia私有Linux驱动发现权限提升漏洞
- Windows XP 核心驱动 AFD.sys 本地权限提升漏洞分析(ms08066)
- Kingsoft 'KAVSafe.sys' Driver 本地权限提升漏洞