通过静态与动态 syscall 限制缩小内核攻击面
密码学与安全
2025-10-07 v1
摘要
Linux Seccomp 广泛用于程序开发者和系统维护者以安全方式保护操作系统,通过阻止不同应用程序和容器中未使用的 syscall 来缩小操作系统的攻击面。然而,在没有程序开发者帮助的情况下,配置容器或应用程序的白名单比较困难。Docker 容器默认仅阻止约 50 个 syscall,而大量未阻止的无用 syscall 引入了巨大的内核攻击面。虽然动态跟踪是获取依赖 syscall 的直观方法,但无法获取完整的 syscall 列表。静态分析可以构建近似的 syscall 列表,但该列表包含许多误报。本文提出了一种系统性的依赖 syscall 分析方法,称为 sysverify,通过结合静态分析和动态验证来缩小内核攻击面。通过分析二进制文件和源代码,搭建了二进制可执行文件与 syscall 之间的语义鸿沟,系统性地构建了库 API 与 syscall 之间的映射。为进一步在最佳情况下降低攻击面,我们提出了一种动态验证方法,用于拦截和分析与间接调用相关或很少被调用的 syscall 的安全性,同时保持低开销。
引用
@article{arxiv.2510.03720,
title = {Shrinking the Kernel Attack Surface Through Static and Dynamic Syscall Limitation},
author = {Dongyang Zhan and Zhaofeng Yu and Xiangzhan Yu and Hongli Zhang and Lin Ye},
journal= {arXiv preprint arXiv:2510.03720},
year = {2025}
}
备注
13 pages, 5 figures. Accepted for publication in IEEE Transactions on Services Computing (TSC), 2023