メール用ウイルス対策ソフトによっては,メールに添付されたウイルス・ファイルを適切に検出できない場合があることが,セキュリティ関連のWebサイトで12月6日に明らかにされた。原因は,MIME(Multipurpose Internet Mail Extensions)の取り扱い。ある細工が施されたウイルス・ファイルについては,対策ソフトではウイルスとして認識できないものの,メール・ソフトではウイルスとして“きちんと”デコードされるという。

 電子メール(SMTP)では,ASCIIコード以外の文字やバイナリ・ファイルなどを送るために,MIME(Multipurpose Internet Mail Extensions)と呼ばれる仕様(標準)が採用されている。ASCII以外の文字や添付ファイルは送信者のメール・ソフトでMIME形式でエンコードされた後,メール・サーバーを経由して送信され,受信者のメール・ソフトでデコードされる。メール用ウイルス対策ソフト(ゲートウエイ型ウイルス対策ソフト)は,エンコードされた状態のデータをチェックして,メールにウイルスが含まれているかどうかを調べる。

 MIMEでは複数のエンコード方式を規定しているが,「Base64」と呼ばれる方式が最近では一般的。Base64では,すべてのデータを64個のASCIIコード(アルファベットや数字など)に変換する。今回の問題は,Base64でエンコードされたデータの取り扱いに起因する。

 MIMEでは,Base64でエンコードされたデータ中に,64個のASCIIコード以外の文字が含まれている場合には,デコード時に無視するように規定している。対策ソフトとメール・ソフトの両方がこの規定に従っていれば問題は発生しない。しかし,対策ソフトが従わず,メール・ソフトだけが従っている場合には,「対策ソフトはすり抜けるが,メール・ソフトではウイルスとしてデコードされる」といった事態が起きる。これが,今回報告された問題である。

 報告者によると,対策ソフトによっては,64個のASCIIコード以外の文字が含まれている場合でも,無視せずに意味のある情報として処理するという。例えば,ウイルス・ファイルをエンコードしたデータ中にスペース(スペースは,64個のASCIIコードには含まれない)を挿入すると,そのウイルスに対応する定義ファイルを使っていたとしても,ウイルスとして認識できない。

 しかし,MIMEに従っているメール・ソフト(Outlookなど)は,上記の例ではスペースを無視してデコードする。その結果,パソコン上では,ウイルス・ファイルが“きちんと”再現されることになる。

 報告者は,ウイルスのテスト・ファイル(ウイルスではないが,ウイルスとして検出するようにベンダー同士が申し合わせているテスト用ファイル)を使って実験した。6種類の対策ソフトで試したところ,きちんと検出できたのは1種類だけ。4種類のソフトでは“すり抜けて”しまい,もう1種類のソフトではブロックされたものの,テスト・ファイルであることは認識されなかったという。

 今回の問題は,リアルタイムでメール(SMTP)のトラフィックを監視するゲートウエイ/サーバー製品だけが影響を受ける。クライアントで動作するデスクトップ用対策ソフトは,メール・ソフトなどの別ソフトがデコードした後のファイルをチェックするので,今回のような問題は発生しない。このため,ゲートウエイ製品だけに頼らず,デスクトップ用対策ソフトも併せて利用することが,今回のような問題の回避策になるだろう。

Quantenblog