ライブラリからOpenSSLのバージョンを確認してみた結果・・・

 

おひさしぶりだいこんです。ナツヨです。

GW中にOpenSSLの脆弱性が発表されていました。

OpenSSL、けっこういろんなサービスが使っていて、「このプロセスが使ってるのは意図したOpenSSLなのかな・・・?」って不安に思ったりすることがあるので、呼び出しているライブラリからOpenSSLのバージョンを確認できるのか、確かめてみました。

 

結果としては、うまくいきませんでした。

 

利用している環境はUbuntu14.04です。

まずdpkgコマンドで、opensslのバージョンを調べてみます。

# dpkg -l | grep openssl
ii  libgnutls-openssl27:i386                              2.12.23-12ubuntu2.5                           i386         GNU TLS library - OpenSSL wrapper
ii  openssl                                               1.0.1f-1ubuntu2.18                                  i386         Secure Sockets Layer toolkit - cryptographic utility
ii  python-openssl                                        0.13-2ubuntu6                                       i386         Python 2 wrapper around the OpenSSL library

 

1.0.1fなので、今回の脆弱性に該当していることがわかります。

opensslコマンドでも調べておきます。

# openssl version
OpenSSL 1.0.1f 6 Jan 2014

 

次に、opensslコマンドで実際に呼び出しているライブラリをしらべます。

lddコマンドは、指定したプログラムの依存関係を調べることができます。

下の例では、opensslコマンドを実行するのにどんなライブラリが必要か調べています。

 

# ldd /usr/bin/openssl
    linux-gate.so.1 =>  (0xb7712000)
    libssl.so.1.0.0 => /lib/i386-linux-gnu/libssl.so.1.0.0 (0xb76a4000)
    libcrypto.so.1.0.0 => /lib/i386-linux-gnu/libcrypto.so.1.0.0 (0xb74f6000)
    libc.so.6 => /lib/i386-linux-gnu/libc.so.6 (0xb7347000)
    libdl.so.2 => /lib/i386-linux-gnu/libdl.so.2 (0xb7342000)
    /lib/ld-linux.so.2 (0xb7713000)

 

その中のlibssl.so.1.0.0の中身を覗いてみます。libssl.so.1.0.0ファイルはバイナリファイルです。バイナリファイルとは人間が解釈できない形式のファイルのことだそうです。stringsコマンドでは、そんなバイナリファイルの中身をのぞくことができます。

 

# strings /lib/i386-linux-gnu/libssl.so.1.0.0 | grep OpenSSL
OpenSSLDie
SSLv3 part of OpenSSL 1.0.1f 6 Jan 2014
TLSv1 part of OpenSSL 1.0.1f 6 Jan 2014
DTLSv1 part of OpenSSL 1.0.1f 6 Jan 2014
OpenSSL 1.0.1f 6 Jan 2014


最後の行で、OpenSSLのバージョンを確認することができました。次に、OpenSSLをアップデートしてみます。

# apt-get update

(省略)

# apt-get install openssl

(省略)

# dpkg -l | grep openssl
ii libgnutls-openssl27:i386 2.12.23-12ubuntu2.5 i386 GNU TLS library - OpenSSL wrapper
ii openssl 1.0.1f-1ubuntu2.19 i386 Secure Sockets Layer toolkit - cryptographic utility
ii python-openssl 0.13-2ubuntu6 i386 Python 2 wrapper around the OpenSSL library

 

CVE-2016-2108 in Ubuntu

Ubuntu 14.04のopensslの修正済みバージョンは2.19としてリリースされていました。

きちんと修正済みバージョンになってくれたようです。ε-(´∀`*)ホッ

 

# openssl version
OpenSSL 1.0.1f 6 Jan 2014

むむっアップデート前と結果が変わらないぞい・・・。

 

# strings /lib/i386-linux-gnu/libssl.so.1.0.0 | grep OpenSSL
OpenSSLDie
SSLv3 part of OpenSSL 1.0.1f 6 Jan 2014
TLSv1 part of OpenSSL 1.0.1f 6 Jan 2014
DTLSv1 part of OpenSSL 1.0.1f 6 Jan 2014
OpenSSL 1.0.1f 6 Jan 2014

日付も特に変わっていないぞい・・・。

う〜ん。

思い通りにいきませんでした(・ัω・ั) 

 

2016/05/17 追記

いろいろリプライをいただいたので、追記いたします。

脆弱性対応=パッチを当てるだけ=バージョンアップではないというお話を聞きました。なのでバイナリの中のバージョンの表記が上がらないと。

 あとは、パッケージ管理システムによってchangelogを見ることができるので、それを確認したほうが良いという話。

 私はdebian系(debian,ubuntu)しか経験がないので、apt-get以外使ったことがありません。パッケージ管理システムの違いとか気になる…。

ネットサーフィンしていると、apt-get VS aptitudeはよく目にしますね!

 

あとは、lsofコマンドを使うと、今プロセスが読み込んでいるファイルを確認できるので、そこでlibsslでgrepかければ良いという話も聞きました。

lsof、既視感あると思ったら、glibcの時も同じようなことをしていたのを、すっかり忘れていました・・・。

 

フォロワーさんが、Redhat系のOpenSSLのパッケージについて調査されていたので、引用させていただきました。

 

そういえば、OpenSSLのパッケージの中身ってきちんと見たことないなぁ。

次回は、OpenSSLのパッケージの中身を見てみよう(debian)にしてみようかな。

反応くださった皆さん本当にありがとうございました!('ω')

 

また気になることがあったら追記しますね。