zlib 圧縮ライブラリの二重解放バグ | ScanNetSecurity
2024.04.26(金)

zlib 圧縮ライブラリの二重解放バグ

[翻訳:関谷 麻美]
2002年3月12日

国際 海外情報
[翻訳:関谷 麻美]
2002年3月12日

概要:
 zlib 圧縮ライブラリにバグが確認された。バグは、zlib とリンクされているプログラムに現われる恐れがある。攻撃者はそのバグを利用して、サービス使用不能攻撃の実行や情報の収集、もしくは任意コードの実行が可能になる。
CERT/CC(コンピュータ緊急対応チーム/コーディネーション・センター)に同バグが利用されたという報告はまだ届いていない。現段階で入手し得る情報を基に CERT がこのバグを首尾よく利用することが可能か否かを判定することは困難だ。しかし、zlib が広く普及しているため、CERT は事前対策として本文書を発表した。

詳細:
脆弱なシステム
* zlib 1.1.3 以前のバージョンと関わりのある全ソフトウェアは、影響を受  ける可能性がある。
* zlib 1.1.3 以前のバージョンから派生したデータ圧縮ライブラリは、同様  のバグを含む可能性がある。

 一般的な zlib 圧縮ライブラリが使用する圧縮伸長アルゴリズムに脆弱性はある。攻撃者が特別に生成した正規でない圧縮データを zlib を含むプログラムに渡すことが可能な場合、その生成されたデータの圧縮を伸長しようとするプログラムは、zlib ルーチンに malloc が維持する内部データ構造の改ざんを引き起こさせる。

 同バグは、プログラミング・エラーに起因する。そのエラーは、動的に割り当てられたメモリーのセグメントを一度より多く解放(すなわち“二重に解放”)しようとするものだ。特に、inftrees.c:huft_build() がデータに遭遇すると、inftrees.c:huft_build() は inftrees.c:inflate_trees_dynamic() に予期しないZ_MEM_ERROR を返す。それに続く infblock.c:inflate_blocks() がコールされる時、inflate_blocks 関数は二度目の内部データ構造を解放しようとする。

 このバグは動的メモリーの適正な割当てもしくは割当て解除を妨げるので、攻撃者は zlib を含むプログラムの操作に影響を与えることが可能になるかもしれない。殆どの環境において、この影響はサービスの使用不能もしくは情報漏洩に限られるだろう。しかし理論上、攻撃者が動作しているプログラムに任意のコードを挿入することは可能だ。このコードは、脆弱なプログラムの許可によって実行される恐れがある。

 CERT/CC は、この問題をVU#368819 として追跡している。この参照番号は、CVE 候補 CAN-2002-0059 に該当する。

影響:
 このバグは、影響を受けるライブラリを含む全てのプログラムを脆弱にする可能性がある。既定プログラムから zlib ルーチンを呼ぶ出す場所および方法により、その結果生じる脆弱性は、サービスの使用不能、情報の漏洩あるいは任意コードの実行の中の一つもしくは複数の影響を受ける恐れがある。

解決策:
 zlib のバージョンをアップグレードする。

 zlib の保守管理者は、この脆弱性を解決するためバージョン1.1.4 をリリースした。それ以前のzlib のバージョンから導かれるか、もしくはリンクされる全てのソフトウェアをアップグレードすること。zlib の最新バージョンは、http://www.zlib.org で入手可能だ。

 zlib 圧縮ライブラリは自由に入手でき、多種多様なアプリケーションを開発する多くのベンダーにより使用されている。それら全てのアプリケーションには、このバグにより引き起こされる脆弱性を含んでいる可能性がある。

ベンダー情報:
 本セクションは、このアドバイザリーに対してベンダーが提供した情報について記載している。
 以下に記されていないベンダーは、CERT/CC にコメントを提出してないということだ。

Apple Computer 社
 Mac OS X とMac OS X Server は、この脆弱性を含んでいない。

Compaq Computer 社
 x-ref: SSRT0818 zlib

 Compaq Computer 社は本文書を作成している現時点でも、同社がリリースしたソフトウェアへの影響およびこの潜在的問題を評価し続けている。同社は、その評価結果に基づくソリューションを必要不可欠なものとして実装するだろう。同社は、通常のパッチ通知手続きを経て必要なソリューションの結果として新しいパッチの告知の行う予定であり、また普通の Compaq Services サポート・チャンネルからも告知情報を入手できる。

Conectiva Linux 社
 Conectiva Linux 社がサポートするバージョン(5.0, 5.1, 6.0, 7.0,
ferramentas graficas およびecomerce )は、zlib の脆弱性の影響を受ける。
同社のセキュリティに関するメーリング・リストに修正プログラムを配布する予定であり、また同社の ftp サイトおよびミラーでも入手可能だ。修正プログラムは、zlib 自体の最新バージョン、そしてパッケージ自体の zlib バージョンを含む。もしくはシステム全体のzlib コピーに静的にリンクされる他のパッケージも含む予定だ。

Engarde
 EnGarde Secure Linux Community および Professional は共に、zlib のバグに対し脆弱だ。Guardian Digital 社は、ESA-20020311-008 でこの脆弱性に取り組んだ。ESA-20020311-008 は、下記の URL に掲載されている。
http://www.linuxsecurity.com/advisories/other_advisory-1960.html

 EnGarde Secure Professional のユーザは、Guardian Digital Secure
Networkを使用してシステムをアップグレードしてもよい。

FreeBSD
 FreeBSD は、脆弱ではない。理由は、FreeBSD の malloc 実装はこの種の二重解放を含むプログラム・エラーを検知し、警告を出すからだ。

富士通社
 富士通の UXP/V OS は zlib をサポートしてないので、この脆弱性の影響を受けない。

Hewlett-Packard 社
 HP は、脆弱ではない。

IBM 社
 IBM のAIX OS、バージョン5.1は、AIX-Linux Affinity Toolkit に含まれるアプリケーションをインストールするための Redhat Package Manager (rpm) と共に使用されるオープンソースの zlib を同梱している。AIX 5.1 は、この脆弱性の影響を受けやすい。AIX 4.3.x には zlib が組み込まれていないが、zlib をインストールして使用する顧客は、同じく脆弱になるだろう。IBM はパッチを入手し次第、パッチを適用した zlib のバージョンを作成する予定だ。

OpenBSD
 OpenBSD は、脆弱ではない。なぜなら、OpenBSD のmalloc 実装がメモリーの二重解放を検知するからだ。OpenBSD に組み込まれた zlib は、2002年1月の OpenBSD - 現行版において修正された。

Openwall GNU/*/Linux
 2002年2月15日の Openwall GNU/*/Linux (Owl)- 現行 snapshot より前の Owl の全バージョンは、zlib の二重解放脆弱性の影響を受ける。2002年2月15日以降の Owl- 現行版 には、そのユーザランド・パッケージに適正な修正プログラムが含まれている。他のベンダーの製品のユーザをさらなる危険に晒すことがないよう、我々は調整された公示がなされるまで、セキュリティ変更として文書化することを遅らせ、さらに Owl 0.1- 安定版に修正プログラムを含めることを遅らせることに同意した。我々は通常、(公示前に修正プログラムを公開するような類のポリシーをサポートしない。しかし、今回 zlib の脆弱性をこのような方法で処理することは、(既知の)バグがセキュリティ上の脆弱性であると最初に確認された時までの状況と一致しており矛盾はなかった。

 zlib バグは、以下の Owl パッケージに影響を与える恐れがある:gnupg、openssh、rpm、texinfo(セキュリティ上の意味において必ずしも必須ではない)。それらの中で OpenSSH は、ルート権限の危機を引き起こすことになるアクティブなリモート攻撃を潜在的に許可する危険性がある。仮に SSH プロトコルのバージョン 1 が OpenSSH サーバで許可されないとしたら、その攻撃はローカル的なものに留まるだろう。しかし、悪意あるサーバによる逆のリモート攻撃の可能性は残るだろう。加えて、提供された zlib ライブラリを使用するサードパーティのソフトウェアが影響を受ける可能性もある。

 Owl に含まれる Linux 2.2 カーネルの部分も zlib バグの影響を受ける。しかし幸運なことに、Owl ユーザランドは通常、それらの部分(PPP 用
Deflate 圧縮サポートそしてIrDA への Deflate 圧縮拡張)を使用しない。そして、Linux 2.2.20-ow2 で同バグは修正された。Linux 2.2.20-ow2 は2002年3月3日に公開され、Owl-現行版と Owl 0.1-安定版 双方の一部となっている。
しかしこの変更は、調整された公示日に公的に入手可能な変更ログの形でのみ文書化される予定だ。

Red Hat 社
 Red Hat Linux は、この問題に対し脆弱な zlib ライブラリが組み込まれている。Red Hat Linux のほとんどのパッケージは、共有 zlib ライブラリを使用しているが、我々は静的に zlib にリンクするか、あるいは zlib コードの内部バージョンを含む多数のパッケージを確認した。

 我々のアドバイザリの注意事項のみならず zlib やそれらのパッケージのアップデートは、以下のURLから入手可能だ。Red Hat Network のユーザは、up2date ツールを使用してそのシステムを自動的に更新できる。

http://www.redhat.com/support/errata/RHSA-2002-026.html

 Red Hat は、他のベンダーとの調整に尽力したCERT/CC に謝意を表する。
SGI 社
 SGI はCERTが報告した zlib の脆弱性を認め、現在調査を行っている。現時点での情報は、これだけだ。

 SGI の全顧客を保護するため、調査が完了しそして全ての脆弱でサポートされたIRIX OS に対し必要なパッチもしくは発表の準備が整うまで、SGI は脆弱性の開示、検討、確認を行わない。SGI が提供できる最終情報を用意するまで、セキュリティ上の全脆弱性を利用可能なものとして見なすこと、そしてローカルサイトのセキュリティ・ポリシーおよび要件に従い適切な措置をとることを顧客に推奨する。さらなる情報が入手可能となった際、http://www.sgi.com/support/security/ のワイアータップ・メーリングリストを含む通常の SGI セキュリティ情報配布方法を介して、追加のアドバイザリを発表する予定だ。

XFree86
 XFree86 バージョン4.0 から4.2.0 は、zlib バージョン1.0.8 を含む。
XFree86 3.x は、zlib バージョン1.0.4 を含む。XFree86 に組み込まれた
zlib コードは、いくつかのプラットフォームでのみ使用される。これは、xc/config/cf ソース・ディレクトリのimake config ファイル内で HasZlib を設定することで確定される。HasZlib がプラットフォームの vendor.cf ファイルで YES に設定される場合、XFree86 提供のバージョンに代わってシステム提供の zlib を使用する。XFree86 は、以下のプラットフォームのみでシステム提供の zlib をデフォルトで使用する。

FreeBSD 2.2 とそれ以降のバージョン
NetBSD 1.2.2 とそれ以降のバージョン
OpenBSD
Darwin
Debian Linux

 XFree86 の zlib コードは2002年2月14日の時点で、CVS リポジトリー(幹および xf-4_2-branch 枝)において修正された。XFree86 4.2.0 用のソース・パッチは、下記のURLから入手できる。

ftp://ftp.xfree86.org/pub/XFree86/4.2.0/fixes/.

 XFree86 が提供するの下記の XFree86 4.2.0 バイナリ・ディストリビューションは、zlib の脆弱なバージョンを含み、使用している。

Linux-alpha-glibc22
Linux-ix86-glibc22

 アップデートされたバイナリが入手可能である場合、下記の URL で文書化されている。
http://www.xfree86.org/4.2.0/UPDATES.html.

 XFree86 をインストールした際、zlib を含むか否かをチェックするには、下記のファイルが存在するか否かを調べること。

/usr/X11R6/lib/libz.a

 XFree86 X サーバが動的に zlib とリンクしているか否かをチェックするには 'ldd /usr/X11R6/bin/XFree86'の出力に'libz' を含む行を探すこと。

 様々なベンダーが XFree86 をパッケージ化し配布しており、本セクションの記述とは異なる設定および構成を使用する場合もある。

zlib.org
 zlib バージョン1.1.3 あるいはそれ以前の全ユーザは、正規ではないデータを圧縮伸長する際、1.1.3 以前のバージョンに含まれる他の存在し得る脆弱性のみならず当該脆弱性を回避するため、http://www.zlib.org から最新の 1.1.4 あるいはそれ以降のバージョンを入手する必要がある。

追加情報:
CERT/CC が本情報を提供した。
参考資料:
* http://bugzilla.gnome.org/show_bug.cgi?id=70594
* http://www.kb.cert.org/vuls/id/368819
* http://www.libpng.org/pub/png/pngapps.html
* http://www.redhat.com/support/errata/RHSA-2002-026.html

[情報提供:SecuriTeam]
http://www.securiteam.com/

《ScanNetSecurity》

Scan PREMIUM 会員限定記事

もっと見る

Scan PREMIUM 会員限定記事特集をもっと見る

カテゴリ別新着記事

「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」
「経理」「営業」「企画」「プログラミング」「デザイン」と並ぶ、事業で成功するためのビジネスセンスが「セキュリティ」

ページ右上「ユーザー登録」から会員登録すれば会員限定記事を閲覧できます。毎週月曜の朝、先週一週間のセキュリティ動向を総括しふりかえるメルマガをお届け。(写真:ScanNetSecurity 名誉編集長 りく)

×