软件学报

北大核心,INSPEC,JST,Pж(AJ),EI

国内刊号:11-2560/TP

国际刊号:1000-9825

软件学报杂志2025年第11期:Linux内核定时器并发错误检测

发布日期:

作者:周多明,马麟,周亚金

单位:周多明,中国人民解放军93558部队, 河北 石家庄 05005111,马麟,浙江大学 网络空间安全学院, 浙江 杭州 31005802,周亚金,浙江大学 网络空间安全学院, 浙江 杭州 31005803

关键词:静态分析;Linux内核定时器;并发错误;操作系统安全

基金:国家重点研发计划(2022YFE0113200); 国家自然科学基金(U21A20464)

定时器是操作系统延迟任务调度与执行的驱动器, 具有运行在原子上下文和异步执行的特性, 可以在任何时刻与不同的线程并发执行, 如果开发人员不能考虑到所有多线程交错的场景, 则可能引入多种类型的并发错误, 对操作系统安全产生严重威胁. 定时器并发错误不仅涉及多线程交错, 还涉及定时器处理程序的延迟执行与重复调度, 比普通的并发错误更难发现, 目前还没有工具可以有效地检测此类错误. 总结3种定时器并发错误类型, 即定时器睡眠错误、定时器死锁错误和僵尸定时器错误. 为有效地对错误进行检测, 首先通过指针分析, 提取内核中所有与定时器有关的功能模块, 避免对无关代码进行分析提高检测效率; 然后构建上下文敏感、路径敏感和流敏感的过程间控制流图, 为后续分析奠定基础; 最后综合应用函数调用图遍历、锁集分析、指向分析、控制流分析等静态分析技术, 设计针对3种定时器并发错误的检测算法. 为评估算法的有效性, 在Linux 5.15内核中共发现了328个真实定时器并发错误, 向Linux内核社区提交了56个补丁, 截至目前, 49个补丁已经合并到Linux内核主线, 295个错误被确认和修复, 申请了14个CVE编号, 说明了所提方法的有效性. 最后通过对比实验对算法的性能、漏报与误报情况进行了系统分析, 并总结3种定时器并发错误的修复方法.

来源:2025年第11期

《软件学报》期刊编辑部

查看软件学报杂志2025年第11期

联系我们

  • 地址:北京8718信箱
  • 电话:010-62562563
  • E-mail:jos (a) iscas. ac. cn

咨询工作人员