B-Side:二进制级静态系统调用识别
密码学与安全
2024-10-24 v1 操作系统
摘要
系统调用过滤被广泛用于保护多租户环境中的程序,以及在现代桌面软件部署和包管理系统中对应用程序进行沙盒化。手动编写和维护过滤规则很困难,因此自动生成它们至关重要。为此,需要能够识别程序可以合法调用的每个系统调用的分析工具。现有的静态分析工作由于大量误报而缺乏精度,并且/或者假设程序/库源代码可用——这在许多场景(如云生产环境)中是不现实的。我们提出了B-Side,一种静态二进制分析工具,能够识别x86-64静态/动态可执行文件在运行时可能调用的系统调用的超集。B-Side假设无法访问程序/库源代码,并通过利用符号执行,结合检测系统调用包装器(这是现有工作中精度损失的重要来源)的启发式方法,展现出良好的精度。B-Side还允许静态检测程序中可以应用不同过滤规则的执行阶段。我们验证了B-Side,并展示了其与最先进工作相比更高的精度:在一组流行应用程序上,B-Side的平均得分为0.81,而竞争对手分别为0.31和0.53。在取自Debian仓库的557个静态和动态编译的二进制文件上,B-Side平均识别出43个系统调用,而两个最先进的竞争对手分别为271个和95个。我们进一步评估了使用B-Side可以获得的基于阶段的过滤策略的严格性。
引用
@article{arxiv.2410.18053,
title = {B-Side: Binary-Level Static System Call Identification},
author = {Gaspard Thévenon and Kevin Nguetchouang and Kahina Lazri and Alain Tchana and Pierre Olivier},
journal= {arXiv preprint arXiv:2410.18053},
year = {2024}
}
备注
Accepted to appear in the 25th ACM/IFIP International Middleware Conference (Middleware'24)