CodeQL 文档

插入敏感信息到日志文件

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

点击查看 CodeQL 存储库中的查询

写入日志文件的信息可能是敏感的,并为攻击者提供有价值的指导或暴露敏感用户信息。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")
    }
}

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私