« 死の本 | Main | Ubiquity 0.1.6 で MobileMe が使えるようになりました »
openssh の 5.2p1 がリリスされて「僕は見ていた : /etc/ssh/sshd_config に一行書き加えなさい」で紹介した平文化攻撃が緩和されました。しかし設定を元に戻すのは微妙です。
今朝、私が管理しているある Linux サーバが出す管理者向けのレポートの中で clamav-update が openssh の新しいバージョンを検知してインストールしたと書いてありました。その Linux サーバでは、ディストリビューションが提供しているパッケージの openssh がとても古いままなので、つい先日 openssh だけソースからビルドしてインストールし、自動アップデートを clamav-update に任せるようにしたのです。
任せるようにした時点での最新版は 5.1p1 で、これは Mac OS X 10.5 での openssh の最新版でもあります。
この新しい 5.2p1 のリリースノートに次のようにあります。
release-5.2 から2009年2月25日に引用This release changes the default cipher order to prefer the AES CTR modes and the revised "arcfour256" mode to CBC mode ciphers that are susceptible to CPNI-957037 "Plaintext Recovery Attack Against SSH".
このリリースでは、CPNI-957037「SSH に対する平文回復攻撃」が影響する CBC モード暗号化よりも、AES CTR モードと改訂版「arcfour256」モードが優先されるようにデフォルトの暗号方式の順序が変更されました。
ここに出てくる CPNI-957037「SSH に対する平文回復攻撃」に関しては「僕は見ていた : /etc/ssh/sshd_config に一行書き加えなさい」で紹介しました。とても低い確率ですが、CBC モードの暗号化を使用していると暗号が解かれることがあるというものでした。
その紹介記事では、CBC モードを使用しないような設定を載せていました。しかし、CBC モードしか使えないような ssh クライアントは設定変更されたサーバには接続できないという懸念がありました。サーバ管理者向けに書いたわけではなく、自分のマシンに自分でアクセスすることを想定していました。設定ファイルの位置が Mac OS X ではないまま記事を書いてしまいましたが念頭にあるのは Mac OS X ユーザです。ですからそういう貧相な ssh クライアントはそれを読む人は使っていないだろうと予想していました。
自分で ssh サーバにして(リモートログインを ON にして)自分でアクセスするなど、CBC モード無しでも全ての利用者が困らないのならそれでもよいのですが、多数の利用者がいるようなサーバの場合はそうもいきません。逆に、色々なサーバにアクセスする場合も同様です。可用性を損なわずにできる限りこの弱点をフォローするには優先順位の変更が有効です。私も最初はその設定を記事に書こうと思っていました。
サーバとクライアントの両方が優先順位を持っていて、サーバの優先順位だけで CBC モードの優先順位を下げてあって、クライアントの優先順位では今まで通り CBC モードが最優先の場合は一体どうなるのかが気になるところです。そこで調べてみました。
| サーバ設定 | ||||
|---|---|---|---|---|
| CBC 最優先 | CBC 非優先 | CBC 排除 | ||
| クライアント設定 | CBC 最優先 | × | × | ◯ |
| CBC 非優先 | ◯ | ◯ | ◯ | |
| CBC 排除 | ◯ | ◯ | ◯ | |
サーバもクライアントも openssh 5.1p1 を使い、Ciphers の設定をそれぞれで変化させながら調べた結果です。◯は CBC 以外が使用されることを、×は CBC が使用されることを表しています。
この結果から、たとえサーバで CBC を優先しないように設定されていてもクライアントで CBC が優先されていたら CBC になってしまうことがわかります。つまり、サーバの Ciphers 設定は事実上、サポートするかしないかを決定するのであって優先順位を指定することはできないということです。
したがって CBC 以外を使えるクライアントに、クライアントの設定がどうなっていようと CBC を使わせないためには CBC をサーバの設定から排除するしか方法がありません。前の記事を書くときに、サーバの設定を幾つか試して Ciphers の順序を変えても効果がなかったので Ciphers から CBC を排除する設定を掲載したのでした。
最初に述べたように openssh 5.2p1 では Ciphers の順序が変更されて CBC ではなく CTR が優先されるようになりました。これは「SSH に対する平文回復攻撃」を緩和するためです。しかし、緩和されたのはクライアントであってサーバではありません。5.2p1 は出たばかりで行き渡るのは結構先のことでしょう。そしてクライアントの Ciphers の設定を変更する人の方が少ないと予想される中で、サーバの Ciphers の設定に CBC を復活させるのは考えものです。CBC しか使えないクライアントが今までになかったのでしたら、5.2p1 にバージョンアップしてもサーバの設定は引き続き CBC 排除がよいでしょう。
CBC しか使えないクライアントを使っている人がいて CBC を排除できないときは、この攻撃が成功する確率がとても低いことを頼りにお祈りすることになります。安全性を重視する場合は CTR などが使えるクライアントソフトを紹介して乗り換えを促し、期限を切って CBC を排除するというのが現実的な路線でしょうか。