Matthias Clasen は、gdk-pixbufライブラリでテストを行う一方、libpngにクラッシュを引き起こす無効のPNG画像を作成しました。更なる調査によって、これは、ある種の入力によってzlibがメモリの同一エリアを2度開放してしまう(ダブルフリーと呼ばれる)lib 1.1.3中のバグであることが判明しました。
このバグは、untrusted圧縮入力の形を採るどんなプログラムでもクラッシュするため、使用される可能性があります。画像添付のあるウェブ%ブラウザやEメールプログラムや、データの解凍をおこなうその他プログラムが、特にその影響を受けます。この脆弱性は、上記のプログラムに対する多様なサービス拒否(DoS)攻撃をたやすくするものです。
ダブルフリーの結果は、malloc()インプリメンテーションのデータ構成の崩壊を引き起こすものであるため、攻撃者が、より大幅な利用をやり遂げる可能性もあります。これにはローカルやリモートシステムで、任意のコードを実行することも含まれていました。
Red Hat Linuxの殆どのパッケージは、共用zlibライブラリを使用しており、エラータ zlibパッケージにアップデートすることにより脆弱性が防御できます。しかしながら我々の認識によれば、Red Hat Linux中の多数パッケージが、zlibに静的にリンクするか、あるいはzlibコードの内部バージョンを含んでいるかのいづれか一方に該当します。
このイシューあるいはこれらパッケージに対する利用は、現在のところ報告されていませんが、これはローカル的又はリモート的に利用され得る重大な脆弱性です。ユーザの皆様は、影響を受けるパッケージを直ちにアップグレードしてください。
更に、もしご自分でコンパイルしたプログラムをお持ちの場合には、そこにzlibが使用されていないか検査してください。もし共用zlibライブラリにリンクしている場合には、その共用zlibライブラリをエラータパッケージにアップデートさえすれば、脆弱性はなくなります。しかし任意のデータを解凍するプログラムについて、それが静的にzlibにリンクしているか、あるいは内部的に独自のzlibコードバージョンを使っている場合には、パッチされるか又は再コンパイルする必要があります。
以下の詳細は、Red Hat Linuxの主要提供物だけに適用されるものです。Powertoolsパッケージについては、報告RHSA-2002:027を参照してください。
cvs: cvsはバージョン管理システムです。cvsパッケージはリビルトされ、内部バージョンに代わって、共用システムzlibに対してリンクするようになりました。
更にcvsは、Red Hat Linux 6.2, 7.0 及び7.1用の1.11.1p1バージョンへアップデートされ、これにより不適切に初期化されたグローバル変数によるセキュリティ上の脆弱性(CAN-2002-0092)が是正されています。
dump: dumpパッケージには、filesystemsをバックアップし復元するプログラムが入っています。これはzlibに静的にリンクし、エラータzlibパッケージに対してリビルトされています。Red Hat Linux 7, 7.1及び 7.2パッケージは更に、dump-0.4b25にアップグレードされており、これには多数の非セキュリティ関連フィックスが入っています。
gcc3: gcc3パッケージには、GNU Compiler Collection バージョン3.0が入っています。これはバージョン3.0.4にアップデートされており、更に内部バージョンに代えてsystem zlibに対してリンクするようパッチが行われています。
libgcj: libgcjパッケージには、Java runtimeライブラリが入っており、これはgcc Java コンパイラ(gcj)を使ってコンパイルされたJavaプログラムの実行に必要なものです。 libgcjは共用システムzlibを使用するよう、パッチが当てられました。
カーネル:Linuxカーネルには、内部的に数種のzlibコードが入っています。但し、untrusted データストリームで使用されるインプリメンテーションは、唯一ppp圧縮だけです。このイシューがパッチが当てられました。新しいカーネルエラータパッケージは、Red Hat Linux 6.2 と7に入っています。
Red Hat Linux 7.1又は7.2のユーザは、このフィックスが既に含まれている、現在リリース中のカーネルエラータRHSA-2002-028 (2.4.9-31)へアップデートしてください。
rsync: rsyncは、ネットワーク上でファイルを同期させるためのプログラムです。rsync では、zlibの修正バージョンを内部的に使用しています。今回のエラータパッケージでは、このzlib内部バージョンにパッチを当てるものです。
rsyncアップデートパッケージは、更に別のセキュリティイシュー、つまり、接続しているユーザの特権を落とす前にrsyncがsetgroups()を呼び出さなかったこと、に対してもフィックスもします。それ故、ユーザとしてはrsyncがスタートされたどの補助グループ(例えば、ルートユーザの補助グループ)のグループIDを保持することも可能で、他の方法ではアクセスできないファイルにアクセスできるようになります。このイシューに我々の注意を喚起してくださったMartin PoolとAndrew Tridgellに謝意を表します。CAN-2002-0080
VNC: VNCは、Powertools 6.2中のリモートディスプレイシステムです。VNC には、システム zlibライブラリを使用するようパッチが当てられました。
更にVNCサーバ中には、入力に関して無制限に待たせ、従ってアクティブなVNCセッションをフリーズしかねない小さなHTTPサーバインプリメンテーションがあります。この報告書中でお勧めするVNCパッケージでは、このイシューをフィックスするパッチを当てています。VNCのユーザは、このプログラムが、信頼できるネットワーク上の使用に向けて設計されている旨、ご了解ください。
Common Vulnerabilities and Exposuresプロジェクト(cve.mitre.org)により、zlibイシ
ューはCAN-2002-0059と命名されています。Red Hatは、その他ベンダと共にこのイシューの調整にご協力くださったことに関して、CERT/CC に謝意を表します。