CodeQL 文档

使用已损坏或有风险的加密算法

ID: cpp/weak-cryptographic-algorithm
Kind: problem
Security severity: 7.5
Severity: error
Precision: high
Tags:
   - security
   - external/cwe/cwe-327
Query suites:
   - cpp-code-scanning.qls
   - cpp-security-extended.qls
   - cpp-security-and-quality.qls

点击以在 CodeQL 存储库中查看查询

使用已损坏或较弱的加密算法可能会导致数据易于被解密。

已知加密库提供的许多加密算法都比较弱或存在缺陷。使用此类算法意味着攻击者可能能够轻松解密加密数据。

建议

确保使用强大且现代的加密算法。至少使用 AES-128 或 RSA-2048。

示例

以下代码显示了使用 advapi Windows API 解密某些数据的示例。创建密钥时,必须指定要使用的算法。第一个示例使用 DES,这是一种较旧的算法,现在被认为比较弱。第二个示例使用 AES,这是一种强大且现代的算法。

void advapi() {
  HCRYPTPROV hCryptProv;
  HCRYPTKEY hKey;
  HCRYPTHASH hHash;
  // other preparation goes here

  // BAD: use 3DES for key
  CryptDeriveKey(hCryptProv, CALG_3DES, hHash, 0, &hKey);

  // GOOD: use AES
  CryptDeriveKey(hCryptProv, CALG_AES_256, hHash, 0, &hKey);
}

参考文献

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