パスワードを忘れた? アカウント作成
13468 story

gzipに複数の脆弱性~LHAにも関連あり? 81

ストーリー by GetSet
脆弱性は17歳 部門より

Elbereth曰く、"JVNにて、gzipの脆弱性についていくつか報告があがっています。

2006年9月22日現在では、JVNの上記記事では対象ベンダとしてRedhat、ubuntu、FreeBSDから報告があがっていますが、gzipのことであるからして影響はさらに広範囲になるものと思われます。
そして、さらに今回の件で特に問題なのは、LHAに関連するコードで脆弱性が発見されたことでしょう。MS-DOS時代からWindowsに至るPCのファイル圧縮技術の主流であり今もなお現役であるLHAには、解凍(展開)プログラムが山のようにあり、今回の脆弱性がこれら全てに波及する可能性があります。LHAの開発者の一人である奥村教授のBlogでは、脆弱性が発見されたコードは1989年に教授が書いたものということで、今から17年ほども前という古いコードで今頃脆弱性を発見という話にびっくりします。
ちなみに、これらの脆弱性は、最近よく見かけるGoogleセキュリティチームの、Tavis Ormandyによって発見されたとのこと。"
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • LHAより前 (スコア:5, 参考になる)

    by KENN (3839) on 2006年09月23日 10時00分 (#1024582) 日記

    問題のファイルのひとつである"unlzh.c"の冒頭には

    The code in this file is directly derived from the public domain 'ar002' written by Haruhiko Okumura.
    というコメントがあります。

    この"ar002"をキーワードにしてぐぐると、奥村先生のサイトにあるデータ圧縮の昔話 [mie-u.ac.jp]の中のコンテンツが引っかかります(1990年 [mie-u.ac.jp]とか1991年 [mie-u.ac.jp]あたり)。

    タレコミからリンクされているBlogでも「LHAの元になったC言語ソース」(おそらくは前述のar002を指すと思われる)と発言されてますので、タレコミ文の「LHAに起源のあるコード」という記述は正確ではないと思います。

  • あのころ (スコア:5, すばらしい洞察)

    by benihitode (29875) on 2006年09月23日 10時08分 (#1024593) 日記
    あのころのソフトウェアって、脆弱性なんて考えもしないものだったのでは。信用できるデータしか喰わせないつもりだから。ゴミを喰わせて固まったら喰わせた奴が悪いって感じで。
    • by Anonymous Coward on 2006年09月23日 10時28分 (#1024614)
      それでも当時だと自己解凍形式だと「悪意のある人が何かしかけてるかも」といった具合に敬遠されてたような。今のほうがずっと何も気にしないで自己解凍形式を使う人が増えたような気もする。
      親コメント
      • by Anonymous Coward on 2006年09月23日 11時28分 (#1024666)
        PCやネットワーク普及率の上昇により、不用心な一般ユーザが増加したって事でしょう。
        zipなどWinで標準対応だし。
        親コメント
        • by Anonymous Coward on 2006年09月23日 14時03分 (#1024796)
          増えているのは攻撃者でしょ。
          だいたい10年以上前といったら、他人のシステムをどうこうしたところで、
          その出力を攻撃者に戻す手段が無きに等しかったわけ。
          ネットに常時、あるいは頻繁に繋がる環境というのは、
          それ自体が侵入経路であるという以上に、
          攻撃者が直にアウトプットを得られる経路であるということを見過ごしちゃいけない。
          そしてもうひとつ重要なのは、今ではそのアウトプットを換金できるということ。
          日本では ny を通じた情報流出も話題になっているけれど、
          攻撃の主流はあくまで金を得るためのクレジットカードや銀行の情報奪取が目的だからね。
          ny 関連が深刻で無いというつもりは無いが、あの騒がれ方は多分に「目立つから」という面が大きい。
          決して、その他の脅威と比較してより深刻だから騒がれているというわけではない。

          確かに不用心なユーザーも増えているのは間違いないけれど、
          それ以上に、そもそも10年以上前はこんなに物騒では無かったよ。
          親コメント
    • by superfox (31908) on 2006年09月23日 16時38分 (#1024912)
      Pascal本 [amazon.co.jp]からお世話になってる身でアレですが、奥村先生の書かれるコードは読み難いと思ったり…。

      論理的な最適化による結果だったりするんですが、リファレンスコードがあるとまた違ったかもしれないですね(でも実装はまた別の話?)。
      親コメント
  • by Anonymous Coward on 2006年09月23日 12時38分 (#1024712)
    アーカイバの脆弱性によって直ちに影響を受けるのがアンチウィルスソフトです。 特にフリーソフトウェアのClamAVやAmavisd-new等はアーカイブ内のウィルスを検出するためにlha等のコマンドを使う場合があるので、メールで細工されたアーカイブを送るだけで攻撃が成立します。 商用のアンチウィルスソフトはライセンスから独自のコードを使っている事が多いと思いますが、LZHなどはフリーのコードを流用している可能性もあるでしょう。
  • by Phalacrocoracidae (29780) on 2006年09月23日 10時00分 (#1024585)
    Windows(XP?)であれば、標準でzipファイルを展開できること、またlzhはほぼ日本独自なので、意識的にlzhは避けてzipを使うようにしてます。

    zipと比較してlzhを使うメリットってあります?lzhは解凍できるがzipは解凍できない環境ってそうないと思うんですが。慣れ親しんだものだから?圧縮率?圧縮率どうのは把握してませんが。

    # 取引先からはいつもlzh圧縮でくるのでID
    --
    しないさせない!スルー力
    • by patagon (1453) on 2006年09月23日 11時27分 (#1024662) 日記
      人それぞれ好きなものを使えばいいという前提で。私も仕事場でPCがWindows 2000から XPに変わってからは圧縮・解凍もWindows XPについている?zipを専ら使うようになりました。ただlzhで送ってくる人・企業もあるので、Microsoftのサイトからlzhを解凍できるMicrosoft 圧縮(LZH 形式)フォルダをダウンロードしてPCに入れています。http://www.microsoft.com/genuine/offers/default.aspx?displaylang=ja
      当たり前かもしれないけど解凍せずに中身を表示させる機能って便利ですね。他の解凍ソフトにもそういう機能あるんでしょうけど。
      親コメント
    • by Rodin (28411) on 2006年09月23日 12時43分 (#1024715)
      自宅でDGCA [www.emit.jp]、職場でlzhを使ってます。
      lzhよりzipの方が圧縮後のファイルサイズが小さくなるようですが、
      新旧OSの混在環境ではlzhもzipも使い勝手は同じです。

      > Windows(XP?)であれば

      Meも圧縮フォルダに対応しています。(ただ初期設定は無効になってたような・・・)
      2000はMeのファイルを流用して圧縮フォルダを利用 [nifty.com]できます。

      > zipと比較してlzhを使うメリットってあります?

      lzhはunlha32.dllを用いた圧縮/解凍用コードが広く知られており、
      業務ソフトのデータセーブ機能に広く用いられています。
      一方でzipを扱うのはどうも面倒で問題も起きそう [dobon.net]です。
      --
      匠気だけでは商機なく、正気なだけでは勝機なし。
      親コメント
      • by Anonymous Coward on 2006年09月23日 18時50分 (#1024985)
        unlha32.dllのドキュメントを良く読むと、商利用時には要連絡となっているんですよね…。

        面倒ごとはキライなんで他の選択肢も調べてみたところ、OpenLha32.dll [infoseek.co.jp]を使う方法が一番制限が緩いようです。
        C以外から使うにはすこし宣言をいじってコンパイルしなおす必要ありますが。
        親コメント
        • by Anonymous Coward on 2006年09月23日 23時46分 (#1025100)
          個人的にOpenLha32.dllの利用を検討したことがありました。

          確かにライセンス上の制限は緩いんだけど、コマンドを直接渡すAPIしかないのがなんとも...

          個人的には、64ビット化をきっかけに古いしがらみを捨てたスマートなDLLになってくれることを期待してます。
          親コメント
      • by Tsann (15931) on 2006年09月23日 14時12分 (#1024802)
        > lzhはunlha32.dllを用いた圧縮/解凍用コードが広く知られており

        このAPIは圧縮/解凍のはずなのに、なぜかメッセージループも要求するのがどうも…。
        描画は別スレッドに任せればいいじゃないかと思うんですが。

        ちなみに/.Jな方なら気づかないところで結構LZHを使っているんじゃないかと思います。
        マザーボードBIOSの更新ファイル、あれになにげに -lh5- とか入っていてびっくりです。
        親コメント
        • by Anonymous Coward on 2006年09月23日 17時27分 (#1024938)
          >マザーボードBIOSの更新ファイル、あれになにげに -lh5- とか入っていてびっくりです。

          むかーし、わざわざ解凍してからBIOS更新したら起動できなくなった話があったような。もちろん、M/Bはメーカー送りw
          親コメント
        • by Anonymous Coward on 2006年09月23日 17時41分 (#1024951)
          > 描画は別スレッドに任せればいいじゃないかと思うんですが。
          マルチスレッドのない環境(Win32s)がサポート対象なので、それは不可能なのであります。
          統合アーカイバと言いつつ全然統合されてないAPIはさっさと捨てて、新しい酒は新しい革袋に入れたほうが幸せになれます。
          親コメント
      • by shuu02 (31177) on 2006年09月23日 15時12分 (#1024856)
        将来にわたって解凍環境が保証されそうな圧縮形式で,
        圧縮率をいろいろ比較したことがあるのですが,
        試した範囲でcabが常にトップかトップと同等でした.
        (設定はいずれも最高圧縮設定)

        今のPCなら圧縮に必要な時間も問題にならないので,自分用にはcabを使ってます.

        親コメント
        • by Stealth (5277) on 2006年09月23日 17時26分 (#1024937)

          扱うファイルの特性もあるでしょうね。

          cab の場合には、書庫ファイルに対して追加や一部削除などの操作ができないことから、昔ながらの書庫をそのまま操作するタイプには適さないという点があります。

          lzh や zip などの場合、Windows からはエクスプローラ上からそのまま開くことができますが、zip の場合はそこにそのままファイルを投げ込んだりすることもできるため、そういう面での利便性を重視する方には cab は向かないでしょう。

          しかし、cab って LZX 形式にしないと圧縮率悪いと思うので、単純に「最高圧縮設定」というのも微妙ですが。しかも Microsoft の expand.exe とかは MSZIP 形式の cab しか操作できないような。

          # 個人的には速度、圧縮率、今後のサポートを考えると 7zip が扱いやすい印象です。

          親コメント
          • by Anonymous Coward on 2006年09月23日 19時50分 (#1025006)
            cabはMSの研究所の人がチマチマとx86のバイナリコードにおける圧縮率を上げるために改良を繰り返していると聞きます。もちろん、VCがはくバイナリに特化しているわけですが:p 具体的にはジャンプ命令に相当するバイナリ列を置き換えるとかですね。これは7zipとかもやってますが。

            じきに(既に?).NETな最適化がかかっていくことでしょう。

            そんなわたしもMIPSとかARM向けの実行ファイルの圧縮を研究してたりするのでAC

            親コメント
    • 結構使ってますね。

      相手の設定が悪いのか、こちらが悪いのかわかりませんが、
      macユーザーとやりとりしてて、相手が日本語が入ったファイルをzip圧縮(stuffitかなんかで?)して、私(windows)側で解凍しようとすると大概文字化けしてることが多い気が。。

      なんで、相手(mac)側でlzh使ってとお願いをすることがよくあります。(今のところ化けたことがない)

      $多分どっか設定見直せばなおるのかもしれませんが
      親コメント
      • マックOSXで作成された.zip ファイルをpythonのinteractive modeを使って調べてみたら、ファイル名がUTF-8で格納されているようでした。

        Windowsで作成された.zipファイルは調べていませんが Shift-JIS なのではないかと思っています。

        どちらかがどちらかにエンコーディングをあわせればいいのでしょうが、そもそもファイル名のエンコーディング規則がzipのヘッダに規定されていないのが負けなのかも。
        親コメント
        • by nojiri (27623) on 2006年09月24日 16時19分 (#1025331)
          Mac OS X 10.3以降は標準でzip圧縮できるようになりましたが、仰るとおり、ファイル名をUTF-8で格納するために、Windowsで解凍すると文字化けします。さらに、Mac OS特有のリソース領域やファイル属性などもアーカイブしているため、解凍時にWindowsには不要なファイルやフォルダが作成されます。

          そんな訳で、Mac上でWindows向けの圧縮ファイルを作る際は、lzhが無難です。→「目的別 圧縮ツール [mac.com]」

          ちなみに、Windowsで作成したzipファイルをMac OS X 10.3.xで解凍するとShift-JISで格納されたファイル名をUTF-8として処理するため、エラーが発生して解凍に失敗します。
          Mac OS X 10.4以降は解凍できるようになりましたが、それでも文字化けしました。
          10.4.6以降で、ようやく文字コードの自動判別機能が備わり、UTF-8かShift-JISかを判断して解凍できるようになりました。

          Windows Vistaのzip圧縮プログラムが仕様変更されて、ファイル名をUTF-8で格納するようになってくれないだろうか。OS間の互換性問題が軽減されるのだが。(アップルには、Shift-JISを使うつもりがないようだ…)
          親コメント
    • by calc (16044) on 2006年09月25日 1時07分 (#1025442) ホームページ 日記
      長い間、ShiftJISで2byte目が0x5c(\マーク)になる文字をファイル名に使うとWinzip(およびunzip.dllを使う展開ツール)は正しく展開してくれない、というバグがあったのでずっとlzhで圧縮しています。

      ちなみに今確認したところ、WindowsXP標準のzip圧縮機能ではこの問題はないようです。

      #仕事で必要なファイルをWinZipで圧縮して客先へ持って行って展開したら何もない!
      #とかいう恐怖経験したらそりゃあzipを敬遠するようにもなるってもんですよ、ええ

      親コメント
    • by Anonymous Coward on 2006年09月23日 10時36分 (#1024621)
      Gmailでexeを送るために使ってる
      親コメント
    • by Anonymous Coward on 2006年09月23日 10時43分 (#1024624)
      うちの会社のメールはzip圧縮したファイルを添付すると警告メッセージがくっついて邪魔なんでいつもlzh圧縮してます。
      (zipは警告してlzhは素通りするシステムにも問題あるような気もしますが)

      でも人に渡さないファイルなんかは圧縮率重視で大抵bzip2か7zipで固めて保存してますね。
      親コメント
    • by Anonymous Coward on 2006年09月23日 12時05分 (#1024690)
      zipもDOS全盛の頃はバージョン毎に
      互換性がない場合があってね。MS-Officeみたいに。
      いまでもたまーに解凍ツールを選ぶzipファイルがあるのよね。
      親コメント
    • by Anonymous Coward on 2006年09月23日 12時14分 (#1024698)
      マイコン時代からの老舗ゲームメーカーですが
      役員含めて普通にlzhを使ってます。
      インターネット世代からの新人はzipを使いますが
      毎日やるとりする圧縮ファイルを見て「こういうものなのか」と
      lzhを使うようになって、ますますlzhの使用頻度があがっている感じです。

      #特定されそうなのでAC
      親コメント
  • 知らなかった! (スコア:2, すばらしい洞察)

    by miyachi-y (28238) on 2006年09月23日 11時41分 (#1024676) 日記
    gzipで、lzhが扱えるなんて...
    • by Anonymous Coward on 2006年09月23日 12時46分 (#1024718)
      念のため。
      アルゴリズムとして lzh を使えるということであって、LHA で圧縮したファイルを gzip でほどけるというわけではない。
      親コメント
      • by taka2 (14791) on 2006年09月23日 13時42分 (#1024775) ホームページ 日記
        もうちょっと書くなら、互換性のために、gzip は
        (SCO compress -H) で圧縮されたファイルも伸張できるようになっている、ということですね。

        LHAも SCO compress -H も、圧縮アルゴリズムとして
        Lempel-Ziv(LZ77)と Huffman を組み合わせているという点では同じですが、
        この2者に直接の関係はありません。

        ついでに書けば、gzip は「GNU の zip」ではありません。
        gzip の圧縮と zip の圧縮は別物です。

        zip のdeflate圧縮したファイルも扱えたりしますが、
        (こちらは単位アルゴリズムが同じだけではなく、1ファイルだけdeflate圧縮したzip ファイルを伸張できる)
        これは compress で圧縮したものを扱えるのと同じように、
        ユーザーの利便性を考えてサポートされたものです。
        親コメント
        • by tt (2867) on 2006年09月24日 0時05分 (#1025105) 日記
          なんか全体的によくわからない日本語ですね…ACの方が記述されてますが、ソースコードからしてgzipはGNUのzipですよ。ただし、ここでいうところのzipは商標であるところのziploc [wikipedia.org]から着た、「一般的な圧縮機能を持つソフト」です。 一般的に".zip"という拡張子がつく書庫+圧縮ファイルを処理できる、GNUが配布するソフトではない、という意味では「GNUのzipではない」のですが。
          zip のdeflate圧縮したファイルも扱えたりしますが、 (こちらは単位アルゴリズムが同じだけではなく、1ファイルだけdeflate圧縮したzip ファイルを伸張できる) これは compress で圧縮したものを扱えるのと同じように、 ユーザーの利便性を考えてサポートされたものです。
          「利便性を考えて」とのことですが、gzipを使うといったら普通deflate形式ではないでしょうか。まあ確かにcompressだったりlh5だったりも使えるわけで、それが今回の脆弱性のメインなわけですが…
          --
          -- Takehiro TOMINAGA // may the source be with you!
          親コメント
          • わかりにくくてすみません。
            gzip は「PKZIP に由来する、拡張子 .zip な、いわゆるzip形式」の圧縮ファイルを取り扱うアーカイバの GNU 版ではない、
            という意味で「GNU の zip ではない」と書きました。

            gzipのネイティブなファイル形式(コンテナ)は、いわゆる zip 形式とは別のものが使われています(RFC1952 [futomi.com])
            つまり、gzip といわゆる zip は圧縮アルゴリズムが同じなだけの別物です。
            gzip と zip を同一視するのは、GIF と TIFF を圧縮アルゴリズムが同じ LZW だからといって同一視するようなものでしょう。

            それなのに、このストーリーには、本来の問題である gzip とも、SCO compress とも無関係な、
            たまたまアルゴリズムが同じなだけの zip と lzh についてのコメントで溢れてたものですから、ああいうコメントを書きました。

            さらに細かいことを言うと、どちらも deflate 圧縮といっても、
            zip は Lempel-Ziv + 動的ハフマンなのに対し、gzip の方は Lempel-Ziv + シャノン・ファノ [wikipedia.org]なので、
            まったく同じものではありません。
            親コメント
            • by tt (2867) on 2006年09月24日 1時56分 (#1025146) 日記
              GIF と TIFF を圧縮アルゴリズムが同じ LZW だからといって同一視するようなものでしょう
              これも誤解を招く気が。TIFFはコンテナですので、TIFFの中にJPEGを入れたり出来ますよ:)

              本来の問題である gzip とも、SCO compress とも無関係
              FreeBSDのパッチを見るとgzipというか、deflateのデコードに関するコードにもパッチが当たっている気がします。具体的には/home/ncvs/src/gnu/usr.bin/gzip/inflate.cへのパッチですね。ちなみに該当部分はzlibではinftrees.cにあったのですが、かなり昔に変更されているようです。

              どちらも deflate 圧縮といっても、 zip は Lempel-Ziv + 動的ハフマンなのに対し、gzip の方は Lempel-Ziv + シャノン・ファノなので、 まったく同じものではありません。
              うーん。「どちらもdeflateという規格を満たすストリームを作っているが、作り方が別」というのは確かですが、それをもって「まったく同じものではありません」という表現をするのはちょっと誤解されそうな…。LAMEでエンコードしようがiTunesでエンコードしようが、mp3直接エンコード機能のあるiPodのクレードルでエンコードしようが、同じmp3ですよね?まあ、確かに同一の入力に対して異なる出力になりますが。7zipのdeflateはgzipより10%ぐらい縮みますが、やっぱりdeflate圧縮ですよね。
              --
              -- Takehiro TOMINAGA // may the source be with you!
              親コメント
              • > > GIF と TIFF を圧縮アルゴリズムが同じ LZW だからといって同一視するようなものでしょう
                > これも誤解を招く気が。TIFFはコンテナですので、TIFFの中にJPEGを入れたり出来ますよ:)

                いわゆる zip の方もいわばコンテナであり、deflate 以外の圧縮も入れられますね。
                だから、tiff が LZW 以外も扱えることを考えても似たような例えになるかな、と。

                > 7zipのdeflateはgzipより10%ぐらい縮みますが、やっぱりdeflate圧縮ですよね。

                データとしてはdeflate圧縮である点は同じでも、圧縮アルゴリズムとしては、7-zip と普通の zip は別物であり、
                実装に関するセキュリティホールについてのストーリーなんですから、データ構造よりもアルゴリズムの違いに注目すべきであしょう

                もっとも、
                > deflateのデコードに関するコードにもパッチが当たっている
                なのでしたら、どちらもdeflateデコーダという点では同じものですね。すみません。
                親コメント
        • by Anonymous Coward on 2006年09月23日 19時42分 (#1025005)
          > ついでに書けば、gzip は「GNU の zip」ではありません。

          % head -1 /usr/src/gnu/usr.bin/gzip/gzip.c
          /* gzip (GNU zip) -- compress files with zip algorithm and 'compress' interface
          親コメント
typodupeerror

一つのことを行い、またそれをうまくやるプログラムを書け -- Malcolm Douglas McIlroy

読み込み中...