OpenSSHにセキュリティ脆弱性
OpenBSDのTheo de Raadt氏が2016年1月14日にメーリングリストに投函したメール「Important SSH patch coming soon 」で、OpenSSHにセキュリティ脆弱性が存在することが明らかにされました。修正版が提供されるまでの問題回避策として、設定ファイルssh_config(5)に次の設定を追加するか(/etc/ssh/ssh_config、~/.ssh/config) 、
OpenSSHクライアントバグを回避するための設定
UseRoaming no
ssh(1)コマンドに-oUseRoaming=noオプションを指定して利用することが推奨されています。
OpenBSD-currentには修正パッチがマージされましたし、OpenBSD 5.7とOpenBSD 5.8向けのパッチも公開されました(010_ssh.patch 、022_ssh.patch 。OpenBSDの現在の最新リリースバージョンは5.8) 。OpenBSD以外のオペレーティングシステム向けのポータブル版OpenSSH向けのパッチは、Theo de Raadt氏のメール投函の翌日に「Announce: Portable OpenSSH 7.1p2 released 」として公開されました。まだ詳細はCVEに詳しい解説は掲載されていませんが、この問題はCVE-2016-0777 およびCVE-2016-0778 としてCVEに登録されています。
ローミングに問題:OpenSSH 5.4~7.1p1
「Announce: Portable OpenSSH 7.1p2 released 」に掲載された情報によれば、OpenSSHのバージョン5.4から7.1p1までのバージョンにはSSH接続を再開するための「ローミング」と呼ばれる機能が実装されているとのことです。
この機能のサーバ側の実装が公開されたことはこれまで一度もないそうですが、クライアント側にはサーバが提供するローミング機能を利用するための実装が追加されており、デフォルトで機能が有効になっているそうです。今回、このクライアントの実装に問題があることがわかり、細工したSSHサーバを使われるとサーバ側からクライアントのメモリ上のデータが取得できてしまうとされています。鍵に関する情報なども漏洩する危険性があり注意が必要です。
Theo de Raadt氏がメーリングリストに投函した回避設定はこのローミング機能を無効にするものです。ローミング機能が無効になっているとこの問題の影響を受けないとされています。このセキュリティ脆弱性はQualys Security Advisoryチームによって報告されたと説明があり、セキュリティ脆弱性の詳しい説明、コードの解説、このセキュリティ脆弱性を利用するためのコードなどが「Qualys Security Advisory:Roaming through the OpenSSH client: CVE-2016-0777 and CVE-2016-0778 」に掲載されています。
修正版へアップグレードを
OpenBSDのみならずほかのオペレーティングシステムでも修正されたOpenSSHへのアップグレードがはじまっています。FreeBSDでもPorts CollectionのOpenSSHが修正版へアップグレードされたほか、ユーザランドにマージされているOpenSSHにもパッチがマージされました。
FreeBSD 10.2の場合、FreeBSD 10.2-p10で今回の修正が取り込まれています。
図 OpenSSH 7.1p2相当のパッチを適用
# freebsd-update fetch
Looking up update.FreeBSD.org mirrors... none found.
Fetching metadata signature for 10.2-RELEASE from update.FreeBSD.org... done.
Fetching metadata index... done.
Inspecting system... done.
Preparing to download files... done.
The following files will be updated as part of updating to 10.2-RELEASE-p10:
/bin/freebsd-version
/usr/bin/slogin
/usr/bin/ssh
/usr/libexec/ssh-keysign
/usr/src/crypto/openssh/readconf.c
/usr/src/sys/conf/newvers.sh
# freebsd-update install
バージョンが上がったのはユーザランドだけですので、freebsd-version(1)コマンドに-uを指定して、ユーザランドのバージョンが10.2-p10になっていれば修正したバージョンになっています。
図 freebsd-version(1)でユーザランドのパッチバージョンを確認
% freebsd-version -u
10.2-RELEASE-p10
%
FreeBSDはこの数年間、セキュリティアドバイザリの発行件数が高い状態が続いています。1月に1件以上のペースで発行されており、適切にアップグレードを行っていくことが推奨されます。