OpenBSD、再起動ごとに作り替えたカーネルが起動する機能
Bleeping Computerに掲載された記事「OpenBSD Will Get Unique Kernels on Each Reboot. Do You Hear That Linux, Windows?」が、次のリリースバージョンとなるOpenBSD 6.2にシステムを起動するごとにユニークなカーネルが使われるという新しいセキュリティ機能が搭載されるようだと伝えました。セキュリティを強化する機能として注目されます。
通常カーネルは配布されているバイナリファイルをそのまま使っている限り、どこでも同じカーネルが動作します。
OpenBSDではカーネルをビルドするときにカーネルファイルをリンクする順番をランダム化することで、機能は同じものの生成されるカーネルのバイナリファイルはビルドするごとに異なるものになるという仕組みを実装。この機能はKARL(Kernel Address Randomized Link)と呼ばれています。カーネルバイナリの構造がシステムが再起動されるごとに異なっていますので、なんらかのセキュリティ脆弱性を利用しようとしてもなかなかうまくいかない、ということになります。
アプローチは異なっていますがWindowsカーネルにはKASLR(Kernel Address Space Layout Randomization)と呼ばれる、カーネルのアドレス空間のレイアウトをランダムにする機能が用意されています。こちらはWindowsカーネルのバイナリは常に同じですが、そのメモリレイアウトは毎回異なるという仕組みです。カーネルバイナリそのものを毎回変えるというアプローチとは異なりますが、狙っているセキュリティ効果は似ています。Linuxカーネルも先日KASLR(Kernel Address Space Layout Randomization)と似たような機能が追加されました。
OpenBSDのこのアプローチがLinuxやほかの*BSDに普及していくかどうかはわかりませんが、なかなか興味深いアプローチではないかと思います。新しいカーネルはシステムが起動してから作成されるそうです。再起動したときに事前に作っておいたこの新しいカーネルの方が起動してくる仕組みになっています。今後このアプローチがほかのオペレーティングシステムでも採用されるかどうか見ておきたいところです。
勉強会
第65回 8月24日(木)19:00~FreeBSD勉強会
内容は検討中(会場:ヴァル研究所 セミナールーム)です。登録はこちらから。
FreeBSD勉強会 発表者募集
FreeBSD勉強会では発表者を募集しています。FreeBSDに関して発表を行いたい場合、@daichigotoまでメッセージをお願いします。1~2時間ほどの発表資料を作成していただき発表をお願いできればと思います。