このPoCは教育および研究目的のみで提供されます。 作者は、このコードの誤用またはそれによって生じた損害について一切の責任を負いません。
このPowerShellスクリプトは、CVE-2013-3900で説明されている攻撃をシミュレートするためのテストツールです。 CVE-2013-3900は、WindowsのAuthenticodeメカニズムに関するもので、PE署名(EXE/DLLファイル)の証明書セクションに追加データ(パディング)が含まれる可能性があります。古いWindowsの設定やデフォルト設定では、このような改変は署名を無効にしないため、ファイルに悪意のあるコードを追加しても「署名済み」ステータスが維持されます。 レジストリでEnableCertPaddingCheck=1を有効にすると、システムは追加のパディングを整合性違反として扱い始め、そのようなファイルを拒否します。
スクリプト:
保護が有効な場合、変更されたファイルは拒否されます(0x800B0100)。無効な場合、受け入れられます(0x00000000)。
MSBuild.exeを使用しているのは、これが組み込みのAuthenticode署名(カタログ署名ではない)を持つWindowsシステムファイルであり、証明書セクションを直接変更してCVE-2013-3900の脆弱性を確実にシミュレートできるからです。 これにより、テストは再現可能になり、追加のファイルをダウンロードすることなく、任意のWindows Serverインストールで動作します。
スクリプトの実行方法:
CMD C:\>powershell -ExecutionPolicy Bypass -File C:\CVE-2013-3900-PoC-padding-injection.ps1
リンク: https://msrc.microsoft.com/update-guide/vulnerability/CVE-2013-3900