マイクロソフトは9月5日,なりすましを許すセキュリティ・ホールがすべてのWindows OSにあることを明らかにした。偽造されたデジタル証明書を適切にチェックできないため,S/MIMEを使った偽の署名メールを受信したり,SSLを使用する偽のWebサイトへアクセスしたりした場合でも,Windows上のアプリケーションは警告を出さない。Internet Explorer(IE) for Mac,Office for Mac,Outlook Express for Mac にも同様のセキュリティ・ホールがある。最大深刻度は「高」。対策はパッチを適用することである。

 セキュリティ・ホールの原因は,Windows OSが備える「CryptoAPI」の不具合である。CryptoAPIは,Windows上で暗号化や復号,署名の機能を実現するためのアーキテクチャである。その実装に不具合があるために,ある特定の方法で偽造されたデジタル証明書を,正しいものとして受け入れてしまう。Macには CryptoAPI がないものの,IE/Office/Outlook Express for Macそれぞれに同様の不具合が存在するために影響を受ける。

 デジタル証明書は,CA(Certificate Authority,認証機関)からユーザー(エンド・エンティティ)に対して発行される。CAは,デジタル証明書に含まれる公開カギ情報が,確かにそのメール・アドレス(URL)を持つユーザー(Webサイト)のものであることなどを証明する。

 現在使われているデジタル証明書の仕様(X.509 V.3)では,上記の“証明”を階層化することができる。具体的には,CA 1がCA 2を証明し,CA 2がユーザー1を証明すると,CA 1がユーザー1を証明したことになる(この場合,CA1は“ルートCA”,CA2は“下位CA”などと呼ばれる)。ただし,階層的に証明されている場合には,デジタル証明書にその旨が明記されるので,CA 1から証明を受けた攻撃者が,下位CAになりすまして他人を証明するデジタル証明書を作っても,偽造したことはすぐに分かる(IEやOutlook Expressといったアプリケーションが,受け入れる前に警告を発する)。

 しかし,CryptoAPIの実装の不具合により,Windows OSおよびIE for Macなどでは,階層的に証明されているかどうかを記述した部分(「Basic Constraints」フィールド)をチェックしない。そのため,偽造された証明書のルートCAが,あらかじめアプリケーションに登録されているCAならば,アプリケーションは警告を出すことなく受け入れてしまう。

 そのため攻撃者は,他人名義のデジタル署名メールを出したり,他の信頼できるサイトを装ったSSLサイトを構築したり,ActiveX コントロールに偽の署名を施したりすることが可能となる(ただし,それぞれの攻撃には前提条件や制限が複数存在する。詳細ついては米Microsoftの情報などを参照してほしい)。

 対策はパッチを適用すること。ただし,現時点(9月5日19時)ではWindows NT 4.0とXP用のパッチしか公開されていない。深刻なセキュリティ・ホールなので,NTおよびXP以外のユーザーは,マイクロソフトのサイトやWindows Updateをチェックして,公開され次第適用したい。

【9月6日追記】Windows 98/98SE/Me用のパッチも公開された

【9月11日追記】Windows 2000用のパッチも公開された。ただし,現時点ではWindows Updateには登録されていない。

 米Microsoftの公開情報によると,既に攻撃方法(コード)が公開されているため,すべてのパッチがそろう前に公開を開始したという。実際あるメーリング・リストでは,別のユーザーの証明書を偽造する方法が紹介されている。

◎参考資料
MS02-050 に関する情報(要約情報およびパッチ,マイクロソフト)
Microsoft Security Bulletin MS02-050「Certificate Validation Flaw Could Enable Identity Spoofing (Q328145)」(米Microsoft)
証明書確認の問題により,ID が偽装される (Q328145) (MS02-050)(マイクロソフト)

(勝村 幸博=IT Pro)