应对API误用规范中的可变性
密码学与安全
2021-05-18 v2 软件工程
摘要
API是开发者访问外部定义的服务和工具的主要机制。然而,先前研究揭示违反API契约的API误用普遍存在。此类误用可能产生有害后果,尤其在密码库背景下。已提出多种API误用检测器以解决该问题,包括CogniCrypt——其中最通用的此类检测器之一,其使用CrySL语言来规范密码API使用契约。尽管如此,现有的API误用检测方法并非为系统复用而设计,忽视了库的不同版本、平台的不同版本以及不同建议或指南可能引入API正确用法的可变性这一事实。然而,关于此类可变性如何影响正确API用法的规范知之甚少。本文通过分析各种可变性来源对广泛使用的Java密码库(包括JCA、Bouncy Castle和Google Tink)的影响来研究该问题。我们的调查结果表明,API新版本和安全标准等可变性来源显著影响规范。随后我们利用调查所得的洞见来推动对CrySL语言的扩展,称为MetaCrySL,其构建于元编程概念之上。我们通过为一系列Android版本规范使用规则来评估MetaCrySL,并说明MetaCrySL能够建模我们识别的所有可变性形式,并大幅缩减用于密码API正确用法的规范族规模。
引用
@article{arxiv.2105.04950,
title = {Dealing with Variability in API Misuse Specification},
author = {Rodrigo Bonifacio and Stefan Krüger and Krishna Narasimhan and Eric Bodden and Mira Mezini},
journal= {arXiv preprint arXiv:2105.04950},
year = {2021}
}
备注
28 pages, 16 figures