IFUNC resolver:ld.so 重定位期的先于 main 执行原语

IFUNC resolver:ld.so 重定位期的先于 main 执行原语

一句话:STT_GNU_IFUNC 符号的 resolver 是动态链接器在重定位期"主动执行"的用户代码,
注入同名 IFUNC 即可在 .init_array/main 之前、且对常规构造函数审计不可见地拿到一段执行。

要点

原语抽象:链接器协议里"代码被合法执行"的窗口(IFUNC resolver 必然被 ld.so
调用)被转成隐蔽执行点——利用的是协议要求而非漏洞,补丁无从谈起。
亲戚手法:构造函数/.init_array 隐蔽执行家族的更早时点成员;差异:执行先于
构造函数、BIND_NOW 下先于程序获得控制权,且不在常规启动项/构造函数审计清单内。
防御启示:启动完整性审计要纳入导入导出表的 STT_GNU_IFUNC 符号与 resolver
行为检查;第三方 so 供应链要有符号表级别的基线比对。

原文: https://xz.aliyun.com/news/92771
来源发布时间: 2026-09-01