国内刊号:11-2560/TP
国际刊号:1000-9825
发布日期:
作者:周多明,马麟,周亚金
单位:周多明,中国人民解放军93558部队, 河北 石家庄 05005111,马麟,浙江大学 网络空间安全学院, 浙江 杭州 31005802,周亚金,浙江大学 网络空间安全学院, 浙江 杭州 31005803
关键词:静态分析;Linux内核定时器;并发错误;操作系统安全
基金:国家重点研发计划(2022YFE0113200); 国家自然科学基金(U21A20464)
定时器是操作系统延迟任务调度与执行的驱动器, 具有运行在原子上下文和异步执行的特性, 可以在任何时刻与不同的线程并发执行, 如果开发人员不能考虑到所有多线程交错的场景, 则可能引入多种类型的并发错误, 对操作系统安全产生严重威胁. 定时器并发错误不仅涉及多线程交错, 还涉及定时器处理程序的延迟执行与重复调度, 比普通的并发错误更难发现, 目前还没有工具可以有效地检测此类错误. 总结3种定时器并发错误类型, 即定时器睡眠错误、定时器死锁错误和僵尸定时器错误. 为有效地对错误进行检测, 首先通过指针分析, 提取内核中所有与定时器有关的功能模块, 避免对无关代码进行分析提高检测效率; 然后构建上下文敏感、路径敏感和流敏感的过程间控制流图, 为后续分析奠定基础; 最后综合应用函数调用图遍历、锁集分析、指向分析、控制流分析等静态分析技术, 设计针对3种定时器并发错误的检测算法. 为评估算法的有效性, 在Linux 5.15内核中共发现了328个真实定时器并发错误, 向Linux内核社区提交了56个补丁, 截至目前, 49个补丁已经合并到Linux内核主线, 295个错误被确认和修复, 申请了14个CVE编号, 说明了所提方法的有效性. 最后通过对比实验对算法的性能、漏报与误报情况进行了系统分析, 并总结3种定时器并发错误的修复方法.
来源:2025年第11期
《软件学报》期刊编辑部