插入敏感信息到日志文件¶
ID: java/sensitive-log
Kind: path-problem
Security severity: 7.5
Severity: warning
Precision: medium
Tags:
- security
- external/cwe/cwe-532
Query suites:
- java-security-extended.qls
- java-security-and-quality.qls
写入日志文件的信息可能是敏感的,并为攻击者提供有价值的指导或暴露敏感用户信息。Log4J 和 SLF4J 等第三方日志记录实用程序在 Java 项目中被广泛使用。当敏感信息被写入日志而没有正确设置日志级别时,潜在攻击者可以访问它,并利用它来获取文件存储的访问权限。
建议¶
不要将机密写入日志文件,并强制执行适当的日志级别控制。
示例¶
以下示例展示了两种记录敏感信息的方式。在“BAD”案例中,凭证被简单地写入调试日志。在“GOOD”案例中,凭证从未被写入调试日志。
public static void main(String[] args) {
{
private static final Logger logger = LogManager.getLogger(SensitiveInfoLog.class);
String password = "Pass@0rd";
// BAD: user password is written to debug log
logger.debug("User password is "+password);
}
{
private static final Logger logger = LogManager.getLogger(SensitiveInfoLog.class);
String password = "Pass@0rd";
// GOOD: user password is never written to debug log
logger.debug("User password changed")
}
}
参考¶
通用弱点枚举:CWE-532。