アップデートのインストール後に解決しましたCVE-2014-0160(オープンSSL厳しい努力バグ)、libsslを使用できるすべてのものを再起動するときは注意が必要でした。 ApacheやVPNソフトウェアなどの多くのサービスにはまだ古い脆弱なlibsslがロードされており、パッケージマネージャは問題を解決しようとしませんでした。
これが考えられました。共有ライブラリを更新した後、現在実行中のプログラムが以前のバージョンのライブラリにリンクされていることを確実に確認できますか?ロードしている特定の共有ライブラリのインスタンスが現在ディスク上の同じインスタンスであることを確認するために、リンカレベルまたはファイル記述子レベルで実行されているプロセスを調査する方法が必要であることを確認してください。
答え1
これを行う2つの方法が見つかりました。
- Debian のみ、プロセスで最も削除/置換されたファイルを一覧表示します。(にあるように一時的なものとして知られているいくつかのファイルを除く
/tmp
):このdebian-goodies
パッケージは、ディスクから消えたり交換された開いたファイルを見つけるcheckrestart
ために出力を取得し、オプションは関連ファイルを識別します。lsof
-v
通常、手動では、気になるファイルを指定できます。出力を表示し、
lsof
削除または置き換えられたファイルへの開かれたファイルハンドルを識別できます。出力では、これらのファイルはlsof -nnP
4番目の列でとして識別されるように見えます。特定のライブラリ(この場合はOpenSSL)の古いハンドルを見つけるなどの操作をDEL
実行できます。lsof -nnP | grep DEL.*libssl.so
これは、使用している特定のバージョンのlsofとパッケージマネージャの動作によって大きく異なる可能性があるため、慎重に進んでください。pluto 3592 root DEL REG 202,0 98831 /lib/i386-linux-gnu/libssl.so.1.0.0 pluto 3604 root DEL REG 202,0 98831 /lib/i386-linux-gnu/libssl.so.1.0.0
答え2
Linuxでの迅速で汚い方法(ありがとう ラーケンシュタイン):
grep '/usr/lib/libssl1.*(deleted)' /proc/*/maps
正確な解析のためにオプションを呼び出しlsof
て-F
解析可能な出力を取得できます。f
削除されたファイルをフィルタリングするためのフィールド(fDEL
)とn
ファイルパスを取得するためのフィールドを含みます。以下のコードスニペットは、改行文字を含むファイル名をブロックします。
lsof -F pfn | awk '
/^p/ {pid=substr($0,2)}
/^fDEL$/ {getline; if (/n\/usr\/lib\/libssl1\.0\.1.*(deleted)$/) print pid}
'