Ret2dlresolve 应检查 VERSYM[ ELF32_R_SYM(reloc->r_info)] 是否有效
作者: h4kk4p4kk4创建于 2026年1月27日更新于 2026年9月8日
标签bugbackport-required
目前,Ret2dlresolve 会任意选择 .bss 中的一个 data_addr,如果对应的 VERSYM 索引未映射,则会出错。但是,dl_runtime_resolve() 要避免 segfault,则 VERSYM[ ELF32_R_SYM(reloc->r_info) ] 的值也必须是合法的。这可能会导致一些难以调试的严重 segfault。为了解决这个问题,Ret2dlresolvePayload._get_recommended_address 应该在 ELF 数据中搜索对应 VERSYM 索引设置为 0(或其他合法值,尽管这些似乎会根据 libc/ld 版本而变化)的地址。
内容来源: Gallopsled/pwntools