跳过内容

MASTG-TEST-0211: 损坏的哈希算法

概述

要测试 iOS 应用中是否有使用有缺陷的哈希算法,我们需要重点关注加密框架和库中用于执行哈希操作的方法。

  • CommonCryptoCommonDigest.h 定义了以下哈希算法

    • CC_MD2
    • CC_MD4
    • CC_MD5
    • CC_SHA1
    • CC_SHA224
    • CC_SHA256
    • CC_SHA384
    • CC_SHA512
  • CryptoKit:支持三种密码学上安全的哈希算法,以及一个名为 Insecure 的专用类中的两种不安全的哈希算法。

    • SHA256
    • SHA384
    • SHA512
    • Insecure.MD5
    • Insecure.SHA1

注意:Security 框架仅支持非对称算法,因此不在本测试范围内。

步骤

  1. 在应用二进制文件上运行静态分析工具,如 radare2 for iOS,或者使用动态分析工具,如 Frida for iOS,并查找执行哈希操作的加密函数的使用情况。

观察

输出应包含使用相关加密函数的函数的反汇编代码。

评估

如果在源代码中找到使用有缺陷的哈希算法,则测试用例失败。例如

  • MD5
  • SHA-1

保持最新:这是一个不完整的有缺陷的算法列表。 确保检查来自美国国家标准与技术研究院(NIST)、德国联邦信息安全办公室(BSI)或您所在地区任何其他相关机构的最新标准和建议。 在构建将长期存储数据的应用程序时,这一点非常重要。 请确保您遵循 NIST IR 8547 "Transition to Post-Quantum Cryptography Standards", 2024 中的 NIST 建议。

情境考虑:

为了减少误报,在将相关代码报告为不安全之前,请确保您了解该算法的使用情境。 确保它被用于与安全相关的环境中,以保护敏感数据。

例如,NIST 不允许使用有缺陷的 MD5 算法对密码进行哈希处理,因为它不再被认为是用于加密的安全算法。 但是,如果 MD5 用于校验和或其他非加密任务(在这种情况下安全不是问题),通常是可以接受的。

演示

MASTG-DEMO-0015:在 CommonCrypto 中使用有缺陷的哈希算法(使用 r2) MASTG-DEMO-0016:在 CryptoKit 中使用有缺陷的哈希算法(使用 r2)