国産アーカイブ LHA(拡張子.LZH)の脆弱性が非受理だった理由の個人的見解

4日に国産アーカイバである UNLHA32.DLL の作者である Micco氏 が LHA関連アーカイブソフトの開発を中止(当面バグのみには対応)すると発表し、ニュースになっています。


代表的なソフト

扱うソフトとして有名どころは、

Microsoft 圧縮フォルダ(LZH)
+Lhaca
lhasa

などがあり、LHA(拡張子が LZHの圧縮ファイル)は、ほとんどの人は何らかの形でお世話になってるのではないでしょうか?

歴史

LHAは 吉崎 栄泰 氏が開発したアーカイブソフトで、古くはパソコン通信の時代から国内では使用されていました。(昔は圧縮ソフトのほとんどが有料だったのに対して、これは、フリーソフトでソースも公開されていた)
LHAの標準はlh5という圧縮形式で、lh6/lh7というさらに高圧縮のものも発表されましたが、現在吉崎氏は 医療法人啓和会 黒澤病院の院長として多忙な日々を送られているようで、不便を感じていた、Micco氏が、DLLの許可を得て、開発を引き継いでAPIを整備したのが今のUNLHA32 です。

脆弱性について

・書庫ヘッダのバッファーオーバーフロー

ファイル名やパス名に比較的長めの情報が格納されていると、バッファーオーバーフロー(あふれてメモリのデータ破壊)を起こす解凍ソフトや、セキュリティソフトがある。

・展開するイメージファイルのサイズが大きすぎた場合、検閲をすり抜ける問題

解凍したときのサイズが想定よりも大きかった場合、イメージファイルの解凍を打ち切ってチェックを行わないセキュリティソフトがある。

何故、LHAを開発中止にする?

いろいろなソフトの脆弱性、特に国内で使用されているソフトウェアなどの脆弱性関連情報とその対策情報を提供し、情報セキュリティ対策を促す、JVN(Japan Vulnerability Notes)というポータルサイトがあります。

Micco 氏によると LHA以外にも存在する脆弱性が JVN になぜか受理してもらえなかったので、今後セキュリティソフトなどが対応してくれる望みが薄いので、使用するのが危険だとのことなのですが。

非受理の理由として、LZHがマイナーな形式だからではないかというのを理由に挙げていますが、

JVN#82610488「Lhaplus」におけるバッファオーバーフローの脆弱性
ファイル圧縮・展開ソフト Lhaplus には、LZH 形式のアーカイブ展開処理にバッファオーバーフローの脆弱性があります
JVNVU#773548: gzip の LZH の取扱におけるバッファオーバーフローの脆弱性
JVNVU#596848 gzip の LZH の取扱いにおいて無限ループが引き起こされる脆弱性

LZHに関してのJVN、ちゃんと挙がってますよね。

で、問題になってるのが、これだと思うんですが

CPNI-072928: 複数のアーカイブ形式に対する脆弱性
以下のアーカイブ形式のファイルを扱う製品が影響を受ける可能性があります:
ACE,ARJ,BZ2,CAB,GZ,LHA,RAR,TAR,ZIP,ZOO

CVE-2007-3641
CVE-2007-3644
CVE-2007-3645
CVE-2008-1372
CVE-2008-1387
CVE-2008-1412
CVE-2008-1837
CVE-2008-6536
CVE-2008-6903

私の見解では、問題となっているのは2006年から存在する脆弱性で、既に情報がまとめられている重複する情報だから、非受理として処理されたのではないかと思うんですが、違うんですかね?

JVNDB-2004-000169 - JVN iPedia - LHa の Test/eXtract ルーチンにおけるバッファオーバーフローの脆弱性
LHa for UNIX には、書庫をテストまたは解凍する際に、ヘッダ情報の長さを適切に取り扱わない複数の不備が存在するため、バッファオーバーフローが発生する脆弱性が存在します

JVNDB-2004-000170 LHa の Test/eXtract ルーチンにおけるディレクトリトラバーサルの脆弱性
LHa for UNIX には、書庫をテストまたは解凍する際に、パスの妥当性の確認が複数の箇所において不適切であるため、ディレクトリトラバーサル攻撃を受ける脆弱性が存在します

JVNDB-2004-000195 - JVN iPedia - LHA のシェルメタキャラクタを含むディレクトリ名の処理における任意のコマンドを実行される脆弱性

JVNDB-2004-000196LHA におけるパス名の長さチェックを行わないことによるバッファオーバーフローの脆弱性

JVNDB-2004-000197LHA の extrace_one 関数におけるバッファオーバーフローの脆弱性

JVN#1F649902: McAfeeウイルススキャンエンジンにバッファオーバーフローの脆弱性
不正な LHA ファイルをスキャンした際にバッファオーバーフローが引き起こされる可能性があります。

これらは、まさにそのもの?

少なくとも、非受理の理由がLZHだからというのは無いと思います。
実は既に登録済みで、復活とかないかなぁ・・・と希望してみる|・ω・)

当面使ってはいけないのは誰?

仮に、上記の問題があったとして、使ってはいけないのは、

・プログラムを圧縮して配布しているベンダー。
・LZH形式のファイルを適正にチェックできないウィルス対策ソフトを使っているユーザー。

の2通りになるわけで、拡張子がLZHのファイルだからダウンロードしたら必ずしも危険という訳ではないので。お間違えのなきように。

関連サイト:
国産の圧縮形式「LZH」のUNLHA32.DLLの開発中止へ、LZH形式使用中止を呼びかけ - GIGAZINE
「LZH」の開発中止--企業などは使用しないよう作者が注意喚起 - builder by ZDNet Japan
JVNVU#545953: 複数のアンチウィルス製品に脆弱性
まっちゃ139 Hiki - 圧縮ファイル解凍の脆弱性

おすすめ

2件のフィードバック

  1. 名無しのプログラマー より:

    lha復活させよーぜ、ソースレベルから。
    なくなっちゃうのはどうかと思って見過ごしてたが、
    レガシのニーズあるんじゃねーかよ

  2. 名無しのプログラマー より:

    lha復活させよーぜ、ソースレベルから。
    なくなっちゃうのはどうかと思って見過ごしてたが、
    レガシのニーズあるんじゃねーかよ

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です