Seebug漏洞平台2016年度报告
2016 年 10 月,Linux公开了一个名为Dirty COW的内核漏洞 CVE-2016-5195,号称有史以来最严重的本地提权漏洞。Linux 内核的内存子系统在处理写时拷贝(Copy-on-Write)时存在条件竞争漏洞,可以使一个低权限用户修改只读内存映射文件,进而可能获取 root权限。 漏洞影响 在Linux内核版本在大于等于2.6. 22 且小于3. 9 时都受该漏洞的影响。攻击者可以获取低权限的本地用户后,利用此漏洞获取其他只读内存映射的写权限,进一步获取root权限。 漏洞详情 在进行需要调用内核get_user_pages()函数且 force 参数被置为1 的写操作时(这里以对/proc/self/mem 进行写操作为例)漏洞触发流程大致如下: 第一次需要获取内存对应的页面,由于缺页会调用faultin_page(),在调用过程中由于需要处理缺页错误执行了do_cow_fault()调用,即COW方式的调页。 第二次回到retry执行时,依旧调用faultin_page()函数,但是由于是写只读映射的内存所以会执行COW处理,在COW操作顺利完成返回到faultin_page()函数中时,FOLL_WRITE标志位被清掉(即去掉了FOLL_WRITE的权限要求)。 由于执行线程将让出CPU,进程转而执行另一线程,带MADV_DONTNEED参数的madvise()调用unmap清掉之前一直在处理的内存页,即对应的页表项(pte) 被清空了。 第三次回到retry执行时,又会与第一次做相同的操作,但不同的是调用do_fault()函数进行调页时FOLL_WRITE标志位被清掉了,所以执行的是do_read_fault()函数而非之前的 do_cow_fault()函数。 获取到do_read_fault()调页后对应的页表项后,就可以实现对只读文件的写入操作,造成越权操作。 3.3 Nginx 权限提升漏洞(CVE-2016-1247) 漏洞简介 2016 年 11 月 15 日,国外安全研究员 DawidGolunski 公开了一个新的 Nginx 漏洞 (CVE-2016-1247),能够影响基于 Debian 系列的发行版,Nginx作为目前主流的一个多用途服务器危害还是比较严重的,目前官方已对此漏洞进行了修复。 漏洞影响 Nginx 服务在创建 log 目录时使用了不安全的权限设置,可造成本地权限提升,恶意攻击者能够借此实现从 nginx/web 的用户权限 www-data 到root用户权限的提升。由于 Nginx 服务器广泛应用于 Linux 和 UNIX 系统,致使主流 GNU/Linux 发行版也都受到严重影响。 漏洞详情 在 Linux 系统下,我们可以通过编译一个含相同函数定义的 so 文件并借助/etc/ld.so.preload 文件来完成此操作,系统的 loader 代码中会检查是否存在/etc/ld.so.preload 文件,如果存在那么就会加载其中列出的所有 so 文件,它能够实现与 LD_PRELOAD 环境变量相同的功能且限制更少,以此来调用我们定义的函数而非原函数。此方法适用于用户空间的 so 文件劫持,类似于 Windows 下的 DLL 劫持技术。 (编辑:西安站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |