0%

Automatic Detection of Java Cryptographic API Misuses:Are We There Yet?

Automatic Detection of Java Cryptographic API Misuses: Are We There Yet?

论文地址:Automatic Detection of Java Cryptographic API Misuses: Are We There Yet? | IEEE Journals & Magazine | IEEE Xplore

TSE-2022-CCFA 姚丹凤老师团队

总结:围绕三个问题分析现有工具设计,实证评估6种工具的检测效果,收集反馈者意见,揭示Java加密API误用检测工具在检测能力与开发者实际需求之间的差距

背景

三个问题:

  1. 当下的加密误用检测工具是如何设计去检测的
  2. 当下工具的有效性
  3. 开发者如何认为工具结果的有用性

做法:找到现有的6个工具,使用3个基准和3个指标比较工具的有效性,再使用现实中的实际项目比较效果,最后查看开发者反馈对比检测能力和实际需求的落差

总结JCA和JSSE得到13种误用类型,6种CWE

Snipaste_2025-04-13_20-48-32
CWE 说明
CWE-327 加密算法不安全
CWE-295 证书验证不正确
CWE-330 使用不够随机的值
CWE-326 加密强度不足
CWE-789 使用硬编码凭证
CWE-757 协商过程中选择安全性较低的算法

现有工具

学术界15个,工业界或开源社区5个(分别为下图前15,后5)

论文中对每个工具进行了简单的介绍,本文不表述,详细请查看论文

Snipaste_2025-04-13_20-55-17

针对问题1——当下的加密误用检测工具是如何设计去检测的:内置规则,过程间分析,检测报告

Snipaste_2025-04-13_20-58-13

工具实证比较

对上一节提到的20种工具进行筛选,保留了6个工具,3+3:CogniCrypt,CryptoGuard,CryptoTutor;FindSecBugs,SonarQube,Xanitizer

Snipaste_2025-04-13_21-15-40

基准:

  • CryptoBench:136❌+35✅,40-intra+131-inter
  • MUBench:2019年版本,6个安卓app+56非安卓app,在56个中只编译了37个,拿到149个标签
  • OWASP Benchmark:v1.2,2740个java程序,选择其中的975个(弱算法、弱hash、弱随机性),477❌+498✅
Snipaste_2025-04-13_21-16-13

评估指标:P、R、F

Snipaste_2025-04-13_21-14-54

实验结果

针对问题2——当下工具的有效性:客观评估了耗时;没有一个工具总是最优,使用过程间分析+大模式集合的工具表现更好

Snipaste_2025-04-13_21-20-13 Snipaste_2025-04-13_21-23-25

在3个基准下6个工具的表现

Snipaste_2025-04-13_21-17-01 Snipaste_2025-04-13_21-19-03

开发者反馈分析

实验中每种加密类型开发者的反馈总览

Snipaste_2025-04-13_21-26-00

针对问题3——开发者如何认为工具结果的有用性:开发者检测结果并不是很重视(17/30);有些问题想修修不了;需要漏洞演示和实际影响

Snipaste_2025-04-13_21-32-32

接受17个,改了9个,8个没改(1.不完整的修复意见;2.修复程序太复杂)

拒绝30个,1.不接受描述的误用情况;2.误用没有实际的安全影响

局限性和未来工作

局限性:

  • 外部有效性:只用了我们用的数据,不全面
  • 构建有效性:基准不能代表真实情况
  • 内部有效性:对结果的人工验证可能出错

未来工作:

  • 提高F值和相关性,提高过程间分析的准确性、去掉test和过时代码的报告、分析自定义加密
  • 提供详细的定制修复建议
  • 自动生成特定于项目的漏洞利用程序