Skip to main content
QUICK REVIEW

[论文解读] RIGORITYJ: Deployment-quality Detection of Java Cryptographic Vulnerabilities

Sazzadur Rahaman, Ya Xiao|arXiv (Cornell University)|Jun 18, 2018
Advanced Malware Detection Techniques被引用 3
一句话总结

RIGORITYJ 是一款可投入生产的静态分析工具,通过系统性地裁剪无关代码元素来减少误报,从而检测 Java 程序中的加密漏洞。它在覆盖率和正确性方面优于商业工具如 DHS SWAMP 和 Synopsys Coverity,在 Apache 项目上实现了 2.34% 的误报率,并成功用于实际加固关键开源系统(如 Spark 和 Ranger)。

ABSTRACT

Cryptographic API misuses threaten software security. Examples include exposed secrets, predictable random numbers, and vulnerable certificate verification. Our goal in this work is to produce deployment-quality program analysis tools for automatically inspecting various cryptographic API uses in complex Java programs. The main challenge is how to reduce false positives (FP) without compromising analysis quality. Unfortunately, state-of-the-art solutions in this space were not designed to be deployment-grade and did not address this issue. Our main technical innovation is a set of algorithms for systematically removing irrelevant elements (from program slices) to reduce false alerts. We compared the detection capability of our tool, RIGORITYJ with popular commercial tools (e.g., DHS SWAMP and Synopsys Coverity) which shows that RIGORITYJ offers more coverage and soundness than all of them. Our evaluation on 46 high-impact large-scale Apache projects and 6,181 Android apps, which generates many security insights. We observed violations for most of our 16 rules. 96\% of the Android vulnerabilities come from the libraries. There is a widespread insecure practice of storing plaintext passwords. We manually went through the 2,008 Apache alerts and confirmed 1,961 true positives (2.34% FP rate). We contacted Apache with our security findings. This helped multiple popular Apache projects to harden their code, including Spark, Ranger, and Ofbiz. We also discuss the pragmatic constraints that hinder secure coding.

研究动机与目标

  • 开发一款可投入生产的静态分析工具,以极低的误报率检测 Java 程序中的加密 API 误用。
  • 解决现有工具的关键局限:这些工具并非为生产环境设计,且误报率过高。
  • 通过系统性地从分析切片中移除无关程序元素,提高检测准确性。
  • 在真实世界的大规模软件系统上评估该工具,以证明其实际影响。
  • 识别并报告开源及 Android 应用中广泛存在的不安全编码实践。

提出的方法

  • 该工具构建聚焦于加密操作的程序切片,并使用上下文敏感的污点分析方法,移除无关代码路径。
  • 应用一系列裁剪启发式规则,消除不影响加密行为的代码段,从而减少噪声。
  • 该方法将精确的污点追踪与控制流和数据流分析相结合,仅隔离相关加密操作。
  • 采用基于规则的系统,包含 16 条自定义安全规则,专门针对常见的加密反模式。
  • 分析过程针对可扩展性进行了优化,可处理 Apache 项目和 Android 应用等大型代码库。
  • 通过手动筛选 Apache 项目中的 2,008 个警报,验证了该工具的高精度。

实验结果

研究问题

  • RQ1静态分析工具是否能在真实世界的 Java 应用中实现高精度和极低的误报率,以检测加密漏洞?
  • RQ2RIGORITYJ 在覆盖率和正确性方面与 DHS SWAMP 和 Synopsys Coverity 等商业工具相比表现如何?
  • RQ3大规模开源和 Android 项目中常见的加密漏洞有哪些?
  • RQ4生产代码中的加密漏洞在多大程度上源于库的使用,而非应用逻辑?
  • RQ5在实践中,哪些实际约束阻碍了开发人员编写出安全的加密代码?

主要发现

  • 在 Apache 项目中 2,008 个警报上,RIGORITYJ 实现了 2.34% 的误报率,其中 1,961 个被确认为真实漏洞。
  • 由于不安全的库使用,该工具在 96% 的 Android 应用中检测到加密漏洞,而非应用代码本身。
  • 在多个项目中识别出广泛存在的明文存储密码的做法。
  • RIGORITYJ 的检测能力在覆盖率和正确性方面均优于 DHS SWAMP 和 Synopsys Coverity 等商业工具。
  • 安全发现已报告给 Apache 社区,推动了 Spark、Ranger 和 Ofbiz 等关键系统的加固。
  • 研究揭示了在安全编码方面存在系统性挑战,即使已有指导建议,开发人员仍普遍未能遵循最佳实践。

更好的研究,从现在开始

从论文设计到论文写作,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。