FreeBSD に openssl SA2017年01月15日 14時19分31秒

2017 年の FreeBSD Security Advisory の一番目は FreeBSD-SA-17:01.openssh

OpenSSH の複数の脆弱性。全てのバージョンが対象となっているが、昨年末で、幾つかサポートの対象から外れたリリースがあるので、11.0-RELEASE と 10.3-RELEASE にのみ修正が発行。

FreeBSD に ntp の SA2016年12月24日 17時58分37秒

FreeBSD-SA-16:39.ntp が公開され、八つの問題が対処されている。FreeBSD の全てのリリースが対象。問題が多すぎる。ntpd を利用しているのなら更新の必要あり。

FreeBSD の SA と EN が三つずつ2016年12月08日 13時44分49秒

FreebSD の SA が三つ、EN が三つでている。

FreeBSD-SA-16:36.telnetd の対象は九系から十一系までの全て。しかし、telentd は 2001 の八月から初期設定では無効にされている。エラーの処理に問題があるとのこと。

FreeBSD-SA-16:37.libc はライブラリの問題。こちらも対象は九系から十一系までの全て。FreeBSD に同胞去れているプログラムには影響は無いが、他のプログラムでは保証は無い。link_ntoa 関数に問題があり、他の静的バッファを書き換えることが出来るとのこと。こちらは、パッチが修正版があり、手作業でやった場合は、正しい物を選ぶ必要がある。

FreeBSD-SA-16:38.bhyve の対象は十系と十一系のみ。再現環境は bhyve に 3GB 以上のメモリを割り当てた時。デバイスデスクリプタを改変して、ルート権限を取得できる。

ここからが EN。FreeBSD-EN-16:20.tzdata にて、タイムゾーンの変更が提供されている。対象は九系から十一系までの全て。なお、この変更を適応するには、FreeBSD-EN-16:19.tzcode も必要になる。

FreeBSD-EN-16:19.tzcode にて 2001 年に変更された posix 準拠になり、上のタイムゾーンの変更を適応しても警告が出されなくなる。

FreeBSD-EN-16:21.localedef の対象は十一系のみ。ユニコードの判別に間違えがあり、ctype や wctype が間違った範囲の値を返すとのこと。

11.0-RELEASE と 11-CURRENT の NDIS の状態2016年12月01日 12時09分13秒

ifconfig wlan0 に ssid を指定すると、問題が起きる事まで突き止めた。これは FreeBSD 11.0-RELEASE でのテスト。

FreeBSD 11.0-RELEASE では既に NDIS の一部が動かない様だが、何度か古いカーネルで試した結果からみても、最新のコードが一番真っ当な様だ。

春先に 11-CURRENT で wlan の作成が出来なくなった変更があった。11.0-RELEASE を下に調査を続ける前に、その変更が原因で壊れたのかを点検したい。SVN の履歴などを調べるとRev 300738が該当の変更だったようだ。そこで、Rev 300737 に戻して、試してみようと思う。尚、変更は ifconfig だったので、buildworld と buildkernel が必要になるので、時間が掛かりそうだ。

11.0-RELEASE で NDIS でパニックの再現2016年11月29日 18時50分38秒

ifconfig wlan0 list scan は動作するのは確認した。しかし、dhclient は動かない。この後、sysctl を使うとカーネルがパニックを起こす場合があるのを確認した。

ndis から wlan デバイスを作成しただけでは大丈夫なようだ。

$ kldload if_ndis
$ kldload /boot/modules/bcmwl5_sys.ko
$ sysctl -a | wc -l
5330
$ ifconfig wlan0 create wlandev ndis0 up
$ ifconfig wlan0 list scan
$ sysctl -a | wc -l
5338
$ dhclient wlan0
wlan0: no link .............. giving up
$ sysctl -a | wc -l
5338

ssid を指定して wlan を作成するとパニックを起こすようだ。

$ kldload if_ndis
$ kldload /boot/modules/bcmwl5_sys.ko
$ wlan create wlandev ndis0 ssid <id> wepmode on wepkey <key> weptxkey 1 up
$ sysctl -a | wc -l
kdb に落ちるので見ると、fill_kinfo_proc 内の strlcpy を指している。
db> where
Tracing pid 993 tid 100145 td 0xc7275000
strlcpy(...)
fill_kinfo_proc()
kern_Proc_out()
fill_kinfo_proc では二箇所で strlcpy が使われていた。

11.0-RELEASE で NDIS の実験を続ける2016年11月26日 06時14分50秒

11.0-RELEASE の方が ndis の状態が良いので、壊れた当初のリビジョンより、11.0-RELEASE で原因追求を続けることに。テストを続けていると、パニックを起こす状態になるのだが、あれこれと試しながらだったので、何がきっかけだかは完全には掴めていない。

取り敢えず、このコマンドが動作できるのは確認した。

$ kldload if_ndis
$ kldload /boot/modules/bcmwl5_sys.ko
$ ifconfig wlan0 create wlandev ndis0 up
$ ifconfig wlan0 list scan
list scan が動くので、通信は機能している様子。

次に、dhclient をそのまま試したら駄目だった。

$ dhclient wlan0
wlan0: no link .............. giving up

NDIS を 11.0-RELEASE に戻して更に原因追求2016年11月22日 13時43分58秒

NDIS の原因追求再試行第三段 286410 にて問題を再現にて、この辺りが問題が発生していたのは分かった。286419 では kldload でパニックを起こす。しかし、11.0-RELEASE で最近試したときのことを思い出す。その時は、通信こそ出来なかったもののパニックを起こしてはいなかったはず。そこで、11.0-RELEASE に戻す。

11.0-RELEASE では kldload でのパニックは収まっていた。dmesg から

ieee80211_new_state_locked: pending AUTH -> SCAN transition lost
を見付ける。まだ、何に関係あるのかは分からないが取り敢えず、記録。

NDIS のデバッグを有効にする sysctl がある。

$ sysctl debug.ndis=1
この後、
ndis_newstatus: ASSOC -> RUN
と表示されるようになった。

NDIS の原因追求再試行第三段 286410 にて問題を再現2016年11月17日 18時51分29秒

リビジョン 286409 が動作可能なのを確かめた。今回は、286410 が怪しかったので、このままリビジョンを一つのみ上げる。

リビジョン 286410 は zyd ドライバを壊してしまったので、そのままではコンパイル出来ない。リビジョン 286416 にてその修正が入っているので、これを利用するのが一番簡単そうだ。

案の定このリビジョンから、ndis ドライバを作り直して、kldload をすると落ちるようになった。

NDIS の原因追求再試行第二段 286409 へ2016年11月04日 21時48分23秒

リビジョン 283540 へ失敗した。そこで、次に大きい変更が入る 286410 の一つ手前の 286409 を試す。

今度も buildkernel が ath ドライバとその他の二つのドライバでコンパイルに失敗した。エラーは、「shifting a negative signed value is undefined」。これは今日の 286409 でも、前回の 283540 でも起きている。新しいエラーチェックが追加されたか、有効化された影響のように見える。

11.0-RELEASE で試すよりも、少し古い 10.2-RELEASE で試してみることにした。そうすると、今回はカーネルの再構築に成功。

NDIS をコンパイルし直して試したら動いた。286509 では利用可能。

FreeBSD の bind と openssl の SA がまた出ている2016年11月03日 16時39分09秒

bind と openssl はほぼ、Security Advisory の常連。今日もこの二つが対象になっていた。順番をリリースの対象毎に並べ替えて紹介。

FreeBSD-SA-16:34.bind は FreeBSD 9.3-RELEASE のみが対象。Dos 攻撃の対象。

FreeBSD-SA-16:35.openssl は 9.3-RELEASE to 10.x 系 が対象の openssl のバグ。

https://www.freebsd.org/security/advisories/FreeBSD-SA-16:33.openssh.ascFreeBSD-SA-16:33.openssh も openssl のバグだが、対象は 10.3-RELEASE と 11.0-RELEASE のみ。