缓冲区中敏感信息的明文存储¶
ID: cpp/cleartext-storage-buffer
Kind: path-problem
Security severity: 7.5
Severity: warning
Precision: medium
Tags:
- security
- external/cwe/cwe-312
Query suites:
- cpp-security-extended.qls
- cpp-security-and-quality.qls
以明文形式存储的敏感信息可被获取存储访问权限的攻击者访问。
建议¶
确保敏感信息在存储到文件或通过网络传输之前始终进行加密。将信息放入内存中可能可读的缓冲区之前对其进行加密可能是一个明智之举。
通常,仅在必须以明文形式使用敏感信息时才对其进行解密。
示例¶
以下示例展示了两种在文件中存储用户凭据的方法。在“BAD”情况下,凭据以明文形式存储。在“GOOD”情况下,凭据在存储之前被加密。
void writeCredentials() {
char *password = "cleartext password";
FILE* file = fopen("credentials.txt", "w");
// BAD: write password to disk in cleartext
fputs(password, file);
// GOOD: encrypt password first
char *encrypted = encrypt(password);
fputs(encrypted, file);
}
参考¶
M. Dowd、J. McDonald 和 J. Schuhm,《软件安全评估的艺术》,第 1 版,第 2 章 - '加密的常见漏洞',第 43 页。Addison Wesley,2006 年。
M. Howard 和 D. LeBlanc,《编写安全代码》,第 2 版,第 9 章 - '保护秘密数据',第 299 页。微软,2002 年。
常见漏洞枚举:CWE-312.