本篇文章为大家展示了如何进行Linux PIE/stack 内存破坏漏洞CVE-2017-1000253分析,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
0x00 事件描述
2015年4月14日,Michael Davidson发现 PIE(Position Independent Executable)机制允许将一部分应用程序的数据段放置在超过预留的内存区域,可能会造成内存越界,进而导致提权,并在Linux Source Tree上提交了补丁a87938b2e246b81b4fb713edb371a9fa3c5c3c86。
同年5月, Linux 3.10.77版本更新了该补丁,但是并没有对该问题的重要性作出准确的评估,故许多发行版很长一段时间里没有更新该补丁,导致漏洞一直存在。
2017年9月26日,OSS-SEC邮件组中发布了与该漏洞相关的信息,并表示该漏洞编号为CVE-2017-1000253。同时,相关受影响的Linux发行版也发布了该漏洞相关的更新补丁。
经过360CERT评估,该漏洞可利用风险等级高,可用于Linux操作系统恶意本地提权root,建议受影响用户尽快完成相应更新。
0x01 事件影响面
影响等级
漏洞风险等级高,影响范围广。
影响版本
- 2017年09月13日前发行的 CentOS 7 全版本(版本1708前)
- 2017年08月01日前发行的 Red Hat Enterprise Linux 7 全版本(版本7.4前)
- 所有版本的CentOS 6 和 Red Hat Enterprise Linux 6
修复版本
Kernel 3.10.0-693 以及之后的版本
具体的发行版:
- Debian wheezy 3.2.71-1
- Debian jessie 3.16.7-ckt11-1
- Debian (unstable) 4.0.2-1
- SUSE Linux Enterprise Desktop 12 SP2
- SUSE Linux Enterprise Desktop 12 SP3
- SUSE Linux Enterprise Server 12 GA
- SUSE Linux Enterprise Server 12 SP1
- SUSE Linux Enterprise Server 12 SP2
- SUSE Linux Enterprise Server 12 SP3
- Red Hat Enterprise MRG 2 3.10.0-693.2.1.rt56.585.el6rt
- Red Hat Enteprise Linux for Realtime 3.10.0-693.rt56.617
0x02 漏洞信息
Linux环境下,如果应用程序编译时有“-pie”编译选项,则load_elf_binary()将会为其分配一段内存空间,但是load_elf_ binary()并不考虑为整个应用程序分配足够的空间,导致PT_LOAD段超过了mm->mmap_base。在x86_64下,如果越界超过128MB,则会覆盖到程序的栈,进而可能导致权限提升。
官方提供的内存越界的结果图:
官方补丁提供的方法是计算并提供应用程序所需要的空间大小,来防止内存越界。
0x03 修复方案
强烈建议所有受影响用户,及时进行安全更新,可选方式如下:
相关Linux发行版已经提供了安全更新,请通过 yum 或 apt-get 的形式进行安全更新。
自定义内核的用户,请自行下载对应源码补丁进行安全更新。
补丁地址:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=a87938b2e246b81b4fb713edb371a9fa3c5c3c86
上述内容就是如何进行Linux PIE/stack 内存破坏漏洞CVE-2017-1000253分析,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注编程网行业资讯频道。