SV.PASSWD.HC

当硬编码字符串或硬编码字符串的一部分获得接受密码的方法或执行加密的方法时,便会出现此错误。

漏洞与风险

源代码对于密码是不良存储器。首先,其他开发人员可以读取它们。可轻松从 Java 字节码中提取字符串密码,让具有字节码的人员可读取它们。此外,如果不升级软件,将不能更改密码。用作摘要的一部分的硬编码字符串可为攻击者提供密钥创建方式的线索,这样攻击者便可尝试预测密钥(例如会话密钥)。

Klocwork 安全漏洞 (SV) 检查器可识别可能创建危险数据的调用;这些调用被视为不安全的来源。用户所提供的任何数据都可能是不安全的来源,因为用户可能是攻击者,或者可能引入人为错误。

缓解与预防

密码应动态输入并应存储不可逆的摘要,如 md5。如果方法需要纯文本的密码,将加密密码存储在配置文件中。

示例 1

复制
     public static void main(String[] args) throws Exception {
         Properties info = new Properties();
         info.setProperty("user", "root");
         info.setProperty("password", "^6nR$%_");
         Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3307", info);
         try {
             //...
         } finally {
             connection.close();
         }
     }

针对第 16 行报告 SV.PASSWD.HC:字符串“^6nR$%_”用作密码或其一部分:源代码对于密码是不良存储器;攻击者可使用此字符串确定备用身份验证通道,或猜测会话密钥的组成方式。

扩展

此检查器可通过 Klocwork 知识库进行扩展。有关详情,请参阅调整 Java 分析。