证书未检查¶
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
获取 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)
{
// ...
参考文献¶
常见弱点枚举:CWE-295.