|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
MHVI#20061019:
|
すり抜けパターン | 該当 (代表) ソフト | 説 明 |
7-Zip 型 | 該当なし |
このタイプでは, 基本, 拡張, それぞれのヘッダー毎に必要な大きさのバッファーを動的確保した上で読込が行われます。 従って, 基本的にサイズによる制限が存在しないことから, 格納ファイルが検疫をすり抜けてしまうこともありません。 このタイプであれば安全と言えます。
余談ながら, このタイプの場合, 自身に制限が存在しない分「ヘッダー全体のサイズに疎い」という弊害の出てしまう場合があります。 |
LHA for UNIX 型 |
NOD32 V2.5, F-Secure Anti-Virus 5.72, F-Secure Anti-Virus 7.00 |
ここで言う LHA for UNIX は autoconf 版を指します。 このタイプでは, 基本ヘッダーと拡張ヘッダーそれぞれに 4KB の固定バッファーが用意されていて, ヘッダー毎に, そこへ読込を行います。 4KB を超えるような拡張ヘッダーが存在した場合は, 当該メンバーについての処理を打ち切ります。 基本ヘッダーが 4KB を超えることはありません。 従って, 4KB を超える拡張ヘッダーの付加された格納ファイルが, 検疫をすり抜けてしまうことになります。 |
オリジナル型 |
Norton AntiVirus 2006, Norton AntiVirus 2007, ウイルスバスター 2007, Virus Security 9.1.0046, avast! 4.7 Home Edition |
「オリジナル」とは LHA.EXE を指します。 このタイプでは, 4KB の単一固定バッファーが用意されていて, そこへヘッダー全体を一括して読み込みます。 その後, 処理を行う中でヘッダーが 4KB を超えていると判断できた時点で, 当該メンバーの処理を打ち切ります。 従って, ヘッダーの構造にかかわらず, 全体が 4KB を超えるヘッダーの付加された格納ファイルが, 検疫をすり抜けてしまうことになります。 |
例外型 |
VirusScan Enterprise 8.0i, McAfee VirusScan 11.0.213, CA Anti-Virus 8.1.0.203, AVG Anti-Virus 7.5.430 |
|
[Oct.27,2006:追記 2]
上の表に登場した対策ソフトについては, さすがにバッファーオーバーフローは発生しません, 念のため。
それと, 昨日書いたメールによるテストについてですが, 本物のウイルスを使うようなことはありませんので, お間違えの無いように。(笑) 動作確認用として各ベンダーで共通して使用され, また Web 上でも公開されている EICAR を使用しています。
[Oct.28,2006:追記]
上記の一覧について少々誤解されている方があるようなのですが, 一覧されている対策ソフトが, 振り分けられているタイプの処理を行っているとは限りません。 あくまでも「そのタイプの処理を行った場合と同様の挙動を示している」に過ぎません。 例えば, LHA for UNIX 型の処理を行っていたとしても, 十分なサイズのバッファー (ヘッダー単体であれば上限値が存在します。) が確保されていれば, 挙動は 7-Zip 型と同じになります。
[Oct.28,2006:追記 2]
VMware のゲスト PC に導入している NIS 2007 について, 上の一覧に追加しておきます。 今後も人知れず追加されると思います。(笑)
[Oct.29,2006:追記]
上で「人知れず追加」と書きましたが, 3 つほど追加したところで先が見えましたので, これ以上の調査は止めました。 結論は大多数の対策ソフトですり抜けが発生するということになってしまうようです。(泣)
[Oct.29,2006:追記 2]
「IPA に報告していないの?」といったような声も聞こえてきたのですが, 「それにより当該対策ソフトに対して攻撃が可能」といった状況でもないと受け付けてもらえません。 そうと知った上で敢えて (複数のベンダーが該当すると判明した) 26 日に打診してみましたが, 当然のごとく却下されました。 「それは対策ソフトの機能・性能の問題。 ただし, それを利用して別の脅威が考えられる場合には, 届出対象となる可能性あり」という見解だったのですが, 後者にも当たらないという判断のようですね。 要は「攻撃対象となったソフトの脆弱性であり, 今回の件とは別問題」ということなのでしょう。 すでに「別問題」として片付けられるような規模でなくなりつつあるような気もしますけれど…。(^^;)
あと, 上で書いた「本国へ直接報告したものの理解してもらえなかった」の部分について「そりゃ, あんたの英語が下手だったからでしょ?」という突っ込みがあったのですが, いえ, 最初だけは確かに下手な英語でしたけれど, あとは現地の日本人スタッフと日本語でのやりとりでしたから。(笑)
実は LZH 書庫の場合と同様の問題が ARJ 書庫にも存在します。 むしろ, ヘッダーのサイズに限って言えば形式に限らない問題なのかもしれません。 それはともかく, ARJ 書庫ではファイル名等の情報が基本ヘッダーに SZ 形式で記録されていることから, こと名前に関しては, こちらのほうが深刻と言えます。
まず, ヘッダー読込に関してですが, LZH 書庫と異なり, ARJ 書庫の場合は動的バッファーを採用した場合でもバッファーオーバーフローの危険があります。 というのも, 上述したように, ファイル名などの名前やコメント情報が SZ 形式で記録されているからです。 もしヘッダーの CRC を確認しなかった場合, 名前を扱おうとした段階で容易にバッファーオーバーフローが発生してしまいます。 幸い, LZH 書庫に対して CRC チェックを全く行っていなかった 7-Zip や WinRAR でも ARJ 書庫に対してはチェックを行うようになっていますので, 問題は発生しません。
次に, 名前に関してですが, (拡張ヘッダーの) サイズ情報と SZ 形式という違いはあれども CVE-2004-0234 と同様の問題が発生する可能性があり, 実際この部分でバッファーオーバーフローの発生してしまうソフトが存在します。 (Lhaplus 等。) もっとも, Lhaplus の場合は CRC のチェックを行っていないので, ヘッダーサイズのほうで問題が発生しているのかもしれませんけれど…。
さらに, ここでも Norton AntiVirus 2006 等は検疫を行ってくれません。 恐らく, 書庫に限らず同様の問題が発生するのでしょう。 「扱えないものは処理を打ち切ってしまえばよい」という方法で済む類のソフトではありませんので, Symantec には動的バッファーによる方法を採用してもらいたいところです。
[Oct.30,2006:追記]
ARJ 書庫の場合でも, 各ソフトのバッファーサイズの違いにより, LZH 書庫と同様の問題が発生しますので, 一覧しておきます。 総じて小さめのヘッダーしか扱えないことから, テストデーター自体がオリジナルの限界サイズとの差が小さい点に注意してください:
すり抜けパターン | 該当 (代表) ソフト | 説 明 |
動的確保型 |
NOD32 V2.5, CA Anti-Virus 8.1.0.203, avast! 4.7 Home Edition |
LZH 書庫の場合と同様, 動的にバッファーを確保して読込を行っていると考えられますが, テストデーター自体が比較的小さなヘッダー (それでもメジャーどころのアーカイバー等が全滅する程度の大きさ。) となってしまっているため, 大きめのバッファーを採用しているソフトが, ここに該当してしまっている恐れがあります。 ここに該当するソフトは, 他に比べて, より安全と言えます。 |
7-Zip 型 |
VirusScan Enterprise 8.0i, McAfee VirusScan 11.0.213, ウイルスバスター 2007, F-Secure Anti-Virus 5.72, F-Secure Anti-Virus 7.00 |
このタイプでは, オリジナルより僅かに大きい 2.5KB 超の固定バッファーが用意されていて, そこへ基本ヘッダーを読み込みます。 拡張ヘッダーについては, バッファーへの読込を行わず単純にスキップしていると思われますが, Win 環境で作成された書庫には拡張ヘッダーが存在しないため, 詳細は判りません。 従って, 基本ヘッダーが約 2.5KB を超えるヘッダーの付加された格納ファイルが, 検疫をすり抜けてしまうことになりますが, 多くのソフトと同等のバッファーであることから, 比較的安全と言えるかもしれません。 |
オリジナル型 |
Norton AntiVirus 2006, Norton AntiVirus 2007, AVG Anti-Virus 7.5.430 |
「オリジナル」とは UNARJ.EXE を指します。 このタイプでは, 2.3KB 弱の固定バッファーが用意されていて, そこへ基本ヘッダーを読み込みます。 拡張ヘッダーについては, バッファーへの読込を行わず単純にスキップします。 従って, 基本ヘッダーが 2.3KB を超えるヘッダーの付加された格納ファイルが, 検疫をすり抜けてしまうことになります。 7-Zip 型と僅かな違いではありますが, その差による影響は大きいと思われます。 |
例外型 | Virus Security 9.1.0046 | Virus Security 9.1.0046 は ARJ 書庫に対応していませんので, ARJ 書庫には無力です。(泣) |
ZIP 書庫においても, ファイル名等の名前が 64KB まで記録できる仕様となっていますので, LZH や ARJ 書庫と同様, 問題の発生が考えられます。 こちらについても 64KB の名前が記録されたものを使用して, 興味本位でテストを行ってみたのですが, 予想外の結果 (全勝と予想。) となりました:
すり抜けパターン | 該当 (代表) ソフト | 説 明 |
直接取得型 |
Norton AntiVirus 2006, Norton AntiVirus 2007, VirusScan Enterprise 8.0i, McAfee VirusScan 11.0.213, ウイルスバスター 2007, F-Secure Anti-Virus 5.72, F-Secure Anti-Virus 7.00, CA Anti-Virus 8.1.0.203, AVG Anti-Virus 7.5.430 |
このタイプでは, (単一) ヘッダー全体ではなく, ヘッダー内の項目毎にバッファーへ読み込むか, 直接情報を取得します。 バッファーは動的, 若しくは仕様上最大となる 64KB (+ α) 固定のものが使用されることから, 基本的にサイズの制限が存在しませんので, 格納ファイルが検疫をすり抜けてしまうこともありません。 このタイプであれば安全と言えます。 |
固定項目長型 |
NOD32 V2.5, Virus Security 9.1.0046, avast! 4.7 Home Edition |
このタイプでは, バッファー等については動的確保を行っているなど, すり抜けに繋がる処理とはなっていませんが, 当該ソフトの既定値を超えた長さの名前が記録されているなどの場合に, 処理を打ち切ってしまいます。 そういった意味では, 「ヘッダーのサイズ」ではなく「項目のサイズ」に制限のあるタイプといえます。 従って, メンバー名の偽装を行ったものなど (ヘッダーの CRC が存在しませんので容易に行えます。), 簡単に格納ファイルの検疫すり抜けが発生してしまいます。 Virus Security と avast! が 4KB 程度のものまでは検疫できたのに対して, NOD32 は 1KB のものが, すでに検疫できませんでした。 |
巨大なヘッダーによるバッファーオーバーフロー発生の脆弱性については, 比較的最近の Ver 1.98b で対応が行われています。 サイズチェック自体は行っていたものの, h0/h1 形式での拡張ヘッダー読み込み時における全体サイズのチェックが抜けてしまっていたのが, その理由です。 開発用 PC にソースが残っていて即時の参照が可能だった 6 年前の Ver 1.51 以降については, 次のような処理を行います:
巨大なヘッダーによるバッファーオーバーフロー発生の脆弱性については, 元々 UNARJ.EXE が既定のバッファーサイズを超えるものをヘッダーとして扱わないようになっていることから, 基本的には対応済みといえます。 開発用 PC にソースが残っていて即時の参照が可能だった 6 年前の Ver 0.43 以降については, 次のような処理を行います:
巨大なヘッダーによるバッファーオーバーフロー発生の脆弱性については, h0/h1 形式での拡張ヘッダー読み込み時における全体サイズのチェックが抜けてしまっているため, 現行の Ver 0.09 (LHMelt Ver 1.52c に付属。) でも未対応部分が残ってしまっています。 次のような処理を行います: