先日、レポートを受け取った FreeBSD13.2 NFSの脆弱性、カーネル更新により塞ぐことにしました。
FreeBSD/amd64 に関しては、freebsd-update コマンド一発でカーネルが上がらしくなり、再起動して対策終了なのですが、残念ながら 32bit FreeBSD13.2 はこうはいきません。
現在、Raspberry Pi2 2台で動いている FreeBSD/arm;これらはイントラネット側なので放置してもいいのですが、毎日届くセキュリティーレポートに記述されている脆弱性の指摘に耐えきれなくなり、カーネルコンフィグレーションを手動で行うことにしました。できれば複数脆弱性を一度に対策したかったところですが、仕方ない。
方法は、HDDタイプの Raspberry Pi2 の /usr/src, /usr/obj をNFS でエスポートし、もう一台のRaspberry Pi2 でマウントと、リビルドを行うという手順。
この方法をソースビルドに利用してみると、かなりいい感触。HDD接続の RPI2 はデータベースサーバーで常時稼働中ですが、もう一台のSDメモリタイプ バックアップ RPI2 は、通常ヒマなので、ネットワークファイルシステム上のソースをゴリゴリコンパイルしても、あまりSDメモリを摩耗させない。しかも、HDD側のRPI2負荷は殆ど上昇しない。
git pull と make kernel で約3時間くらい。厳密な時間測定を行っていませんが、NFSクライアント側でカーネルビルドして、再起動。
その後、HDD側ではビルドを行う必要なく、カーネルインストールだけで済むため、ソースビルドの割にとっても効率的。
セキュリティーレポート結果が、
FreeBSD-kernel-13.2_5 is vulnerable: FreeBSD -- NFS client data corruption and kernel memory disclosure CVE: CVE-2023-6660 WWW: https://vuxml.FreeBSD.org/freebsd/8eefff69-997f-11ee-8e38-002590c1f29c.html 1 problem(s) in 1 installed package(s) found.
の状態から、
Checking for security vulnerabilities in base (userland & kernel): Database fetched: 2023-12-24T03:39+09:00 0 problem(s) in 0 installed package(s) found. 0 problem(s) in 0 installed package(s) found.
という既知脆弱性 無印状態になりました。
# uname -a
FreeBSD db2.lifewithunix.jp 13.2-RELEASE-p9 FreeBSD 13.2-RELEASE-p9 GENERIC arm
これで、運用中の全FreeBSD13.2 NFS脆弱性対策完了。