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

zlibにセキュリティホール 22

ストーリー by kazekiri
影響はかなりでかいぞ 部門より

take0m 曰く、 "ZDNNによると、Linuxの全てのバージョンに使われているzlib圧縮ライブラリに、セキュリティホールが見つかったそうです。 Linux以外で、BSDやSolarisなどでも利用されており、影響度は大きいが、脆弱性を利用できるかどうかは、OS次第とのことです。 こちらに詳細記事も掲載されています。"

とりあえず RedHatのErrata。zlibをstaticにしているプログラムは 影響を受けるということだが、かなりの数がありそうだ。 影響度はかなりでかいだろう。 [Update]、CERTの Vulnerability Note VU#368819では、OpenBSDが Not Vulnerableになっている。Vendor Satementには、 「OpenBSD is not vulnerable as OpenBSD's malloc implementation detects double freeing of memory. The zlib shipped with OpenBSD has been fixed in OpenBSD-current in January 2002.」さすがというか なんというか…。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • zlibもそうだけど (スコア:3, 参考になる)

    by SteppingWind (2654) on 2002年03月12日 16時13分 (#71085)

    根本的な問題はglibcのmalloc()/free()に関するチェックが甘いってことで, FreeBSDやOpenBSDついでにWindows等ではその辺の処理が考えられているよ, という [slashdot.org]が本家の方に出ていましたが, 具体的にはどういう挙動をするのが良いのでしょうか?

    FreeBSDでは/etc/malloc.confで挙動の設定ができるのですが(日本語マニュアルはまだ更新が追いついていないみたいです), currentでのdefaultの様にabortさせてしまうのが良いのでしょうか?

    余談その1: 今月のUnixUserにこの2重free()を使ったクラックについての説明が有りましたが, 仕事が忙しくてまだ読んでいません.

    余談その2: xlockmoreの中のatlantisスクリーンセーバ(OpenGLでクジラやサメが泳ぐやつ)が2重free()を終了時に起こしているみたいです. なもんでFreeBSD-currentではxlockコマンドをパラメータ無しで使うと, かならず途中で止まっちゃうんですよね.

    • phkmalloc(3)の場合 (スコア:2, 参考になる)

      by brake-handle (5065) on 2002年03月12日 17時22分 (#71105)

      abort(3)(実際にはSIGABRTを自分に投げること)はそこそこ納得できる結果です。free memoryの管理構造が壊れかかっているので手早く片付けるにはsignalが最も便利です。ただ、vmやhardwareとの関連はないのでSIGSEGVやSIGBUSでは意味が合いません。

      FreeBSDのphkmalloc(3)については、JSTの今朝方phkがデモを-currentと-stableに流してましたね。memoryの使用状況をfree listに書かない(実際にはmmap(2)で得たpageに書く)のがキモ。

      親コメント
    • by Anonymous Coward on 2002年03月12日 22時32分 (#71181)
      glibcでも環境変数でmalloc/freeの動作の変更が可能です。man 3 freeより、

          最 近 の バージョンの Linux libc (5.4.23 以降) と GNU libc
          (2.x) では、 malloc の動作を環境変数によって制御できるよう
          な 実装がされている。 MALLOC_CHECK_ が設定されていると、特
          殊な実装が用いられ、単純なエラーには耐えることができるよう
          に なる (効率は悪くなる)。例えば free() を同じ引き数で二度
          呼び出してしまう、 1 バイトだけ行きすぎてしま う (off-by-
          one バグ) などがこれに当たる。しかしこれらのエラーの全てを
          防ぐことができるわけではなく、その場合にはメモリリークが起
          こっ て しまう。 MALLOC_CHECK_ が 0 にセットされていると、
          ヒープの破壊を黙って無視する。 1 にセットされていると、 診
          断 メッセージが標準エラー出力に表示される。 2 にセットされ
          ていると、ただちに abort() が呼び出される。
      親コメント
      • by Anonymous Coward
        なるほど。参考になります。手元のDebianで試してみよう。

        ただ、こういうのがデフォルトになっているかどうかというのが、実は(いわゆる)GNU/Linuxと*BSDのいちばんの違いのような気がしています。デフォルトになっていれば、通常使用の支障にならない程度にはパフォーマンスが最適化され、ベンチマークでは若干不利な程度で堅牢性を享受できます。そういう意味で、glibcでMALLOC_CHECKをセットしたときのペナルティがどの程度なのか気になります。もし大してペナルティがないのなら、チェックするのをデフォルトにしてほしいなあ。

        別の典型的な例としては
    • by Anonymous Coward
      zlibはカーネルにも使われていたりして油断できません。
      FreeBSDなら/sys/net/zlib.cね。
      • by brake-handle (5065) on 2002年03月12日 18時49分 (#71126)

        in-kernel zlibを使うのは、ppp(4)を用い、かつPPP_DEFLATEを追加した場合のみです。

        allocatorにも対策があります。INVARIANTSを用いた場合はfree(9)でmultiple free(9)の検査を行ないます。また、Jeff RobersonのUniversal Memory Allocator(uma)では(まだ実装されていませんが)bucketの中で重複がないか検査する手でしょうね。

        親コメント
  • CERTによれば、zlibの脆弱性に関して [cert.org]OS Xは大丈夫 [cert.org]のようです。でもXDarwinは危なそう [cert.org]なのでご注意あれ。
  • by kero (6940) on 2002年03月12日 16時01分 (#71083) ホームページ 日記

    ・・遅れ馳せながら,openssl-0.9.6cをcompile して,openssh-3.1p1をcompileしてインストールしたばかりなのに,またcompileかい(泣

    FreeBSDのホストだと,lddやstringsでver.3.1のsshdを覗いてみたところ,libz.so.2を見てるみたいだから,symbolic linkでOKか?

    --
    kero
  • このニュースを知っても具体的にどのような行動を起こせばよいのかわからない私のようなヘタレ(管理|利用)者へのアドバイスをたのむ。

    ライブラリのアップデートと、あとは?
    --
    char *A;
    モータースポーツ部 [slashdot.jp]
  • by Anonymous Coward on 2002年03月12日 14時12分 (#71056)
    というのがOpenBSDのOpenBSDたる所以なんだけど。

    しかし、OpenBSDでmozillaのbuildに二時間以上かかって
    (システム再構築より時間かかったぞ)、あげくの果てに
    Memory faultで起動してくれなかったのは悲しひ・・・。
    • by Anonymous Coward
      とっくに修正済みなのはさすがだけど、OpenBSDではこういう修正をした場合、
      オリジナルへのフィードバックはしないことになっているのでしょうか?
      • by Anonymous Coward
        昔、どこかでそんな質問があったときに
        Teoはフィードバックしていると答えたらしい。

        しかしfix済みにもかかわらずOpenBSDはpatchを公開。
        現状にも満足しないみたい。
  • by Anonymous Coward on 2002年03月12日 16時00分 (#71082)
    レスが少ないんだ?
    もっと注目しようよ!
typodupeerror

アレゲは一日にしてならず -- アレゲ研究家

読み込み中...