信息网络安全 ›› 2026, Vol. 26 ›› Issue (9): 1435-1446.doi: 10.3969/j.issn.1671-1122.2026.09.009

• 入选论文 • 上一篇    下一篇

程序语义驱动的间接调用目标识别方法

孟辉1(), 许嘉星2   

  1. 1 中国刑事警察学院公安信息技术与情报学院, 沈阳 110854
    2 北京大学软件与微电子学院, 北京 102600
  • 收稿日期:2026-05-18 出版日期:2026-09-10 发布日期:2026-09-30
  • 通讯作者: 孟辉 E-mail:1441209123@qq.com
  • 作者简介:孟辉(1981—),男,山东,讲师,硕士,主要研究方向为数据安全、网络与系统安全|许嘉星(2003—),男,福建,硕士研究生,CCF会员,主要研究方向为网络安全、模糊测试、大语言模型
  • 基金资助:
    辽宁省自然科学基金(2025-MS-101)

Program semantics-driven indirect call target recognition method

Meng Hui1(), Xu Jiaxing2   

  1. 1 School of Public Security Information Technology and Intelligence, Criminal Investigation Police University of China, Shenyang 110854, China
    2 School of Software and Microelectronics, Peking University, Beijing 102600, China
  • Received:2026-05-18 Online:2026-09-10 Published:2026-09-30
  • Contact: Meng Hui E-mail:1441209123@qq.com

摘要:

系统软件常通过间接调用实现动态程序行为,这使静态分析难以构建精确的控制流图,而控制流图是许多静态分析和系统强化技术的基础。现代编译器默认无法识别间接调用目标,现有方法也多局限于类型信息,容易产生较高的误报率。因此,文章提出一种程序语义驱动的间接调用目标识别方法HRefIC。由于有效目标更容易到达调用点,从Linux内核、Bash和MySQL中随机抽取的1000个有效目标统计结果表明,57.4%有效目标的调用距离为0,81.9%有效目标的调用距离不超过2。调用者与被调用者以及同一间接调用的不同目标之间通常存在相关性,78.95%有效目标的函数名与调用者相似。HRefIC对数据流、路径、语义和文本相似性信息进行综合分析,在类型分析所得的粗粒度目标基础上进一步精炼,同时采用按需设计以控制开销,并借助多层规则降低漏报率。实验结果表明,与基于函数签名的传统类型分析方法相比,HRefIC在Linux内核、Bash和MySQL上的平均目标数量分别减少了98.6%、94.4%和95.0%,相较于MLTA进一步减少了38%~66%。此外,HRefIC还可服务于语义错误检测,利用该方法在Linux内核中发现8个新错误。

关键词: 静态分析, 污点分析, 间接调用目标, 函数指针, 控制流完整性

Abstract:

Indirect call is widely used in system software to implement dynamic program behavior, but it hinders the construction of accurate control-flow graphs, which underpins many static analyses and system-hardening techniques. Modern compilers can’t identify indirect-call targets by default, while most existing methods rely only on type information and produce many false positives. This paper proposed a program semantics-driven indirect call target recognition method called HRefIC. Due to the fact that effective targets were easier to reach the call point, the statistical results of 1000 randomly selected effective targets in Linux kernel, Bash, and MySQL showed that 57.4% of the call distances are 0, and 81.9% of the call distances do not exceed 2. There was usually a correlation between the caller, the called, and different objectives of the same indirect call, with 78.95% of valid objectives being similar to the caller’s function name. HRefIC integrated data flow, path, semantic, and text similarity information based on this, further refining the coarse-grained target obtained from type analysis. At the same time, on-demand design was adopted to control overhead, and multi-layer rules were used to reduce false alarm rates. The experimental results show that compared with traditional type analysis based on function signatures, HRefIC reduces the average number of targets by 98.6%, 94.4%, and 95.0% on Linux kernel, Bash, and MySQL, respectively, and further reduces by 38% to 66% compared to MLTA. In addition, HRefIC can also serve semantic error detection, using this method to discover 8 new errors in the Linux kernel.

Key words: static analysis, taint analysis, indirect-call target, function pointer, control-flow integrity

中图分类号: