利用优化混淆生成对抗性计算机程序
机器学习
2021-03-23 v1 编程语言
软件工程
摘要
学习并预测计算机程序属性的机器学习(ML)模型正日益被采用和部署。这些模型已在代码自动补全、大型程序摘要以及程序缺陷与恶意软件检测等应用中展现出成效。本工作中,我们研究以原则性方式对抗性扰动计算机程序以欺骗此类学习模型,从而确定其对抗鲁棒性。我们使用程序混淆——传统上用于避免程序逆向工程尝试——作为对抗扰动。这些扰动以不改变程序功能的方式修改程序,但可被精心构造以在模型决策时欺骗 ML 模型。我们给出允许以任意语言对程序施加多种混淆变换的对抗程序通用表述。我们开发了首阶优化算法,以高效确定两个关键方面——程序的哪些部分需变换,以及使用何种变换。我们表明,优化这两个方面对于生成最佳对抗扰动程序至关重要。由于该问题的离散性质,我们还提出使用随机平滑来改善攻击损失地形以简化优化。我们在 Python 和 Java 程序上的程序摘要问题上评估了我们的工作。我们展示,我们最佳的攻击方案相比基于 seq2seq 模型训练程序的现有最优攻击生成方法实现了 的提升。我们进一步表明,我们的表述更利于训练对对抗攻击鲁棒的模型。
引用
@article{arxiv.2103.11882,
title = {Generating Adversarial Computer Programs using Optimized Obfuscations},
author = {Shashank Srikant and Sijia Liu and Tamara Mitrovska and Shiyu Chang and Quanfu Fan and Gaoyuan Zhang and Una-May O'Reilly},
journal= {arXiv preprint arXiv:2103.11882},
year = {2021}
}
备注
This work will be published at ICLR 2021