Skip to main content

Command Palette

Search for a command to run...

NDSS'24 Towards Precise Reporting of Cryptographic Misuses 论文解读

Published
1 min read
NDSS'24 Towards Precise Reporting of Cryptographic Misuses 论文解读

这是一篇分析静态分析检测器目前存在缺陷的文章,深入分析三种检测器(CryptoGuard、 CogniCrypt-SAST、CryptoREX)实现原理,(前两个工具针对Java代码,而后一个工具主要是对嵌入式固件)分析误用警报与实际漏洞之间的差距,阐明提高误用检测器精度和可用性的可能方向。

同时将可避免的误报提炼成捕获其根本原因的高级模式,并讨论可以提高误用结果准确性的设计、评估和报告策略。

为了证明这些误报模式和改进方向的普遍性,我们还研究了流行的行业检测器和动态检测器,并讨论了一些误报模式如何适用和不适用它们。

在本文中,我们从技术上深入探讨了密码滥用检测器中的误报问题,并讨论了其根本原因以及解决这些问题的可能方法。本文的主要目标是对什么被视为误用(和漏洞)提出更细致和更平衡的说明,调查开发人员编写检测器认为误用的代码的原因,并在提高精确度方面确定可能的改进方向。

论文总结检测器产生误报的原因:

  1. 过于保守的滥用规则

  2. 不精确的建模

  3. 检测器本身的实现错误

论文的贡献:

  1. 我们重新审视了加密 API 滥用的学术静态检测器,并用经验证据证明,尽管相应论文暗示了精确性,但仍然存在许多误报。这表明在精确检测和报告加密滥用方面还有很大的改进空间。

  2. 对于建模和实现问题的子集,我们改进检测器以估计数据集中产生的误报的规模。我们将改进的版本包含在我们公开发布的工件中,这可能对其他研究有用。

  3. 根据观察到的误报,我们提炼出高级根本原因模式,并讨论了使误用检测器对开发人员更可用的挑战以及可能的改进。

  4. 根据实际应用程序代码中发现的误报,我们准备了一系列最小工作示例(MWE),可以说明现有检测器中的问题。为了促进未来的研究,这些 MWE 也包含在我们公开发布的工件中。

CryptoGuard 检查 16 条规则。有些规则与 CryptoLint 非常相似,但CryptoGuard 的目标是 Java API 中的更多类。根据 CryptoGuard 论文,他们的规则对应 5 种类型的攻击:规则 1-3 涵盖可预测的秘密,规则 4-7 涵盖中间人(MITM),规则 8-9 涵盖可预测性攻击,规则 10-规则12涵盖选择明文攻击,规则1316涵盖暴力攻击。在底层,CryptoGuard 基于 Soot 框架执行按需数据流分析。它以流、上下文和字段敏感的方式实现前向和后向切片,并针对 Java API 的某些类使用的特定参数作为切片标准。它跟踪过程内程序语句之间的定义使用关系,以及不同方法之间的过程间调用者被调用者关系。

方法论

在本文中,我们考虑两种类型的误报:误报(FP)和无效的真报(ITP)。 FP 是指由检测器中实施的静态分析的错误和其他限制引起的误报。相比之下,从程序分析的角度来看,ITP 被认为是真正的阳性,其中误用检测器检测到它旨在检测的模式,尽管由于误用的设计,它检测到的内容可能并不总是对开发人员有帮助(即无效)规则和模型。

为了测试针对 Java 的检测器(即 CryptoGuard 和 CogniCryptSAST),我们在从 F-Droid [32] 收集的 3489 个开源 Android 应用程序的数据集上运行它们。选择 F-Droid 而不是 Google Play 的优点是能够看到未混淆的源代码,使我们更容易理解某些报告的滥用行为的背景。

对于 CryptoREX,我们尝试下载 1437 个固件映像(每个产品 1 个版本),并成功从 6 个供应商收集了 1177 个固件映像(Netgear:573、D-link:469、Linksys:52、Zyxel:46、TPLink:33、Tomato:4) )。然后我们在它们上运行 CryptoREX。

我们注意到,目前不存在误报预言机,并且误用检测器的差异测试[33]很困难,因为它们具有不同的目标、规则和报告,无法直接比较。因此,在本文中,我们在分析中采用两阶段方法。首先,我们对检测器报告的一些误用进行采样并手动分析,并确定此类报告的根本原因和性质。然后,对于一些误报,我们改进检测器模型或实现,并再次运行检测器以估计它们在数据集中的总体分布。

对于手动分析,鉴于误操作警报的数量庞大以及根本原因分析的劳动强度,不可能涵盖所有报告的误操作。为了便于采样,我们根据报告的误用数据(例如某些常量值)以及类和方法名称(CryptoGuard 和 CogniCryptSAST)或文件、函数名称和地址(CryptoREX)合并每个规则的误用警报。这很有帮助,因为许多第三方库在应用程序和固件之间重复使用,并且大多数误用警报是由第三方库代码触发的 [1]、[34]。然后,我们根据合并后应用程序(和固件)中发生的误用情况对合并后的误用进行排名。接下来,我们检查前 10 个违规方法(函数),因为它们影响最多数量的应用程序(系统)。

然后,根据误用数据的值,我们挑选并检查可能是错误的其他警报。

每个检测器的根本原因分析由一位作者独立进行,分析结果由其他作者检查和讨论。然后,作者通过debloating现实世界的代码来准备一个代表性的最小工作示例(MWE),以证明检测器中发现的误报的存在和根本原因。所报告和抽样的滥用总数的概述可在附录 A-A 中找到。在以下部分中,我们将介绍高级别的误报模式,并按其根本原因进行分组,并提供一些代表性示例。附录 B 解释了如何访问我们公开发布的工件。

FALSE POSITIVES FROM STATIC ANALYSIS

R

Well said I agree

More from this blog

秋招日记 --02.26

美团开放暑期实习(https://zhaopin.meituan.com/web/position/detail?jobUnionId=2308284146&highlightType=campus) 岗位一 【转正实习】安全工程师 岗位职责 负责公司的安全攻防能力建设,以下方向任选其一。 【Web应用安全方向】 1.负责公司应用安全生命周期的安全建设落地和运营; 2.负责公司黑盒扫描平台规则运营和优化; 3.负责公司白盒代码扫描平台的运营和优化; 4.负责跟踪业界安全攻防动态,追踪最新安全漏...

Feb 26, 20241 min read
秋招日记 --02.26

Crime 攻击

滥用TLS1.2 的支持压缩特性来进行攻击 CRIME(Compression Ratio Info-leak Made Easy)攻击是一种利用TLS/SSL协议中压缩算法的漏洞的攻击,攻击者可以通过截获被压缩的数据包,利用压缩算法的特性来推断出明文数据的信息。CRIME攻击的过程如下: 攻击者在网络中截获使用TLS/SSL协议通信的数据包。 攻击者使用恶意请求,向服务器发送一个包含一些已知数据的请求,并将其与要攻击的数据一起压缩。 通过比较压缩前后数据包的大小,攻击者可以推断出被攻击数...

Jun 4, 20231 min read

Crypto7's Blog

8 posts