[2014/7/30 追記]
セキュリティ アドバイザリ 2915720 およびセキュリティ情報 MS13-098 を更新し、 MS13-098 に含まれる Windows Authenticode 署名検証の機能を 2014 年 8 月 12 日 (米国日付) に既定で有効化 しない ことをお知らせしました。ただし、この機能自体はなくなっておらず、お客様はご自身で必要に応じて有効化することができます (設定方法や詳細は MS13-098 をご覧ください)。今回の決定は、これまでお客様と検証を進める中、既定で有効にした場合の既存のソフトウェアへの影響が大きいと判断したためです。なお、将来リリースする Windows のバージョンではこの機能を既定で有効と設定する可能性もあります。
[2014/5/22 追記]
セキュリティ アドバイザリ 2915720 およびセキュリティ情報 MS13-098 を更新し、Windows Authenticode 署名検証の自動有効化の開始を 2014 年 6 月 10 日 (米国日付) から 2014 年 8 月 12 日 (米国日付) に変更 したことをお知らせしました。これに伴い、本ブログ内の日付も変更いたしました。
こんにちは、村木ゆりかです。
2013 年 12 月に公開し、2014 年 2 月にも再告知を行った セキュリティ アドバイザリ 2915720「Windows Authenticode 署名検証の変更」は、これまでにお知らせしているとおり、Windows Authenticode 署名形式で署名したバイナリの署名の検証が、より厳格な検証を行うよう動作変更します。
この動作変更の更新プログラムは、セキュリティ情報 MS13-098「Windows の脆弱性により、リモートでコードが実行される」に含まれており、2014 年 8 月 12 日 (米国時間) に、厳格な検証を有効化するよう自動更新を開始する予定です。現在、お使いの環境でこの Authenticode 署名検証変更の動作テストを実行することを推奨しています。
本日は、自動更新による有効化が始まる 6 月まであと 2 か月弱となりましたので、本ブログでも、改めてご案内いたします。
■ 概要
Windows 上にて、Authenticode 署名形式で署名されたバイナリ (Windows Portable Executable 型式) の検証を行う際、より厳格な検証を行うように動作を変更します。
動作変更の更新プログラムは、セキュリティ情報 MS13-098「Windows の脆弱性により、リモートでコードが実行される」に含まれています。現在は、更新プログラムをインストールしても、この変更は既定では有効になりませんが、2014 年 8 月 12 日 (米国時間) に、厳格な検証を有効化するよう自動更新を開始する予定です。
現在、お使いの環境でこの Authenticode 署名検証変更の動作テストを実行することを推奨しています。
■ Authenticode 署名とは
Authenticode 署名とは、デジタル署名の形式のひとつで、Windows で利用するバイナリ (Windows Portable Executable 型式) を署名するために広く利用されています。署名を行うことで、バイナリの利用時に、作成者 (発行元) の確認や、バイナリに不正な改ざんが行われていないことを確認することができます。
たとえば、インターネットで配布しているアプリケーションのインストーラーに、署名を行っておきます。ダウンロードしたユーザー側では、署名を確認することで、インストーラーが信頼のおける開発者から発行されたものであり、また、ウイルスが仕込まれるなどの改ざんがされていないことを確認することができます。
Authenticode の概要については、「Introduction to Code Signing」(英語情報) を参照してください。
■ より厳格な Authenticode 署名検証とは
Authenticode 署名に関する情報は、Public-Key Cryptography Standards (PKCS) #7 の署名データおよび X.509 証明書を使用しており、署名対象のバイナリ (Windows Portable Executable) のデータの一部として保存されています。署名されたバイナリを利用する際は、Windows の WinVerifyTrust 機能を利用し、この保存されているデータを利用して、署名が正しいものであるか検証が行われます。
より厳格な署名の検証においては、この署名データや証明書を格納しておく部分に、無関係なデータが含まれているかをチェックするようになります。もし、無関係なデータが含まれている場合は、署名は非準拠とみなします。(署名がされていないバイナリとして判断します) 非準拠のバイナリを使用している場合は、例えばバイナリがアプリケーションの場合は警告が表示されたり実行不可となる、インストーラーの場合は、インストールが行えないなどが発生する可能性があります。
技術的な詳細については、以下の情報を参照してください。
・Microsoft Security and Research Blog “MS13-098: Update to enhance the security of Authenticode” (英語情報)
・Introduction to Code Signing (英語情報)
・WinVerifyTrust function (英語情報)
・Authenticode Portable Executable Signature Format (英語情報)
■ 動作テストをお願いします
2014 年 8 月 12 日 (米国時間) までに、開発者の方は署名しているバイナリが厳格な署名検証に準拠しているか、IT 管理者の方はお使いの環境で非準拠のバイナリがないか、動作検証することをお勧めしています。
動作変更の更新プログラムは、MS13-098 で公開されているセキュリティ更新プログラムに含まれています。現時点では更新プログラムをインストールするだけでは、厳格な署名の検証有効になりません。MS13-098 のセキュリティ更新プログラムをインストールし、レジストリ EnableCertPaddingCheck 値を追加することで、厳格な署名の検証が有効になります。
厳格な署名の検証を有効にした環境で、アプリケーションやサービスが正しく稼働するか、インストーラーが正しく動作するかなどをご確認ください。
詳細は、セキュリティ アドバイザリ 2915720「推奨するアクション」の項目を参照してください。
■ タイムライン (米国時間で表記)
2013 年 12 月 10 日:
・セキュリティ アドバイザリ 2915720「Windows Authenticode 署名検証の変更」を公開
・セキュリティ情報 MS13-098「Windows の脆弱性により、リモートでコードが実行される」を公開し、署名の検証方法を変更する修正を公開
注意: 現時点では更新プログラムをインストールしても、この変更は既定では有効になりません。
2014 年 2 月 11 日
・セキュリティ アドバイザリ 2915720 を再リリースし改めてお知らせ
2014 年 8 月 12 日 (予定)
・Authenticode 署名のより厳格な検証を有効化するための更新を、自動更新で配信予定
・より厳格な検証が有効化された端末においては、署名データや証明書を格納しておく部分に、無関係なデータが含まれているかをチェックするようになります。
・無関係なデータが含まれている場合は、署名は非準拠とみなします。(署名がされていないバイナリとして判断します)
・非準拠のバイナリを使用している場合は、例えばバイナリがアプリケーションの場合は警告が表示されたり実行不可となる、インストーラーの場合は、インストールが行えないなどが発生する可能性があります。
■ 参考情報
Microsoft Security and Research Blog “MS13-098: Update to enhance the security of Authenticode” (英語情報)
Introduction to Code Signing (英語情報)
WinVerifyTrust function (英語情報)
Authenticode Portable Executable Signature Format (英語情報)