中文

结合静态分析与机器学习预测的应用程序精简

密码学与安全 2024-04-02 v1

摘要

软件精简可以有效阻止某些代码重用攻击,通过减少攻击面来打破小工具链。基于静态分析的方法利用调用图的静态属性,使得在调用点可执行的函数集减少。这实现了低运行时开销,但函数集是保守计算的,对精简效果有负面影响。相比之下,基于机器学习的方法具有更好的精度,可以大幅减少函数集,从而显著改善攻击面。然而,基于ML的方法会出现误预测。这些误预测会导致开销,更糟糕的是,没有明确的方法区分误预测和实际攻击。在这项工作中,我们认为在运行时结合基于ML预测的软件精简方法在全应用设置中是可行的,并且可以实现超越现有技术的显著攻击面减少。我们开发了一个框架,Predictive Debloat with Static Guarantees (PDSG)。PDSG是完全可靠的,并适用于应用程序源代码。在运行时,它预测从调用点发出的动态被调用者集合,为了解决误预测,它采用基于调用链静态不变量的轻量级审计。我们离线推导不变量,并断言当出现误预测时它们在运行时成立。据我们所知,它在SPEC CPU 2017上实现了同类技术中最高的小工具减少,平均减少了82.5%的总小工具。它仅在运行时调用的总预测的3.8%上触发误预测检查,并利用Datalog验证动态调用序列符合静态调用关系。它的开销为8.9%,这使得该方案对实际部署具有吸引力。

关键词

引用

@article{arxiv.2404.00196,
  title  = {Combined Static Analysis and Machine Learning Prediction for Application Debloating},
  author = {Chris Porter and Sharjeel Khan and Kangqi Ni and Santosh Pande},
  journal= {arXiv preprint arXiv:2404.00196},
  year   = {2024}
}