
CVE-2013-3900 (WinVerifyTrust) / Tenable Plugin 166555 に対する EnableCertPaddingCheck を使用した PowerShell による修復
このリポジトリには、Tenable/Nessus の検出項目に対処する PowerShell の修復+検証スクリプトが含まれています。
このスクリプトは、次の設定を行うことで WinVerifyTrust の証明書パディングチェックを強制します。
EnableCertPaddingCheck (DWORD) = 164 ビットシステムでは、スキャナーは、ネイティブのレジストリパスと Wow6432Node (32 ビットビュー) レジストリパスの両方に値が設定されている必要があります。
CVE-2013-3900 は、Windows が WinVerifyTrust を使用して Authenticode 署名を検証する方法に関連しています。
証明書パディングチェックが強制されていない場合、特定の細工された署名が安全でないシナリオで有効として扱われる可能性があり、脆弱性スキャナーはホストを非準拠としてフラグ付けします。

✅ 管理者として実行されることを確認
✅ OS が 64 ビットかどうかを検出
✅ 必要なレジストリキーが存在することを確認
✅ EnableCertPaddingCheck を次のように設定:
$secureEnvironment = $true の場合 1 (安全 / 推奨)$secureEnvironment = $false の場合 0 (安全でない / ラボ / テスト)✅ 明確な Before/After テーブルとコンプライアンス結果を出力
スクリプトの場所:
スクリプトは次の場所に設定を適用します。
HKLM:\Software\Microsoft\Cryptography\Wintrust\ConfigHKLM:\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config (64 ビット OS)強制される値:
EnableCertPaddingCheck (DWORD)$secureEnvironment = $true → 緩和策を強制 (推奨)$secureEnvironment = $false → 緩和策を無効 (ラボ/テストのみ).\scripts\Set-WinVerifyTrustCertPadding.ps1
スクリプトは次の方法で構成を検証します:
0 を返す高重要度の検出項目が存在 (プラグイン 166555 – CVE-2013-3900)。
合計検出項目数: 5

高重要度の検出項目が削除されました。
合計検出項目数の削減: 5 → 4
