Tracing the sequence of library and system calls that a program makes is very helpful in the characterization of its interactions with the surrounding environment and ultimately of its semantics. Due to entanglements of real-world software stacks, accomplishing this task can be surprisingly challenging as we take accuracy, reliability, and transparency into the equation. To manage these dimensions effectively, we identify six challenges that API monitoring solutions should overcome and outline actionable design points for them, reporting insights from our experience in building API tracers for software security research. We detail two implementation variants, based on hardware-assisted virtualization (realizing the first general-purpose user-space tracer of this kind) and on dynamic binary translation, that achieve API monitoring robustly. We share our SNIPER system as open source.
翻译:追踪图书馆和系统呼叫的序列,一个程序对描述其与周围环境的相互作用以及最终其语义非常有帮助。由于真实世界软件堆叠的纠缠,完成这项任务在等式中采取准确性、可靠性和透明度的方式时可能具有惊人的挑战性。为了有效地管理这些层面,我们确定了API监测解决方案应该克服的六项挑战,并概述了这些解决方案的可操作设计点,报告了我们在为软件安全研究建立API追踪器方面的经验。我们详细介绍了基于硬件辅助虚拟化(实现这种类型的首个通用用户-空间跟踪器)和动态二进制翻译的两种执行变体,这些变体实现了API的强有力监测。我们分享了我们的SNIPER系统作为开放源。