作者:
(1)美国弗吉尼亚州威廉斯堡威廉玛丽学院计算机科学系的 Amit Seal Ami 与本文作者对本文做出了同等贡献([email protected]);
(2)孟加拉国达卡大学信息技术学院 Syed Yusuf Ahmed 和本文作者对本文做出了同等贡献([email protected]);
(3)孟加拉国达卡大学信息技术学院的 Radowan Mahmud Redoy 和本文作者对本文做出了同等贡献([email protected]);
(4)Nathan Cooper,美国弗吉尼亚州威廉斯堡威廉玛丽学院计算机科学系([email protected]);
(5) Kaushal Kafle,美国弗吉尼亚州威廉斯堡威廉玛丽学院计算机科学系([email protected]);
(6)Kevin Moran,美国佛罗里达州奥兰多市中佛罗里达大学计算机科学系([email protected]);
(7) Denys Poshyvanyk,美国弗吉尼亚州威廉斯堡威廉玛丽学院计算机科学系([email protected]);
(8) Adwait Nadkarni,美国弗吉尼亚州威廉斯堡威廉玛丽学院计算机科学系([email protected])。
虽然软件工程师在软件开发周期中乐观地采用加密 API 滥用检测器(或加密检测器),但这种势头必须伴随着对加密检测器在实践中发现加密 API 滥用的有效性的严格理解。本演示论文介绍了我们的工具的技术细节和使用场景,即用于评估静态加密 API 滥用检测器 (MASC) 的突变分析。我们开发了 12 个可通用的、基于使用的突变运算符和三个突变范围,即主范围、相似范围和详尽范围,它们可用于表达性地实例化加密 API 滥用案例的可编译变体。使用 MASC,我们评估了九种主要的加密检测器,并发现了 19 个独特的、未记录的缺陷。我们将 MASC 设计为可配置且用户友好的;用户可以配置参数来更改生成的突变的性质。此外,MASC 还配备了命令行界面和基于 Web 的前端,使其适用于不同专业水平的用户。
代码: https://github.com/Secure-Platforms-Lab-WM/MASC
几十年来,软件工程师一直依赖加密检测器来确保在他们创建、开发和维护的软件和服务中正确使用加密 API [6]。此类加密检测器在软件工程中无处不在,因为它们集成到 IDE(例如 Eclipse IDE 的 CogniCrypt 插件 [8])、Oracle Corporation 等组织的测试套件 [9, 17] 以及持续集成/持续部署 (CI/CD) 管道 [12, 18] 中。此外,GitHub 等托管服务提供商正在正式提供此类加密检测器,例如 GitHub Code Scan Initiative [10]。换句话说,软件和服务的安全性越来越依赖于加密检测器。但是,我们一直依赖手动策划的基准来评估加密检测器的性能,众所周知,此类基准不完整、不正确且不切实际 [16]。因此,从安全角度确定加密检测器的有效性需要一种可靠且不断发展的评估技术,该技术可以随着加密 API 的数量和多样性以及不同的滥用模式而扩展。
我们将变异测试技术情境化,以创建用于评估静态加密 API 滥用检测器 (MASC) 框架的变异分析。在我们最初的 MASC 原型实现 [3] 中,它在内部利用了 12 个可泛化的、基于使用的变异运算符来实例化 Java 的加密 API 滥用案例的变异。变异运算符是根据 Java 加密架构 (JCA) [11] 的设计原则和由具有不同技能和意图的用户组成的威胁模型设计的 (第 4.1 节)。MASC 在三个变异范围 (注入部位) 将这些变异的滥用案例注入 Java 或基于 Android 的应用程序中,即相似范围 (从 MDroid+ [13, 14] 扩展)、详尽范围 (从𝜇SE [4, 5, 7] 扩展) 及其独立开发的主范围,从而创建包含加密 API 滥用的变异应用程序。我们通过评估来自行业和学术界的 9 种密码检测器证明了 MASC 原型实现的实用性,并发现了 19 个之前未记录的未知缺陷,这些缺陷会损害密码检测器的范围内的健全性。MASC 的方法、设计考虑、对密码检测器的评估(导致发现新缺陷)、在开源应用程序中发现的缺陷的实际影响(因此,变异运算符的适用性)以及对研究结果的讨论的完整细节可在原始研究论文 [3] 中找到。
在本文中,我们向加密检测器的利益相关者(例如安全研究人员、开发人员和用户)介绍了 MASC 框架的成熟实现,重点关注可扩展性、易用性和可维护性。具体来说,由于新开发的插件架构,MASC 用户现在可以创建自己的变异运算符,这些运算符可以轻松插入 MASC,而无需深入研究现有代码库(11𝐾+ 源代码行)。此外,尽管 MASC 的原始原型实现涉及加密检测器的半自动化评估,但我们通过利用加密检测器事实上的 SARIF [15] 格式输出使 MASC 的工作流程自动化。此外,我们为用户创建了 MASC 实现的基于 Web 的前端,以降低进入门槛。最后,我们重构和重构了 MASC 的开源代码库,以提高 MASC 的可维护性和可扩展性,这将使 MASC 的开发人员和开源爱好者更容易在未来做出贡献和增强。通过这些添加和增强,我们希望 MASC 的当前开源实现将用于查找缺陷,从而有助于改进现有的加密检测器。
贡献:我们提出了 MASC,这是一个用户友好的框架,它利用突变测试技术来评估加密检测器,并详细介绍了底层技术、设计考虑和改进。MASC 的新关键功能如下:加密检测器的自动评估:MASC 可用于在主范围内以端到端自动化工作流程评估加密检测器。
加密检测器的可定制评估:用户可以通过指定用于创建加密 API 滥用实例的变异运算符来定制加密检测器的评估。
自定义运算符的插件架构:MASC 帮助安全研究人员、开发人员和用户通过创建自己的自定义变异运算符直接进入加密检测器评估,这些运算符可以直接插入主范围,而无需他们学习和了解 MASC 的内部细节。
面向最终用户的用户友好型前端:除了增强原始原型实现的命令行界面之外,我们还为最终用户创建并引入了一个可在本地运行的开源、基于 Web 的前端。前端包含一个额外的游戏测试学习界面 MASC Lab,利益相关者可以在其中与变异操作员进行交互,并可以了解变异加密 API 滥用的情况。
工具和数据可用性: MASC 框架的原型实现、评估密码检测器的脚本和结果,
如原始论文 [3] 中所述,可在 MASC Artifact [1] 中找到。此外,MASC 的积极维护、成熟实现的代码库可单独获取,并附带大量文档和示例 [2]。