テクノロジー · ニュース解説
OpenBSD「Big Fish」はローカルrootを実証 修正はすでに提供済み
Califは10月16日、OpenBSD 7.9で動作するローカル権限昇格チェーンを公開した。数十年前の共有メモリーカウンターのオーバーフローと別のカーネル欠陥を組み合わせるが、関連修正は9月に提供済みだ。

セキュリティ企業Califは10月16日、OpenBSD 7.9で低権限のローカル利用者からrootへ昇格する完全なPoCを公開した。符号付き16ビットの共有メモリー接続カウンターを回り込ませ、競合で起きるuse-after-freeと別の範囲外書き込みを組み合わせる。
深刻な実証だが境界が重要だ。攻撃者はまずローカル利用者としてコードを実行できなければならない。未認証の遠隔侵入は示していない。OpenBSDはPoC公開前の9月14日にerrata 018、9月30日にerrata 026を出していた。
公開exploitが示したこと
Califによると、127個のSystem V共有メモリー区画を割り当て、259プロセスをforkして接続カウンターを16ビット上限の先へ進める。競合で壊れた参照数がuse-after-freeにつながる。
さらにヒープ配置と別の範囲外書き込みでページテーブル状態を変え、予測可能なカーネル関数ポインターを上書きする。KARL、SMAP、SMEPが有効で情報漏えいなしにroot shellへ到達した。
示していないこと
これはローカル権限昇格だ。公開経路は、標的上で低権限ユーザーとしてすでにコードを実行できることを前提とする。ネットワーク越しの未認証侵入経路ではない。
独立報道の公開時点でCVEはなく、実際の攻撃で使われた証拠もなかった。これは時点情報であり、公開コード後も悪用されない保証ではない。
PoCより先に修正済み
OpenBSD 7.9のerrata 018は9月14日付でshmat(4)整数オーバーフローを防ぐ。errata 026は9月30日付でuse-after-freeにつながるカーネル参照数バグを修正する。公式項目はいずれも全アーキテクチャ向けソース修正だ。
errataページではamd64、i386、arm64にsyspatch経由のバイナリー更新がある。他のアーキテクチャはソースの-stable対応が必要な場合がある。OpenBSD 7.8にもerrata 054で共有メモリー修正が提供された。
管理者の確認方法
対応する公式リリースでsyspatchをオプションなしで実行すると、欠けているバイナリーパッチを取得、検証、導入する。パッチは累積で一部だけ選べない。-cは利用可能分、-lは導入済み一覧を示す。
OSの版表示だけで保護済みと判断しない。導入済みパッチと出力を確認し、表示される再起動指示に従う。未対応版や必要なバイナリー更新がない構成では、署名付きソース修正と公式-stable手順を使う。
修正後も研究が重要な理由
37年前のカウンター型は入口にすぎない。完全なexploitは予測可能なカーネル割り当てと別のメモリー破壊手段にも依存する。Califはsafe unlinking、ページテーブルとアロケーターのランダム化、境界検査を提案する。
実務上の結論は限定的だ。動作するチェーンが公開された今はパッチ確認が急務だが、遠隔OpenBSD乗っ取りや活発な攻撃として表現してはならない。
