Debian JP Project

(for vocal browsers: toc, main)

Google
WWW 全体 www.debian.or.jp 検索

« OpenSSL パッケージの脆弱性とその影響について (SSH鍵、SSL証明書等) | 一覧 | 第18回 関西 Debian 勉強会のお知らせ »

2008年10月16日

OpenSSL パッケージの脆弱性と脆弱なパッケージを含まない他の環境への影響について(Q&A)

既に幾つかのメディアで取り上げていただいていたり、ユーザ間でも話題になっているこの問題ですが、誤解を招かないよう注意が必要な点が幾つかあります。以下の問答を参考に誤解をしていないかどうか確認をお願い致します。

Q: 影響は Debian だけ?〜「Debian とその派生ディストリビューションが影響を受けるだけなんでしょ?私は(*BSD / 他のディストリビューション)を使ってるから関係ないですよね。」

A: いいえ、残念ながらそうではありません。

今回の問題は欠陥があるバージョンの OpenSSL パッケージを使って作られた鍵/証明書が脆弱であるというところにあります。例えば運用しているサーバが Red Hat Enterprise Linux だったとして、ユーザの ~/.ssh/authorized_keys に該当の欠陥がある状態で作られた鍵が登録されていたら、その Red Hat Enterprise Linux に不正なアクセスが容易な状態にあることになります(例に上げた Red Hat Enterprise Linux は CentOS でも Fedora でも FreeBSD でも他のものでも置き換えて考えてください)。

Q: 自分のところは Sarge を運用しているので全く平気ですよね!

A: いいえ、残念ながらそうではありません。

例えば、脆弱性のあるバージョンの OpenSSL を含んだ環境でユーザが SSH 鍵を作成していて、それを authorized_keys に登録した場合を想像してください…その Sarge を運用しているホストへの侵入は容易な状態となっています。Etch であれば更新された openssh-server と既知の脆弱な鍵リストである openssh-blacklist によってその様な鍵を使った場合に接続が拒否されますが、Sarge はセキュリティサポートが終了しているためにこの様な危険な状態からは保護されません

Q: では、どうやって私のサーバが影響があるのかを確認すれば良いのですか?

A: Debian Project より提供されている Debian OpenSSL Weak Key Detector (dowkd) を利用してください。

これは perl で書かれたスクリプトで、perl が導入されている環境であれば OS / ディストリビューションを問わずに実行できます (Debian では 5.8.8 及び 5.10 にて動作が確認されています)。実行前のファイルの正当性の確認には OpenPGP 署名を確認してください。なお、このスクリプトは随時更新されていますので、適宜チェックしてください。

ユーザが自分の authrized_keys に脆弱な鍵が含まれていないかをチェックした例

user@localhost:~$ perl dowkd.pl file ~/.ssh/authorized_keys 
/home/user/.ssh/authorized_keys:1: weak key
summary: keys found: 1, weak keys: 1

SSH サーバが脆弱なホスト鍵を利用していないかをリモートからチェックした例

user@localhost:~$ perl dowkd.pl host 192.168.100.100
# 192.168.100.100 SSH-2.0-OpenSSH_4.3p2 Debian-9
# 192.168.100.100 SSH-2.0-OpenSSH_4.3p2 Debian-9
192.168.100.100: weak key
192.168.100.100: weak key
Q: ダウンロードした Debian OpenSSL Weak Key Detector (dowkd) が正当なものであるかを確認したいのですが。

以下の様にして、正当性の確認が可能です。環境として PGP あるいは GPG が利用可能であることが必要となります (参考として、以下の作業は Debian sid 環境で確認を行っています)。

  1. セキュリティ勧告のメールの PGP 署名を確認
  2. PGP 署名の ID が誰のものであるかを確認
  3. PGP 鍵サーバから確認した ID の公開鍵を取得
  4. dowkd.pl と署名ファイル dowkd.pl.gz.asc をダウンロードして同一ディレクトリに配置
  5. 署名を確認

(1) まず、今回のセキュリティ勧告のメール (DSA-1571)にサインされている署名を確認します。

セキュリティ勧告が流れる debian-security-announce@lists.debian.org は PGP 署名をされた特定のアドレスからのみ投稿可能なメーリングリストですので、Florian Weimer さんのメッセージはまず真正なものであろう、と判断できます。より確実にこれが Florian Weimer さんが書いたものである、という確認するために該当のメールをファイルとして保存して以下の確認をします。

$ gpg --verify \[SECURITY\]_\[DSA_1571-1\]_New_openssl_packages_fix_predictable_random_number_generator.txt 
gpg: Signature made 2008年05月13日 21時03分24秒 JST using RSA key ID 02D524BE
gpg: Can't check signature: public key not found

(2) セキュリティ勧告が 02D524BE という ID の鍵で署名されている事が確認できましたので、その鍵を所持しているのが誰なのかを公開鍵サーバから検索します。

$ gpg --keyserver pgp.nic.ad.jp --search-keys 02D524BE
gpg: searching for "02D524BE" from hkp server pgp.nic.ad.jp
(1)	Florian Weimer (HIGH SECURITY KEY) <fw@deneb.enyo.de>
	Florian Weimer (HIGH SECURITY KEY) <Weimer@CERT.Uni-Stuttgart.DE>
	Florian Weimer (HIGH SECURITY KEY) <Florian.Weimer@RUS.Uni-Stuttgart.D
	Florian Weimer (HIGH SECURITY KEY) <fw@deneb.enyo.de>
	Florian Weimer (HIGH SECURITY KEY) <Weimer@CERT.Uni-Stuttgart.DE>
	Florian Weimer (HIGH SECURITY KEY) <Florian.Weimer@RUS.Uni-Stuttgart.D
	  2048 bit RSA key 02D524BE, created: 2002-03-19
Enter number(s), N)ext, or Q)uit > Q

上記の様に Florian Weimer さんの鍵であることが確認できました。DSA-1571は Florian Weimer <fw@deneb.enyo.de> さん (02D524BE) が少なくとも署名したものです。

(3) 署名した鍵の確認ができたので、Florian Weimer さんの公開鍵 (02D524BE) を公開鍵サーバから取得します。

$ gpg --keyserver pgp.nic.ad.jp --recv-keys 02D524BE
gpg: requesting key 02D524BE from hkp server pgp.nic.ad.jp
gpg: key 02D524BE: duplicated user ID detected - merged
gpg: key 02D524BE: public key "Florian Weimer (HIGH SECURITY KEY) " imported
gpg: 3 marginal(s) needed, 1 complete(s) needed, classic trust model
gpg: depth: 0  valid:   1  signed:  11  trust: 0-, 0q, 0n, 0m, 0f, 1u
gpg: depth: 1  valid:  11  signed:  12  trust: 2-, 0q, 0n, 5m, 4f, 0u
gpg: depth: 2  valid:  10  signed:   5  trust: 10-, 0q, 0n, 0m, 0f, 0u
gpg: Total number processed: 1
gpg:               imported: 1  (RSA: 1)

(4) dowkd.pl と dowkd.plについて署名されたファイルを取得します。

$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz
$ wget http://security.debian.org/project/extra/dowkd/dowkd.pl.gz.asc

(5) 先ほどファイルを取得したディレクトリで dowkd.pl についての署名を確認します。

$ gpg --verify dowkd.pl.gz.asc
gpg: Signature made 2008年05月23日 05時39分49秒 JST using RSA key ID 02D524BE
gpg: Good signature from "Florian Weimer (HIGH SECURITY KEY) "
gpg: WARNING: This key is not certified with a trusted signature!
gpg:          There is no indication that the signature belongs to the owner.
Primary key fingerprint: C8D3 D9CF FA9E 7056 3F32  FA54 BF7B FF04 02D5 24BE

Good signature from "Florian Weimer (HIGH SECURITY KEY) <fw@deneb.enyo.de>" とあるので、OpenSSL のセキュリティ勧告メールを流した Florian Weimer さんが、dowkd.pl についても署名をしたことが確認できました。

なお、この場合 WARNING が出ているのは、自身が所有しているデータの中では「信用の輪(web of trust)」の中に含まれていない鍵であることを意味しています。この鍵が真正に Florian Weimer さんのものであることを信用するかについては、鍵交換などを実施していくか、その鍵に署名している他の人のリストなどから別途確認ください。

Q:SSL の証明書も問題になるのですか?確認の仕方が知りたいのですが

A: これも、Debian OpenSSL Weak Key Detector (dowkd) を利用してください。PEM ファイルのチェックが行えます。

Q:SSL の証明書の再発行は費用が発生するので行いたくないのですが…

A: 残念ながら OpenSSL パッケージに該当の脆弱性があった期間に作られたものは、再度申請などして作り直しが必要になります。

ベンダによっては今回の場合について SSLサーバ証明書の残存期間の無償再発行や値引きでの対応を行うなどとしているところがありますので、詳しくは各ベンダに対応について問い合わせてください。(もし、情報がありましたら追記したいと思いますので、お教えください

SSL 証明書取扱いベンダの対応

2008/10/16 23:02 リンク


過去のニュース