gzipに複数の脆弱性~LHAにも関連あり? 81
ストーリー by GetSet
脆弱性は17歳 部門より
脆弱性は17歳 部門より
Elbereth曰く、"JVNにて、gzipの脆弱性についていくつか報告があがっています。
- JVNVU#933712: gzip (GNU zip) の huft_build() における NULL ポインタ参照の脆弱性
- JVNVU#596848: gzip (GNU zip) の LZH の取扱いにおいて無限ループが引き起こされる脆弱性
- JVNVU#554780: gzip におけるバッファオーバーフローの脆弱性
- JVNVU#773548: gzip の LZH の取扱におけるバッファオーバーフローの脆弱性
- JVNVU#381508: gzip の make_table() の配列処理における脆弱性
そして、さらに今回の件で特に問題なのは、LHAに関連するコードで脆弱性が発見されたことでしょう。MS-DOS時代からWindowsに至るPCのファイル圧縮技術の主流であり今もなお現役であるLHAには、解凍(展開)プログラムが山のようにあり、今回の脆弱性がこれら全てに波及する可能性があります。LHAの開発者の一人である奥村教授のBlogでは、脆弱性が発見されたコードは1989年に教授が書いたものということで、今から17年ほども前という古いコードで今頃脆弱性を発見という話にびっくりします。
ちなみに、これらの脆弱性は、最近よく見かけるGoogleセキュリティチームの、Tavis Ormandyによって発見されたとのこと。"
LHAより前 (スコア:5, 参考になる)
問題のファイルのひとつである"unlzh.c"の冒頭には
というコメントがあります。この"ar002"をキーワードにしてぐぐると、奥村先生のサイトにあるデータ圧縮の昔話 [mie-u.ac.jp]の中のコンテンツが引っかかります(1990年 [mie-u.ac.jp]とか1991年 [mie-u.ac.jp]あたり)。
タレコミからリンクされているBlogでも「LHAの元になったC言語ソース」(おそらくは前述のar002を指すと思われる)と発言されてますので、タレコミ文の「LHAに起源のあるコード」という記述は正確ではないと思います。
Re:LHAより前 (スコア:3, 参考になる)
> LHAに起源のあるコード
「LHAに関連するコード」と修正しました。
Re:LHAより前 (スコア:1)
そうですねー。奥村教授も日記では「LHAの元になったC言語ソース」と
書いているので確かにLHAそのものではないですね。
Re:LHAより前 (スコア:4, 参考になる)
> lharc??
元コメントのリンク先を見ればわかりますが、ar002 は
LHarc から LHa へ改良している頃に、奥村さんが書かれたものですね。(LHa のためだけに書いたわけではないですが)
1988 LHarc(LHA の前身)
1990/07 LHx(LH 試作版、LHは後にLHAに名称変更)
1990/08 ar002(今回問題のファイル)
1990/11 LHA
といった流れ。
あのころ (スコア:5, すばらしい洞察)
Re:あのころ(オフトピ) (スコア:2, すばらしい洞察)
Re:あのころ(オフトピ) (スコア:1, すばらしい洞察)
zipなどWinで標準対応だし。
Re:あのころ(オフトピ) (スコア:2, すばらしい洞察)
だいたい10年以上前といったら、他人のシステムをどうこうしたところで、
その出力を攻撃者に戻す手段が無きに等しかったわけ。
ネットに常時、あるいは頻繁に繋がる環境というのは、
それ自体が侵入経路であるという以上に、
攻撃者が直にアウトプットを得られる経路であるということを見過ごしちゃいけない。
そしてもうひとつ重要なのは、今ではそのアウトプットを換金できるということ。
日本では ny を通じた情報流出も話題になっているけれど、
攻撃の主流はあくまで金を得るためのクレジットカードや銀行の情報奪取が目的だからね。
ny 関連が深刻で無いというつもりは無いが、あの騒がれ方は多分に「目立つから」という面が大きい。
決して、その他の脅威と比較してより深刻だから騒がれているというわけではない。
確かに不用心なユーザーも増えているのは間違いないけれど、
それ以上に、そもそも10年以上前はこんなに物騒では無かったよ。
Re:あのころ (スコア:1)
論理的な最適化による結果だったりするんですが、リファレンスコードがあるとまた違ったかもしれないですね(でも実装はまた別の話?)。
アーカイバの脆弱性はアンチウィルスソフトに波及する可能性がある (スコア:5, 参考になる)
Re:アーカイバの脆弱性はアンチウィルスソフトに波及する可能性がある (スコア:4, 参考になる)
lzhまだ使ってます? (スコア:2, 興味深い)
zipと比較してlzhを使うメリットってあります?lzhは解凍できるがzipは解凍できない環境ってそうないと思うんですが。慣れ親しんだものだから?圧縮率?圧縮率どうのは把握してませんが。
# 取引先からはいつもlzh圧縮でくるのでID
しないさせない!スルー力
Re:lzhまだ使ってます? (スコア:3, 参考になる)
当たり前かもしれないけど解凍せずに中身を表示させる機能って便利ですね。他の解凍ソフトにもそういう機能あるんでしょうけど。
Re:lzhまだ使ってます? (スコア:1)
Re:lzhまだ使ってます? (スコア:2, 参考になる)
前の文字列とhttp://がくっついている場合はリンクされないようです。
Re:lzhまだ使ってます? (スコア:2, 参考になる)
lzhよりzipの方が圧縮後のファイルサイズが小さくなるようですが、
新旧OSの混在環境ではlzhもzipも使い勝手は同じです。
> Windows(XP?)であれば
Meも圧縮フォルダに対応しています。(ただ初期設定は無効になってたような・・・)
2000はMeのファイルを流用して圧縮フォルダを利用 [nifty.com]できます。
> zipと比較してlzhを使うメリットってあります?
lzhはunlha32.dllを用いた圧縮/解凍用コードが広く知られており、
業務ソフトのデータセーブ機能に広く用いられています。
一方でzipを扱うのはどうも面倒で問題も起きそう [dobon.net]です。
匠気だけでは商機なく、正気なだけでは勝機なし。
Re:lzhまだ使ってます? (スコア:3, 興味深い)
面倒ごとはキライなんで他の選択肢も調べてみたところ、OpenLha32.dll [infoseek.co.jp]を使う方法が一番制限が緩いようです。
C以外から使うにはすこし宣言をいじってコンパイルしなおす必要ありますが。
Re:lzhまだ使ってます? (スコア:1, 興味深い)
確かにライセンス上の制限は緩いんだけど、コマンドを直接渡すAPIしかないのがなんとも...
個人的には、64ビット化をきっかけに古いしがらみを捨てたスマートなDLLになってくれることを期待してます。
Re:lzhまだ使ってます? (スコア:2, 参考になる)
このAPIは圧縮/解凍のはずなのに、なぜかメッセージループも要求するのがどうも…。
描画は別スレッドに任せればいいじゃないかと思うんですが。
ちなみに/.Jな方なら気づかないところで結構LZHを使っているんじゃないかと思います。
マザーボードBIOSの更新ファイル、あれになにげに -lh5- とか入っていてびっくりです。
Re:lzhまだ使ってます? (スコア:2, 興味深い)
むかーし、わざわざ解凍してからBIOS更新したら起動できなくなった話があったような。もちろん、M/Bはメーカー送りw
Re:lzhまだ使ってます? (スコア:1, 参考になる)
マルチスレッドのない環境(Win32s)がサポート対象なので、それは不可能なのであります。
統合アーカイバと言いつつ全然統合されてないAPIはさっさと捨てて、新しい酒は新しい革袋に入れたほうが幸せになれます。
Re:lzhまだ使ってます? (スコア:1)
圧縮率をいろいろ比較したことがあるのですが,
試した範囲でcabが常にトップかトップと同等でした.
(設定はいずれも最高圧縮設定)
今のPCなら圧縮に必要な時間も問題にならないので,自分用にはcabを使ってます.
Re:lzhまだ使ってます? (スコア:2, 参考になる)
扱うファイルの特性もあるでしょうね。
cab の場合には、書庫ファイルに対して追加や一部削除などの操作ができないことから、昔ながらの書庫をそのまま操作するタイプには適さないという点があります。
lzh や zip などの場合、Windows からはエクスプローラ上からそのまま開くことができますが、zip の場合はそこにそのままファイルを投げ込んだりすることもできるため、そういう面での利便性を重視する方には cab は向かないでしょう。
しかし、cab って LZX 形式にしないと圧縮率悪いと思うので、単純に「最高圧縮設定」というのも微妙ですが。しかも Microsoft の expand.exe とかは MSZIP 形式の cab しか操作できないような。
# 個人的には速度、圧縮率、今後のサポートを考えると 7zip が扱いやすい印象です。
Re:lzhまだ使ってます? (スコア:2, 興味深い)
じきに(既に?).NETな最適化がかかっていくことでしょう。
そんなわたしもMIPSとかARM向けの実行ファイルの圧縮を研究してたりするのでAC
Re:lzhまだ使ってます? (スコア:2)
相手の設定が悪いのか、こちらが悪いのかわかりませんが、
macユーザーとやりとりしてて、相手が日本語が入ったファイルをzip圧縮(stuffitかなんかで?)して、私(windows)側で解凍しようとすると大概文字化けしてることが多い気が。。
なんで、相手(mac)側でlzh使ってとお願いをすることがよくあります。(今のところ化けたことがない)
$多分どっか設定見直せばなおるのかもしれませんが
Re:lzhまだ使ってます? (スコア:1)
Windowsで作成された.zipファイルは調べていませんが Shift-JIS なのではないかと思っています。
どちらかがどちらかにエンコーディングをあわせればいいのでしょうが、そもそもファイル名のエンコーディング規則がzipのヘッダに規定されていないのが負けなのかも。
MacとWindowsのzip(オフトピ) (スコア:3, 参考になる)
そんな訳で、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を使うつもりがないようだ…)
Re:MacとWindowsのzip(オフトピ) (スコア:1)
# 僕から見ると、君は天に唾する人みたいに見えるね。
それに技術の筋から言って、Shift-JISにあわせるよりはUTF-8にあわせたほうが筋が良い。もちろん、MIME encodingとかもありだと思うが。
Re:lzhまだ使ってます? (スコア:2, 参考になる)
ちなみに今確認したところ、WindowsXP標準のzip圧縮機能ではこの問題はないようです。
#仕事で必要なファイルをWinZipで圧縮して客先へ持って行って展開したら何もない!
#とかいう恐怖経験したらそりゃあzipを敬遠するようにもなるってもんですよ、ええ
Re:lzhまだ使ってます? (スコア:1, 興味深い)
Re:lzhまだ使ってます? (スコア:1, 興味深い)
(zipは警告してlzhは素通りするシステムにも問題あるような気もしますが)
でも人に渡さないファイルなんかは圧縮率重視で大抵bzip2か7zipで固めて保存してますね。
Re:lzhまだ使ってます? (スコア:1, 興味深い)
互換性がない場合があってね。MS-Officeみたいに。
いまでもたまーに解凍ツールを選ぶzipファイルがあるのよね。
Re:lzhまだ使ってます? (スコア:1, 興味深い)
役員含めて普通にlzhを使ってます。
インターネット世代からの新人はzipを使いますが
毎日やるとりする圧縮ファイルを見て「こういうものなのか」と
lzhを使うようになって、ますますlzhの使用頻度があがっている感じです。
#特定されそうなのでAC
知らなかった! (スコア:2, すばらしい洞察)
Re:知らなかった! (スコア:2, 参考になる)
アルゴリズムとして lzh を使えるということであって、LHA で圧縮したファイルを gzip でほどけるというわけではない。
Re:知らなかった! (スコア:2, 参考になる)
(SCO compress -H) で圧縮されたファイルも伸張できるようになっている、ということですね。
LHAも SCO compress -H も、圧縮アルゴリズムとして
Lempel-Ziv(LZ77)と Huffman を組み合わせているという点では同じですが、
この2者に直接の関係はありません。
ついでに書けば、gzip は「GNU の zip」ではありません。
gzip の圧縮と zip の圧縮は別物です。
zip のdeflate圧縮したファイルも扱えたりしますが、
(こちらは単位アルゴリズムが同じだけではなく、1ファイルだけdeflate圧縮したzip ファイルを伸張できる)
これは compress で圧縮したものを扱えるのと同じように、
ユーザーの利便性を考えてサポートされたものです。
Re:知らなかった! (スコア:2, 参考になる)
-- Takehiro TOMINAGA // may the source be with you!
Re:知らなかった! (スコア:1)
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]なので、
まったく同じものではありません。
Re:知らなかった! (スコア:1)
-- Takehiro TOMINAGA // may the source be with you!
Re:知らなかった! (スコア:1)
> これも誤解を招く気が。TIFFはコンテナですので、TIFFの中にJPEGを入れたり出来ますよ:)
いわゆる zip の方もいわばコンテナであり、deflate 以外の圧縮も入れられますね。
だから、tiff が LZW 以外も扱えることを考えても似たような例えになるかな、と。
> 7zipのdeflateはgzipより10%ぐらい縮みますが、やっぱりdeflate圧縮ですよね。
データとしてはdeflate圧縮である点は同じでも、圧縮アルゴリズムとしては、7-zip と普通の zip は別物であり、
実装に関するセキュリティホールについてのストーリーなんですから、データ構造よりもアルゴリズムの違いに注目すべきであしょう
もっとも、
> deflateのデコードに関するコードにもパッチが当たっている
なのでしたら、どちらもdeflateデコーダという点では同じものですね。すみません。
Re:知らなかった! (スコア:1, 参考になる)
% head -1 /usr/src/gnu/usr.bin/gzip/gzip.c
/* gzip (GNU zip) -- compress files with zip algorithm and 'compress' interface
Re:無責任さを感じます (スコア:5, おもしろおかしい)
> 私には、OSS、フリ一ソフトの中には飛び散った精子にしか見えないモノがある。
フリーソフトは精子と一緒、という話、まったくもってその通りだ。
そのままゴミ箱行きとなる益体のないものも多い。
その一方で、大変に役立つ存在のものもある。
だいたい遺伝子の運び手・精子なくては君も生まれなかったのだ。
コードを伝播させていろいろなものに組み込まれるような挙動を思えば
ドーキンスの「身勝手な遺伝子」とOSSの挙動というのはアイデア的に
似通っているのかもしれない。
(∑´w`)キョウモ マジレス
Re:無責任さを感じます (スコア:1)
Re:無責任さを感じます (スコア:1)
『月面兎兵器ミーナ』2007年1月13日から放送開始
Re:無責任さを感じます (スコア:3, すばらしい洞察)
プロプラエタリのソフトだったら実際にトラブルが
発生するまで発見されずにいた可能性が高いですね。
Re:無責任さを感じます (スコア:1, すばらしい洞察)
どうかねぇ?
単に注目度の高いものが調査のターゲットになりやすいというだけかと。
OSSでも無名なものはその手のレポは全然上がりませんぜ、旦那。
開発元が上げるのを除けば。
#OSSだから見つかるというのは幻想に過ぎない。
#見つける人間がいるプロダクトで見つかるというだけの話だ。
Re:無責任さを感じます (スコア:2, 興味深い)
Re:無責任さを感じます (スコア:2, 参考になる)
JIS C 6226からパクってくるとき「ー」だけ離れた位置にあったので日本語のネイティブでない人間にはそれも必要であることが認識できなかったのでしょうね。
Re:無責任さを感じます (スコア:1, 興味深い)
意味は通じるんだけど笑ってしまうような日本語が書いて
あったりしますよね。
でも思うのは、日本人が書く英語(に限らずいろんな外国語)
も、おなじように物笑いの種になってるんだろうなあ、と。
Re:無責任さを感じます (スコア:1, 参考になる)
そういうネタを集めたサイト [engrish.com]もあります。
# 怪しい日本語製品の中では、個人的には富士エアー [plala.or.jp]が大好き。