CVE-2013-3900 の対処策と影響について

Last Update: feedback 共有

※※ 2024/11/15 更新
※※ EnableCertPaddingCheck レジストリの追加手順内のデータ型を修正しました。

こんにちは。Windows Commercial Support Directory Services チームです。

今回は CVE-2013-3900 の対処策と影響について、お問い合わせでよくいただくご質問などをもとに、
公開情報の内容を抜粋し、補足と共に紹介いたします。

CVE-2013-3900 について

CVE-2013-3900 の詳細は以下の公開情報に掲載されておりますので、まずはこちらをご参照ください。

CVE-2013-3900 - Security Update Guide - Microsoft - WinVerifyTrust Signature Validation Vulnerability

なお、過去の記事でも同様の内容が日本語でも公開されておりますが、上記 URL はこれらの内容が現在サポートされている OS でも影響があり、対処策が使用できることを通知するためのものとなっております。

マイクロソフト セキュリティ情報 MS13-098 - 緊急 | Microsoft Docs

本脆弱性の概要と背景について

CVE-2013-3900 に対し、 2013 年に解決策を開発し、2014 年にデフォルトの機能としてリリースすることを想定していました。
この解決策は、脆弱な動作を無効にすることでした。そのためには、世界中のソフトウェア ベンダーと協力して、この動作に依存しない実行ファイルを各ベンダーからリリースして頂く必要がありました。

修正を有効にするタイミングは、最初の発表では 2014 年 6 月に設定され、2 回目の発表では 2014 年 8 月に設定され、
3 回目の発表では、デフォルトの設定を有効にはしないと発表しました。正常なソフトウェアへの影響が非常に大きく、動作を保証することができなかったためです。

この機能は Windows 10 や Windows 11 など現在サポートされている OS においては、リリース時点で対象のレジストリに対応するコードは組み込まれています。しかし、上述の理由等からこの機能を既定の機能として適用しておりません。
この脆弱性に対処するには追加で EnableCertPaddingCheck レジストリを設定する必要があり、現在サポートされている Windows 10 と Windows 11 のバージョンにも影響する脆弱性でもあるため、改めてお客様に通知させて頂いております。

対処方法について

本脆弱性への対応は、実行ファイルを実行して利用するユーザーと、実行可能ファイルを作成するユーザーで対処いただく内容が異なります。
よくお問い合わせでいただく内容について、公開情報から抜粋して紹介いたします。

実行ファイルを利用するユーザーの場合の対応について

現在サポートされている OS において CVE-2013-3900 へ対処するには、公開情報に記載の EnableCertPaddingCheck のレジストリを追加する必要があります。
この機能変更を有効にした場合、準拠していないバイナリは未署名と見なされ、信頼できないバイナリのように表示されることがございます。
Authenticode 署名の検証の機能強化を有効にするレジストリの設定変更を行い、機能を有効にして影響が無いか動作テストを実施してください。具体的には以下の内容となります。

x64 ベース システムの Windows の場合

  1. 次のテキストをメモ帳などのテキスト エディターに貼り付けます。このファイルに .reg という拡張子を付けて保します (例: enableAuthenticodeVerification64.reg)。

    1
    2
    3
    4
    5
    6
    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=dword:1

    [HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=dword:1
  2. 作成した .reg ファイルを、機能を有効にする端末上に配置して、ダブルクリックすることで EnableCertPaddingCheck が適用されます。

  3. 変更を反映するには、システムを再起動する必要があります。端末を再起動します。

レジストリがセットされていることをもって、対処が完了となります。
なお、この機能を無効にする場合は、次の手順を実行して、追加したレジストリ値を削除します。

  1. 次のテキストをメモ帳などのテキスト エディターに貼り付けます。このファイルに .reg という拡張子を付けて保します (例: disableAuthenticodeVerification64.reg)。

    1
    2
    3
    4
    5
    6
    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=-

    [HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=-
  2. 作成した .reg ファイルを、機能を有効にする端末上に配置して、ダブルクリックすることで EnableCertPaddingCheck が削除されます。

  3. 変更を反映するには、システムを再起動する必要があります。端末を再起動します。

x86 ベース システムの Windows の場合

  1. 次のテキストをメモ帳などのテキスト エディターに貼り付けます。このファイルに .reg という拡張子を付けて保します (例: enableAuthenticodeVerification.reg)。

    1
    2
    3
    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=dword:1
  2. 作成した .reg ファイルを、機能を有効にする端末上に配置して、ダブルクリックすることで EnableCertPaddingCheck が適用されます。

  3. 変更を反映するには、システムを再起動する必要があります。端末を再起動します。

レジストリがセットされていることをもって、対処が完了となります。
なお、この機能を無効にする場合は、次の手順を実行して、追加したレジストリ値を削除します。

  1. 次のテキストをメモ帳などのテキスト エディターに貼り付けます。このファイルに .reg という拡張子を付けて保します (例: disableAuthenticodeVerification.reg)。

    1
    2
    3
    Windows Registry Editor Version 5.00  
    [HKEY_LOCAL_MACHINE\Software\Microsoft\Cryptography\Wintrust\Config]
    "EnableCertPaddingCheck"=-
  2. 作成した .reg ファイルを、機能を有効にする端末上に配置して、ダブルクリックすることで EnableCertPaddingCheck が削除されます。

  3. 変更を反映するには、システムを再起動する必要があります。端末を再起動します。

実行ファイル作成者の場合の対応について

  1. マイクロソフト ルート証明書プログラムの技術要件について確認
    Windows ルート証明書プログラムについて技術要件をご確認ください。
    Program Requirements - Microsoft Trusted Root Program

  2. バイナリ署名プロセスの変更
    Authenticode 署名が WIN_CERTIFICATE 構造に余分な情報を含んでいないことを確認し、 Authenticode 署名されたバイナリを新しい検証標準に準拠することを推奨しています。

  3. Authenticode 署名検証の設定変更後の動作テスト
    Authenticode 署名の検証の機能強化を有効にするレジストリの設定変更を行い、影響が無いか動作テストを実施してください。

対処策の影響について

影響については、お客様の環境や対象のファイルの動作にも依します。
そのため、恐れ入りますが弊社にてすべての実行ファイルについて動作を把握しているわけではなく、
一概にどういった影響が出るかについてご案内することは困難で、充分検証いただくことをご案内しているところとなります。

一方で既にインストールされているアプリケーション等へは現状事例もなく、特に影響ないものとして報告されております。
また、よくいただくご質問として、更新プログラムのインストールでは影響は発生しません。

影響を受ける可能性の高い実行可能ファイル (PE) バイナリは、インターネット経由で配布されるインストーラー ファイルになります。
ユーザーが新しいアプリケーションのダウンロードとインストールを行い、もし該当するインストーラーを実行した場合、署名検証に失敗し、警告メッセージが表示される可能性があります。

なお、事前に対処策の影響有無を確認するツール等は、Windows 標準では提供されているものはございません。ただし有効な署名があるかどうかであれば、Get-AuthenticodeSignature コマンドレットを利用できます。

Get-AuthenticodeSignature

本投稿が少しでも皆様のお役に立てば幸いです。
※ 本情報の内容 (リンク先などを含む) は、作成日時点でのものであり、予告なく変更される場合があります。

更新履歴

2024/11/14 : 本ブログの公開
2024/11/15 : EnableCertPaddingCheck を追加する処理の修正