MASTG-TEST-0211: 损坏的哈希算法
概述¶
要测试 iOS 应用中是否有使用有缺陷的哈希算法,我们需要重点关注加密框架和库中用于执行哈希操作的方法。
-
CommonCrypto:CommonDigest.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 框架仅支持非对称算法,因此不在本测试范围内。
步骤¶
- 在应用二进制文件上运行静态分析工具,如 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)