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);
     }
 }

安全培训

应用程序安全培训材料由 Secure Code Warrior 提供。