amd64 の FreeBSD 12.x の kernel は ifunc が必要2018年09月18日 11時39分15秒

FreeBSD 12.0-RELEASE も近付いてきている。ALPHA-6 に入り、既にテストを行なっている人、そこそろ試してみようかという人などがいるとは思う。11 系からの更新は幾つかの注意点がある。

まずは、ifunc。11 系から上げる人は、buildkernel 時に、CURRENT を追っていて、11 系のシステムに上書きインストールする人は installkernel 時に見掛けると思う。私は、NFS mount 越しの installkernel 時に出てきた。

$ uname -r
11.2-RELEASE-p2
$ mount -t nfs amd64-current:/usr/src /usr/src
$ mount -t nfs amd64-current:/usr/obj /usr/obj
$ make installkernel -C /usr/src
make[2]: "/usr/src/sys/conf/kern.pre.mk" line 126: amd64 kernel requires linker ifunc support
さて /usr/src/sys/conf/kern.pre.mk を覗いてみると、
.if (${MACHINE_CPUARCH} == "amd64" || ${MACHINE_CPUARCH} == "i386") && \
    defined(LINKER_FEATURES) && ${LINKER_FEATURES:Mifunc} == ""
.error amd64/i386 kernel requires linker ifunc support
.endif
.if ${MACHINE_CPUARCH} == "amd64"
LDFLAGS+=       -Wl,-z max-page-size=2097152 -Wl,-z common-page-size=4096 -Wl,-z -Wl,ifunc-noplt
.endif
の部分がこれに当たる。

コードを見るより、/usr/src/UPDATING を開く。

20180510:
        The amd64 kernel now requires a ld that supports ifunc to produce a
        working kernel, either lld or a newer binutils. lld is built by default
        on amd64, and the 'buildkernel' target uses it automatically. However,
        it is not the default linker, so building the kernel the traditional
        way requires LD=ld.lld on the command line (or LD=/usr/local/bin/ld for
        binutils port/package). lld will soon be default, and this requirement
        will go away.
該当部分を発見
$ make installkernel LD=ld.lld -C /usr/src
今度は問題なく installkernel が進んだ。

FreeBSD のセキュリティ勧告が三つ2018年08月16日 13時35分35秒

FreeBSD-SA-18:09.l1tf L1 Terminal Fault (L1TF) Kernel Information Disclosure は 64bit のシステムで他の仮想システムのメモリを読めてしまう問題。amd64 のbhyve が影響を受ける。今回のパッチは FreeBSD 11 系のみ。FreeBSD 10.4-RELEASE への対応は後日する予定だそうだ。回避策はなく、パッチを当てる必要がある。

FreeBSD-SA-18:10.ip は先日の TCP の脆弱性と似たような問題。こちらも今回のパッチは FreeBSD 11 系のみ。FreeBSD 10.4-RELEASE への対応は後日する予定だそうだ。ただ、こちらは上と違い、sysctl で問題を回避することが出来る。

FreeBSD-SA-18:11.hostapd は wpa、 つまり無線関連の問題。WPA2 TKIP に問題があり、情報が洩れる可能性がある。対象は 11 系と 10 系の全て。TKIP 以外のプロトコルを使って回避する選択肢もある。

今回の修正は、広く使われているヘッダファイルも変更されるので、buildworld も buildkernel も大量のファイルが再コンパイルされる。

FreeBSD tcp のセキュリティ勧告2018年08月08日 12時03分22秒

FreeBSD-SA-18:08.tcp が出ている。TCP のセグメントを再構築するアルゴリズムに不備があり、処理を行わなければいけない量に比例して、処理時間が延びてしまう。そのため、分割されてしまった TCP が増えると、処理時間が掛かるようになる。意図的に分割されたセグメントを送られると、処理能力が劣化する。

対象は、公開されている全てのバージョン。十一系の 11.1-RELEASE と 11.2-RELEASE、十系の 10.4-RELEASE。回避策はあるが、パフォーマンスに影響がでるので、注意が必要らしい。

FreeBSD の FUSE の高速化2018年08月06日 17時27分28秒

数日前に FreeBSD の FUSE の高速化の変更が、current にコミットされた。

変更としては、バッファを大きくしただけだが、実メモリを基にした FUSE ファイルシステムで、 4.5 倍の高速化が出来たそうだ。

ntfs3-g などはディスクの転送量に比べるとファイルシステムスループットが遅い。この変更が、効いているか気になるところだ。

lazyfpu の SA と pmap の Errata2018年06月21日 15時33分42秒

FreeBSD-SA-18:07.lazyfpu のセキュリティ勧告が出されている。現在のところ、対象は 11 系。10 系の修正も後で出すつもりのようだ。Intel 製の CPU は他の CPU が使っていた FPU の値を読むことが出来る不具合。Intel 製以外の物を使っていたら影響は無いが、Intel 製の場合は回避手段は無い。

FreeBSD-EN-18:07.pmap.asc は Xen のみの問題。TLB の使い方に問題があり、メモリページの内容が破損する場合がある。対象の場合には回避策は無いが、非 Intel 製の CPU には影響は無いと思われるとの事。

FreeBSD の SA が二つに ERRTA が二つ2018年04月05日 11時36分27秒

FreeBSD-SA-18:04.vt.asc は vt コンソール。10 系では設定により、11 系ではデフォルトで有効になった。フォントの設定のチェックが甘くて、意図せずにカーネルメモリをコンソールに出力してしまうバグ。10 系では sc コンソールを使っていると影響は無い。

FreeBSD-SA-18:05.ipsec.asc の対象はサポートされている全てのリリース。10 系と 11 系になる。IPSec のヘッダの長さに 0 を指定されていると、カーネルがクラッシュする。

FreeBSD-EN-18:03.tzdata.asc は夏時間の適応データの更新なので、自ずから全てのリリースが対象

FreeBSD-EN-18:04.mem.ascの対象も全てのリリース。こちらは、HighPoint ディスクコントローラの問題。 hpt27xx(4)、hptnr(4)、 hptrr(4) のドライバのメモリの初期化に問題があり、カーネルデータがユーザ領域に洩れてしまうことがある。

FreeBSD の Speculative Execution Vulnerabilities の SA2018年03月15日 13時10分27秒

FreeBSD-SA-18:03.speculative_execution のパッチが公開された。今回の修正は FreeBSD 11.1-RELEASE の amd64 と i386 が対象のようだ。patch を見ると、カーネルに加えて、cpucontrol が修正されている。10 系の修正は後で用意されるとのこと。

ウェブブラウザー等越しで、信頼できないコードがカーネルメモリを読めてしまう。通称 Meltdown と言われている問題の修正だ。

結構前に FreeBSD 11.2-RELEASE のスケジュールが出されてた2018年03月11日 23時22分54秒

FreeBSD 11.2-RELEASE の予定が更新されている。最近は、11.1-STABLE と 12-CURRENT をあれこれ使っているので、そのまま追いかけを続けるつもり。
Action Expected Actual Description
Initial release schedule announcement - 12 February 2018 Release Engineers send announcement email to developers with a rough schedule.
Release schedule reminder 16 March 2018 - Release Engineers send reminder announcement e-mail to developers with updated schedule.
Code slush begins 20 April 2018 - Release Engineers announce that all further commits to the stable/11 branch will not require explicit approval, however new features should be avoided.
Code freeze begins 4 May 2018 - Release Engineers announce that all further commits to the stable/11 branch will require explicit approval. Certain blanket approvals will be granted for narrow areas of development, documentation improvements, etc.
BETA1 builds begin 11 May 2018 - First beta test snapshot.
BETA2 builds begin 18 May 2018 - Second beta test snapshot.
BETA3 builds begin * 25 May 2018 - Third beta test snapshot.
releng/11.2 branch 1 June 2018 - Subversion branch created; future release engineering proceeds on this branch.
RC1 builds begin 1 June 2018 - First release candidate.
stable/11 thaw 3 June 2018 - The code freeze on the stable/11 branch is lifted.
RC2 builds begin 8 June 2018 - Second release candidate.
RC3 builds begin * 15 June 2018 - Third release candidate.
RELEASE builds begin 22 June 2018 - 11.2-RELEASE builds begin.
RELEASE announcement 27 June 2018 - 11.2-RELEASE press release.
Turn over to the secteam - - releng/11.2 branch is handed over to the FreeBSD Security Officer Team in one or two weeks after the announcement.

FreeBSD の tzdata と file の Errata も2018年03月10日 11時52分24秒

FreeBSD の Security Advisory と共に FreeBSD-EN-18:01.tzdataFreeBSD-EN-18:02.file の Errata が出されている。

両方とも対象はサポートされている全てのリリース。11 系と 10 系の複数のバージョンになる。

tzdata は夏時間に関する情報。リリース時より変更、更新されたデータの反映。夏時間とは関係ないタイムゾーンで運用している場合は影響はない。

file はバッファの処理の不具合の修正。file も良く修正の対象の常連になっている…

FreeBSD の ipsec と ntp の SA2018年03月09日 21時34分18秒

最近は減っていた FreeBSD の Security Advisory だが FreeBSD-SA-18:01.ipsec.ascFreeBSD-SA-18:02.ntp の修正が出された。

ipect は現在サポートされている FreeBSD 11 系と 10 系の全てが対象。細工された IP パケットによりカーネルをクラッシュさせられる問題を修正している。

ntp の修正も現在サポートされている FreeBSD 11 系と 10 系の全てが対象。ntpd の時間の同期を狂わせる問題を筆頭に複数の修正が行われている。