跳过内容

MASTG-TEST-0214: 文件中硬编码密码密钥

概述

加密密钥可能嵌入在文件中,如配置文件或密钥文件、证书文件或其他与应用程序捆绑在一起的资源文件中,使得任何可以提取应用程序资源的人都可以访问它们。现实案例包括在这些文件中存储 API 密钥、SSL/TLS 私钥或加密密钥,如果应用程序被逆向工程,这可能导致严重的安全漏洞。

  • 通过文件扩展名识别:具有诸如.key.pem.crt.p12.cer.der等扩展名的文件通常包含加密密钥或证书。
  • 通过 PEM 标记识别:诸如-----BEGIN PRIVATE KEY----------BEGIN CERTIFICATE-----之类的字符串,或者文件中的字节序列0x2d 0x2d 0x2d 0x2d 0x2d(表示 ASCII 中的-----)指示存在 PEM 编码的密钥或证书。
  • 通过常见字节模式识别:包含与已知 DER 或 PKCS#12 格式匹配的特定字节序列(如0x30 0x82,表示 DER 编码结构的开始)的二进制文件可能表明存在加密材料。
  • 嵌入在属性列表或 JSON 文件中:密钥可能存储在.plist.json配置文件中,通常编码为 Base64 字符串。
  • 通过特定字符串识别:文件或变量名中的诸如privateKeykeysecret之类的关键字可以指示嵌入的密钥或敏感数据。

步骤

  1. 在应用程序二进制文件上运行静态分析工具,例如 radare2 for iOS,查找如上所示的字符串或字节序列。

观察

输出应包括在应用程序的源代码或二进制文件中发现任何潜在加密密钥的硬编码实例。

评估

如果在源代码或二进制文件中发现硬编码的加密密钥,则测试失败。

确保任何已识别的密钥确实是用于安全相关目的的加密密钥。 通过验证密钥的使用上下文来避免误报(例如,配置设置或非安全相关的常量可能被错误地识别为加密密钥)。