SuDump: Exploiting suid binaries through the kernel笔记

Table of Contents

今天看到一个案例,简单分析一下:
https://alephsecurity.com/2021/10/20/sudump/
https://www.openwall.com/lists/oss-security/2021/10/20/2

简介

这个案例通过suid以及coredump来达到向任意目录写入coredump文件的目的.

实现原理

在任意目录升成coredump文件

  1. suid的root用户可执行文件
  2. 该可执行文件会调用 setuid(0) and setgid(0)
  3. 该程序会通过execve来运行其他的可执行文件

满足上述条件之后,我们就可以达到在任意目录写入文件的目的.
文章中发现sudo命令刚好可以满足要求

在coredump中加入可以自定义的脚本

XAUTHORITY这个环境变量,在sudo中可以原封不动的通过带到子进程中, 通过设置这个环境变量,就可以在coredump中带入任意的字符串

执行coredump中的脚本

  1. 需要有其他的程序来执行我们生成的coredump中的shell脚本/其他命令
    Logrotate刚好可以满足要求.
    • 这个程序配置文件中可以写入脚本,命令
    • 这个程序在读取配置文件时可以跳过非字符串的内容, 不会因为里边有不合法内容而崩溃.
  2. 在logrotate重启后,我们生成的coredump伪装的配制文件就会被加载,进而执行通过XAUTHORITY环境变量自定义的shell

总结

在这个例子中,通过一些小组合就可以成功获取到root权限. 漏洞中可能的解决方案是在内核中将suid进程的RLIMIT_CORE设置成0,但是这样会有很多之前能正常产生coredump的地方就无法再升成coredump了。

在这里案例中,后续的fix是个大问题,既不能修改以前合理的功能要求,又要封堵掉这个漏洞,贴子中的解决方案看似已经是影响最小的了。

Contact me via :)
虚怀乃若谷,水深则流缓。