CodeQL 文档

证书未检查

ID: cpp/certificate-not-checked
Kind: problem
Security severity: 7.5
Severity: error
Precision: medium
Tags:
   - security
   - external/cwe/cwe-295
Query suites:
   - cpp-security-extended.qls
   - cpp-security-and-quality.qls

点击查看 CodeQL 仓库中的查询

获取 SSL 证书后,始终检查证书验证的结果。

建议

始终检查 SSL 证书验证的结果。被吊销的证书可能表示数据来自攻击者,而已过期的证书或自签名的证书可能表示数据有更高的恶意可能性。

示例

在本例中,SSL_get_peer_certificate 函数用于获取对等方的证书。但是,在不检查证书是否有效的情况下使用该信息是不安全的。

// ...

X509 *cert = SSL_get_peer_certificate(ssl); // BAD (SSL_get_verify_result is never called)

// ...

在修正后的示例中,我们使用 SSL_get_verify_result 检查证书验证是否成功。

// ...

X509 *cert = SSL_get_peer_certificate(ssl); // GOOD
if (cert)
{
	result = SSL_get_verify_result(ssl);
	if (result == X509_V_OK)
	{
		// ...

参考文献

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