paper:https://www.ndss-symposium.org/wp-content/uploads/2025-559-paper.pdf
NDSS 2025
摘要
发现跨入口的UAF漏洞;
challenge


design

- 跨入口的释放/使用点别名分析;有的点是加了保护的,像entry2中的使用点;
- 认证一个UAF需要对所有相关代码进行系统、认真的分析;

- 上图中entry0还有一个释放操作,笔者没画出来,直接看论文原图;
- 下面的每一个entry就类似于一个函数、或者一个syscall的处理;
- 上面的每一个框框就表示一个全局变量,其实就是entry之间的指针传递媒介;
- 找到的两条路径就是潜在的UAF;
寻找入口点
- 根据调用链分析找顶层函数;
- 启发式方法,根据经验找ioctl、file_operations结构体等;
分析每一个入口点
points-to分析
最重要的就是pionts-to分析,但不是简单地分析一个指针指向了什么obj,而是要同步识别escape和fetch这两类重点关注的cross-entry地情况;
入口点分析并不意味着是程序内分析,在入口函数是可以调用其他函数的,这也就形成了跨函数之间的分析:
- 上下文敏感性;
- 流敏感性;
- 域敏感性;
- 路径敏感性;
锁集(lockset)分析
核心观点是识别lock、unlock函数,然后看是不是用了同一个obj;
本论文观察到锁集分析的成功率关键取决于底层的别名分析,但是现有的技术基本上是基于别名分析,在cross-entry的情况下,很有可能不同类型的指针指向了同一个obj;
为了提高准确性,将这个过程分为两个阶段,
IMPLEMENTATION
使用SUTRUE,对其进行了修改,增加了12850行代码,删除了3838行代码;