【glibc2.29】新增保护机制

新增防护机制

1、free
1.1、tcache

在这里插入图片描述
通过注释可以看到新增的 key 是为了检测 double free 的。
在这里插入图片描述
e->key=tcache,这个 tcache 就是:
在这里插入图片描述
也就是 tcache_perthread_struct 的地址,在调试中也就是这里:
在这里插入图片描述
即:
在这里插入图片描述
在这里插入图片描述
循环遍历 tcache 链表上所有的 chunk 进行对比,所以 tcache 的 double free 挂了。但是由于 tcache 的特性,他的利用还是要比其他 bins 方便很多。
绕过方式:根据上图,只有当key和tcache相等时才会去判断是否double free(所以就是说并不是每一个free的chunk都会被检查是否是double free),而如果程序中正好有漏洞可以把 key 改了(包括但不限于UAF),就不满足判断,跳过这段检查了

1.2、chunk extend

在这里插入图片描述
判断了 presize 和 要合并的 chunk 的 size 是否相同。(我记得在要合并得堆块里伪造chunk 头,然后 presize 和这个伪造得数据相同应该可以,具体以后再记)

2、malloc
2.1、unsorted bin

先是 2.23 的这部分的检查:
在这里插入图片描述
这是 2.29 的:
在这里插入图片描述
原本只是对 size 的一个检查,但是 2.29 里增加了:
ⅰ. 对下一个相邻 chunk 的 size 的检查
ⅱ. 对下一个相邻 chunk 的 prev_size 的检查
ⅲ. 检查 unsorted bin 链表的完整性,啊这。。。
ⅳ. 对下一个 chunk 的 prev_inuse 位进行检查。
这么多检查,感觉 unosorted bin attack 很难利用了。上面第三条在 2.28 中就进行了检查。

2.2、top chunk

在这里插入图片描述
增加了对 top chunk 的 size 的检查,遏制了 house of force 的攻击。

参考链接:
ex师傅
KMFL师傅

Ubuntu 16.04默认使用的glibc版本可能是较旧的,如果你想升级到glibc 2.29,需要注意的是16.04已经停止官方支持,并且glibc 2.29并不直接兼容这个发行版。然而,你可以通过手动编译安装或使用第三方软件源的方式来尝试。 **步骤一:更新软件包列表** ```bash sudo apt-get update && sudo apt-get upgrade ``` **步骤二:检查当前glibc版本** ```bash dpkg -l | grep glibc ``` **步骤三:如果需要编译安装** 由于Ubuntu 16.04不是最新版本,可能会遇到依赖问题。这通常涉及到从源码编译安装,你需要先下载glibc源码,然后编译并安装: 1. 下载源码:访问glibc官网 https://www.gnu.org/software/libc/releases/ 或者 GitHub https://github.com/gnu/glibc ,找到适合16.04的tarball版本。 2. 解压并配置安装位置: ```bash tar -xvf glibc-2.29.tar.gz cd glibc-2.29 ./configure --prefix=/usr/local/glibc_2.29 ``` 3. 编译和安装: ```bash make && sudo make install ``` **步骤四:替换系统glibc** 注意这一步可能会导致系统不稳定,除非你有充分的理由和经验。替换系统glibc可能导致其他已安装软件出现问题,建议在虚拟机或隔离环境中进行: ```bash sudo ln -s /usr/local/glibc_2.29/lib/libc.so.6 /lib/x86_64-linux-gnu/ sudo ln -s /usr/local/glibc_2.29/lib/libm.so.6 /lib/x86_64-linux-gnu/ ``` 完成上述步骤后,记得备份重要数据并确认新安装的glibc是否能正常运行。如果有疑问,可能需要寻求专业的技术支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值