CS.X509.REVOCATION
已禁用证书吊销列表检查
CS.X509.REVOCATION 检查器会检测 System.Net.Http.HttpClient 类的实例,其中实例使用的是 CheckCertificateRevocationList 属性未设置为 true 的平台特定的句柄(System.Net.Http.WinHttpHandler 或 System.Net.Http.HttpClientHandler)。此条件允许 HttpClient 接受已撤销的证书,并将其视为有效。
漏洞与风险
不适当的证书吊销检查是比相关证书故障更严重的缺陷。因为使用已吊销证书的行为几乎可以断定是恶意的。证书吊销的最常见原因是出现故障的系统遭到攻击,由此导致的结果则是合法的服务器都不会使用已吊销的证书,严重不同步的情况除外。
缓解与预防
请始终将 System.Net.Http.HttpClientHandler.CheckCertificateRevocationList 属性明确设置为 true。
漏洞代码示例
复制
using System.Net.Http;
class ExampleClass
{
void ExampleMethod()
{
WinHttpHandler winHttpHandler = new WinHttpHandler();
winHttpHandler.CheckCertificateRevocationList = false; // Certificate revocation list check is disabled
HttpClient httpClient = new HttpClient(winHttpHandler);
}
}
在此示例中,Klocwork 在第 8 行报告了 CS.X509.REVOCATION 缺陷,这表示“已通过将 CheckCertificateRevocationList 属性设置为 false 来禁用证书吊销列表检查。”
修正代码示例
复制
using System.Net.Http;
class ExampleClass
{
void ExampleMethod()
{
WinHttpHandler winHttpHandler = new WinHttpHandler();
winHttpHandler.CheckCertificateRevocationList = true;
HttpClient httpClient = new HttpClient(winHttpHandler);
}
}