OpenSSL をバージョンアップしたにも関わらず、旧バージョンが削除されていない

OpenSSL は、脆弱性が見つかる度にバージョンアップを実施しているのですが、バージョンアップを実施した後、パッケージリストを出してみたら何故か旧バージョンと新バージョンが一緒に存在する事象が発生しました。

システム内部的には、新バージョンが使われているかもしれないけど、旧バージョンがまだ残っていると攻撃の対象になるかもしれないので、旧バージョンは、きれいに削除したほうがいいかなと思います。

どうも、CentOS のリポジトリの問題で重複されることがあるみたいですね。

いきなり削除してしまうと依存関係で他のモジュールで使われているパッケージが削除されてしまい、システムがおかしくなってしまう恐れがあるので、以下の順番で作業を実施します。

  • 現在インストールされている OpenSSL パッケージ確認
  • 現在使われている OpenSSL のバージョン確認
  • 旧 OpenSSL 削除テスト、及び削除
  • 最新バージョンだけが残っていることを確認

Step 1. 現在インストールされている OpenSSL パッケージ確認

以下の例では、旧バージョンが openssl098e-0.9.8e-17、新バージョンが openssl-1.0.1e-16 です。

旧と新が同居している微妙な状況。

openssl パッケージリスト確認Raw Code(S)Raw Code(T)
# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.7.x86_64
openssl-devel-1.0.1e-16.el6_5.7.x86_64
openssl098e-0.9.8e-17.el6.centos.2.x86_64

Step 2. 現在使われている OpenSSL のバージョン確認

旧・新が同居しているので、何が実際に使われているか確認しておきます。

実際に使われている openssl のバージョン確認Raw Code(S)Raw Code(T)
# openssl version
OpenSSL 1.0.1e-fips 11 Feb 2013

幸いなことに一番最新の Open SSL が使われています。

Step 3. 旧 OpenSSL 削除テスト、及び削除

最新が使われているならば、旧バージョンは、依存関係エラーなしで普通に削除できるはずなので、旧バージョンを削除する前に一回テストを実施し、エラーが表示されないことを確認してから削除します。

旧 openssl 削除Raw Code(S)Raw Code(T)
# rpm -e openssl098e-0.9.8e-17.el6.centos.2.x86_64 --test

---------------------------------------------------------------
上記の削除テスト実施結果、何も表示されなかったら削除を実施する
---------------------------------------------------------------
# rpm -e openssl098e-0.9.8e-17.el6.centos.2.x86_64

Step 4. 最新バージョンだけが残っていることを確認

旧バージョンの削除が終わったら、最新バージョンだけが残っていることを確認します。

旧 openssl 削除確認Raw Code(S)Raw Code(T)
# rpm -qa | grep openssl
openssl-1.0.1e-16.el6_5.7.x86_64
openssl-devel-1.0.1e-16.el6_5.7.x86_64

参考 : 最新の OpenSSL を削除しようとしたらこうなった

因みに、現在使われている OpenSSL を削除しようとすると以下のように依存関係関連で削除できないと怒られます。 (強制削除ではないので、怒られて当然ですが。。)

現在使われている openssl 削除テストRaw Code(S)Raw Code(T)
# rpm -e openssl-1.0.1e-16.el6_5.7.x86_64 --test
エラー: 依存性の欠如:
    libcrypto.so.10()(64bit) は (インストール済み)lynx-2.8.6-27.el6.x86_64 に必要とされています
    libcrypto.so.10()(64bit) は (インストール済み)ptlib-2.6.5-3.el6.x86_64 に必要とされています
    libcrypto.so.10()(64bit) は (インストール済み)opal-3.6.6-4.el6.x86_64 に必要とされています
    libcrypto.so.10()(64bit) は (インストール済み)redland-1.0.7-11.el6.x86_64 に必要とされています
                                            ・・・
    libssl.so.10()(64bit) は (インストール済み)sendmail-8.14.4-8.el6.x86_64 に必要とされています
    libssl.so.10()(64bit) は (インストール済み)openvpn-2.3.2-2.el6.x86_64 に必要とされています
    libssl.so.10(libssl.so.10)(64bit) は (インストール済み)proftpd-1.3.3g-4.el6.x86_64 に必要とされています
    openssl は (インストール済み)postfix-2:2.6.6-2.2.el6_1.x86_64 に必要とされています
    openssl = 1.0.1e-16.el6_5.7 は (インストール済み)openssl-devel-1.0.1e-16.el6_5.7.x86_64 に必要とされています

終わりに

OpenSSL の暗号化処理は、爆速とよく言われます。

AESDES 等の暗号化メソッドは、PHP にもありますが、単純比較で PHP vs OpenSSL 暗号化処理のパフォーマンスを測定した結果、圧倒的に OpenSSL が速かったという検証結果がいろいろ公開されています。

使いやすいし、パフォーマンスが良くて使っている人が多いので、脆弱性が見つかったら一日も早くバージョンアップを実施し、狙われないようにしておいたほうがいいと思います。

以上、OpenSSL バージョンアップ後も旧バージョンが居座り続ける問題でした。