CS.X509.REVOCATION
証明書失効リストのチェックが無効になる
CS.X509.REVOCATION チェッカーは、CheckCertificateRevocationList プロパティが true に設定されていないプラットフォーム固有のハンドラー (System.Net.Http.WinHttpHandler または System.Net.Http.HttpClientHandler) を使用している、System.Net.Http.HttpClient クラスのインスタンスを検出します。この条件により、失効した証明書は 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 が提供しているアプリケーションセキュリティトレーニング教材。