米CERT/CCOpenSSL Projectは米国時間7月30日,OpenSSLのセキュリティ・ホールを公表した(関連記事)。OpenSSLはSSL/TLSを実装した無償の暗号化ツール・キット(ライブラリ)のこと。セキュリティ・ホールを悪用されると,OpenSSLを組み込んでいるサーバー・アプリケーションおよびクライアント・アプリケーションが稼働するマシン上で,任意のコードを実行される恐れがある。

 影響を受けるのは,OpenSSL 0.9.6d 以前および 0.9.7ベータ版(beta1,beta2)を使用するアプリケーション。OpenSSLの前身ともいえる暗号化ツール「SSLeay」にも同様のセキュリティ・ホールがあるため,SSLeayを組み込んだアプリケーションも影響を受ける。なお,32ビット・マシンで稼働し,かつSSL 2.0を無効にしている,0.9.6dを組み込んだサーバー・アプリケーションは影響を受けない。

 対策はパッチの適用や最新版 0.9.6e(ベータ版の最新版は 0.9.7-beta3)へのアップグレードなど。OpenSSLはツール・キットなので,OpenSSLだけをアップグレードしても意味はない。アップグレード後,OpenSSLを使用している各アプリケーションを再コンパイルするとともに再起動する必要がある。

 今回OpenSSLに見つかったのは,以下の4種類のバッファ・オーバーフローのセキュリティ・ホールである。悪用されると,任意のコードを実行されたり,DoS(サービス妨害)状態に陥ったりする恐れがある。

(1)OpenSSLクライアントの,SSL 2.0 ハンドシェイク・プロセス時のバッファ・オーバーフロー
影響を受けるのは,OpenSSLを組み込んだサーバー・アプリケーション。ハンドシェイクのプロセス中に,SSL対応のクライアントから不正に長い「クライアント・マスター・キー」を送信されると,バッファ・オーバーフローを引き起こす。SSL 2.0を無効にしている場合には影響を受けない。

(2)OpenSSLサーバーの,SSL 3.0 ハンドシェイク・プロセス時のバッファ・オーバーフロー
影響を受けるのは,OpenSSLを組み込んだクライアント・アプリケーション。ハンドシェイクのプロセス中に,SSL対応のサーバーから不正に長い「セッションID」を送信されると,バッファ・オーバーフローを引き起こす。

(3)OpenSSL 0.9.7-beta1/2サーバーの,SSL 3.0 ハンドシェイク・プロセス時のバッファ・オーバーフロー
影響を受けるのは,Kerberosを有効にした OpenSSL 0.9.7-beta1/2 を組み込んだサーバー・アプリケーション。SSL対応のクライアントから不正に長い「クライアント・マスター・キー」を送信されると,バッファ・オーバーフローを引き起こす。

(4)64ビット・プラットフォームにおける,複数のバッファ・オーバーフロー
影響を受けるのは,64ビット・プラットフォームで稼働する,OpenSSLを組み込んだクライアントおよびサーバー・アプリケーション。64ビット・プラットフォームで使用するには小さすぎるバッファが複数存在するために,送信されるデータによっては,バッファ・オーバーフローを引き起こす恐れがある。

 また,これらとはタイプが異なるセキュリティ・ホールが,OpenSSLに含まれる「ASN.1」ライブラリに見つかっている。具体的には,デジタル証明書のASN.1エンコーディングを適切に処理できない,複数のセキュリティ・ホールが存在する。そのため,不正なデータを送信されると,DoS(サービス妨害)状態に陥る恐れがある。

 このセキュリティ・ホールについては,SSL/TLSアプリケーションに限らず,S/MIME(PKCS#7)アプリケーションなども影響を受ける。

 以上5種類のセキュリティ・ホールを解消するには,パッチを適用するか,セキュリティ・ホールを修正した最新版 0.9.6e(ベータ版の場合には 0.9.7-beta3)にアップグレードする。パッチや最新版はOpenSSL Projectのサイトおよびそのミラー・サイトからダウンロードできる。

 OpenSSLを含むプロダクトを出荷しているベンダーからも,パッチなどが提供されている。例えば,米Red Hatからは,セキュリティ情報とアップグレード用のパッケージが提供されている。CERT/CCが公開している,ベンダー各社の対応状況などを参考に,各ベンダーのサイトなどをチェックしてほしい。

 なお,対策を施すまでは,影響を受けるアプリケーションを停止することをCERT/CCは勧めている。

◎参考資料
CERT Advisory CA-2002-23 Multiple Vulnerabilities In OpenSSL(米CERT/CC,英語情報)
OpenSSL Security Advisory [30 July 2002](OpenSSL Project,英語情報)
Tarballs(OpenSSL Project,最新バージョンのソース・コード)
Updated openssl packages fix remote vulnerabilities(米Red Hat,英語情報およびアップグレード用パッケージ)

(勝村 幸博=IT Pro)