[论文解读] CrySL: Validating Correct Usage of Cryptographic APIs
CrySL 是一种领域特定语言,使密码学专家能够正式指定 Java 密码学架构(JCA)API 的正确使用模式,CogniCryptsast 静态分析器将这些规范编译为上下文敏感且流敏感的静态分析,以检测密码学误用。在对 10,001 个 Android 应用的评估中,基于 CrySL 的分析在 96% 的应用中检测到至少一次误用,证明了广泛存在的不安全使用行为,以及该工具在识别关键安全缺陷方面的有效性。
Various studies have empirically shown that the majority of Java and Android apps misuse cryptographic libraries, causing devastating breaches of data security. Therefore, it is crucial to detect such misuses early in the development process. The fact that insecure usages are not the exception but the norm precludes approaches based on property inference and anomaly detection. In this paper, we present CrySL, a definition language that enables cryptography experts to specify the secure usage of the cryptographic libraries that they provide. CrySL combines the generic concepts of method-call sequences and data-flow constraints with domain-specific constraints related to cryptographic algorithms and their parameters. We have implemented a compiler that translates a CrySL ruleset into a context- and flow-sensitive demand-driven static analysis. The analysis automatically checks a given Java or Android app for violations of the CrySL-encoded rules. We empirically evaluated our ruleset through analyzing 10,001 Android apps. Our results show that misuse of cryptographic APIs is still widespread, with 96% of apps containing at least one misuse. However, we observed fewer of the misuses that were reported in previous work.
研究动机与目标
- 为解决 Java 和 Android 应用中密码学 API 的广泛且系统性的误用问题,此类误用会导致严重数据泄露。
- 通过支持精确的、由专家编写的使用规范,克服异常检测和属性推断的局限性,以定义正确的 API 使用方式。
- 提供一种实用、可扩展且可伸缩的解决方案,以在软件开发生命周期早期检测密码学误用。
- 使密码学专家和开发人员能够通过一种高级、领域特定的语言定义并强制执行安全使用模式。
提出的方法
- CrySL 是一种领域特定语言,结合方法调用序列、数据流约束以及密码学特定约束(例如密钥长度、算法参数)来定义正确的 API 使用模式。
- 该语言支持谓词、事件和约束,以建模密码学对象之间的交互,并强制执行正确的调用顺序和参数取值。
- CogniCryptsast 将 CrySL 规则编译为一种上下文敏感且流敏感的、按需驱动的静态分析引擎,用于检查 Java 和 Android 应用。
- 该分析通过符号执行跟踪对象状态和方法调用序列,检测对 CrySL 所指定规则的违反。
- 该系统支持通过类似 Java 的语法进行规则编写,使非专家和密码学专家能够定义和扩展规则。
- 该工具集成类型状态分析,以检测禁止的方法调用,并在大规模范围内强制执行安全使用模式。
实验结果
研究问题
- RQ1如何通过正式的、由专家编写的规范,在大规模范围内系统性地检测 Java 和 Android 应用中的密码学误用?
- RQ2领域特定语言能否有效表达安全密码学 API 使用所需的复杂、参数化约束?
- RQ3当使用精确的基于规则的静态分析时,现实世界中的 Android 应用在多大程度上表现出密码学误用?
- RQ4基于 CrySL 的分析在性能和精度方面与 CryptoLint 和 CMA 等现有工具相比如何?
- RQ5与硬编码解决方案相比,正式规范语言是否能降低安全规则集的维护和扩展开销?
主要发现
- 基于 CrySL 的分析在所分析的 10,001 个 Android 应用中,96% 的应用检测到至少一次密码学误用,证实了不安全 API 使用的普遍性。
- 与先前工作相比,该工具报告的最常见误用实例更少,表明规则编码的精度有所提高。
- 超过 75% 的分析应用在 4 分钟内完成扫描,表明其在大规模分析中具备可接受的性能。
- 该分析在 4,071 个使用 JCA 的应用中成功识别出 20,000 个不同的误用实例。
- 通过利用上下文敏感和流敏感的静态分析,CogniCryptsast 实现了高精度,相比先前方法显著减少了误报。
- 评估结果证实,CrySL 中由专家编写的规则能够有效捕获复杂的密码学约束,例如密钥长度和算法模式要求。
更好的研究,从现在开始
从论文设计到论文写作,大幅缩短您的研究时间。
无需绑定信用卡
本解读由 AI 生成,并经人工编辑审核。