本文へ移動
情シスのミカタ
ニュース約7分で読めます

OpenBSDに37年前からの欠陥 root奪取の恐れ、7.8と7.9はsyspatchで修正

OpenBSDのカーネルで、一般の利用者がroot(管理者)の権限を取れる欠陥2件が分かりました。セキュリティ会社のCalifが10月16日に報告を公開し、修正は9月のerrata(7.9は026と018、7.8は062と054)で出ています。当たる条件とsyspatchでの当て方を整理します。

公開 情シスのミカタ編集部AIにより執筆チェック済み
文字
OpenBSDに37年前からの欠陥 root奪取の恐れ、7.8と7.9はsyspatchで修正

この記事のまとめ

  • セキュリティ会社のCalifが10月16日、OpenBSDのカーネルの欠陥2件を組み合わせ、一般の利用者からrootを取れることを報告しました。
  • 原因の一つは約37年前のBSDから続く共有メモリの数え方です。7.9はerrata 026と018、7.8は062と054で直っています。
  • 外から直接は狙えない、ローカルの権限昇格です。syspatchで当てて再起動し、踏み台など複数の人が入る機器から先に直します。
こんな方に#30代#40代#50代#60代実務

OpenBSD(安全性を重く見て作られているUNIX系のOS)のカーネルで、一般の利用者がroot(管理者)の権限を取れてしまう欠陥が分かりました。セキュリティ会社のCalifが10月16日に、詳しい報告を公開しています。OpenBSDは9月に修正(errata)を出しており、7.8と7.9はsyspatchで直せます。

何が見つかったのか

Califの報告によると、原因の一つは、System Vの共有メモリ(複数のプログラムが同じメモリを使う仕組み)に、いくつのプログラムがつながっているかを数える値です。この値は、約37年前のBSDのもとのソースから、符号付きの16ビット(最大32,767)で定義されていました。

つながったままプロセスの複製(fork)を繰り返すと、この値が上限を越えて負の数になります。そこから、解放したはずのメモリを使い続ける状態(use-after-free)が起こりえます。Califは、これにカーネルの別の「範囲の外への書き込み」を組み合わせ、一般の利用者からrootを取れることを示しました。

This integer overflow could lead to a use-after-free via a race condition; combined with a separate out-of-bounds write in the kernel, it allowed local privilege escalation to root.

出典: Calif「Big Fish: Exploiting a 37-Year-Old Kernel Bug in OpenBSD」

Califは、OpenBSDのカーネルの守り(KARL・SMAP・SMEP)が有効なままでも、情報漏えいの欠陥を別に使わずにrootを取れたとしています。KARLは起動のたびにカーネルの並びを変える仕組み、SMAPとSMEPは、カーネルが利用者のメモリを勝手に読み書き・実行しないようにするCPUの機能です。検証のためのコードも公開されています。

Califは今年に入ってOpenBSDに報告し、修正の案も示していました。報告の公開は、修正が出たあとの10月16日です。

直ったerrataの番号と日付

OpenBSDは、直近の2つの版(今は7.9と7.8)にだけ修正を出します。今回の2件は、どちらの版にも9月に出ています。Califは、値のあふれから起こる解放済みメモリの使用がerrata 026で、範囲の外への書き込みがerrata 018で直ったとしています(番号は7.9のもの)。

版 errata 日付 公式の説明(要約) 区分
7.9(2026年5月19日公開) 018 2026年9月14日 shmatの整数のあふれを防ぐ 信頼性の修正
7.9 026 2026年9月30日 参照の数え方の誤りで、カーネルが解放済みのメモリを使うおそれ セキュリティの修正
7.8(2025年10月22日公開) 054 2026年9月14日 7.9の018と同じ 信頼性の修正
7.8 062 2026年9月30日 7.9の026と同じ。ipcs(1)が動かなくなった件も直す セキュリティの修正
OpenBSDの公式サイトの7.9 Errataのページ。026: SECURITY FIX: September 30, 2026、All architectures、A reference counting bug could lead to use-after-free in the kernel.とあり、その下に027から034まで、iked、wg、semop、isakmpd、X server、libexpat、wsconsの修正が日付つきで並ぶ
OpenBSD 7.9のerrata。026は9月30日の参照の数え方の修正出典: OpenBSD(引用)

026の修正のファイルを見ると、共有メモリにつながった数を数える値が、カーネルの中で64ビットに広げられています。018は、カーネルのメモリ管理(uvm)で、範囲の外を指す値を先に確かめるようにしたものです。どちらもカーネルの修正です。

OpenBSDの公式サイトの7.9 Errataのページ。018: RELIABILITY FIX: September 14, 2026、All architectures、Prevent integer overflow in shmat(4).とあり、その下に019から024まで、libexpat、X server、ldapd、nsd、unbound、libresslの修正が日付とCVEの番号つきで並ぶ
7.9のerrata 018は9月14日に「信頼性の修正」として出た出典: OpenBSD(引用)

System Vの仕組みでは、ほかにも7月16日の005(sem・msg・ipcの多くの問題)と、9月30日の029(semopでの解放済みメモリの使用)が7.9に出ています。syspatchなら、これらもまとめて当たります。

どんな条件で当たるのか

今回の欠陥は、ローカルの権限昇格です。外から通信を送るだけでは狙えません。OpenBSDの上で、一般の利用者としてプログラムを動かせることが前提です。

ただ、一般の利用者の権限は、別の欠陥や盗まれたパスワードで取られることがあります。そこからrootまで広げられると、機器の設定やログを書き換えられるおそれがあります。

OpenBSDは、社内ではpf(OpenBSDのパケットフィルター)を使ったファイアウォールやルーター、VPNの入口、踏み台(管理のために外から入る中継のサーバー)として使われることがあります。とくに踏み台は、複数の担当者や委託先がログインするため、ローカルの権限昇格の影響を受けやすい使い方です。

CVEの番号は、errataにもCalifの報告にも書かれていません。米国CISAの「悪用が確認された脆弱性の一覧(KEV)」(10月16日版)にも載っていません。OpenBSDの製品でKEVに載っているのは、2020年のOpenSMTPDの欠陥(CVE-2020-7247)だけです。

syspatchでの当て方

amd64・arm64・i386では、syspatch(公式のバイナリの修正を当てる道具)で直せます。syspatchは足りない修正をまとめて当てる道具で、一部だけを選んで当てることはできません。

  1. syspatch -cで、まだ当てていない修正の一覧を出します。公式のマニュアルは、cronでの定期の確認にも向くとしています。
  2. rootでsyspatchを実行し、すべての修正を当てます。
  3. カーネルの修正なので、再起動して新しいカーネルで動かします。
  4. syspatch -lで、7.9なら018と026、7.8なら054と062が入ったかを確かめます。

ほかのアーキテクチャーでは、errataのページにあるソースの修正を当て、カーネルを作り直します。サポートの終わった7.7以前には修正が出ないため、7.9へ上げます。次の8.0が出ると、7.8も修正の対象から外れます(公式のFAQでは、修正は直近の2つの版だけ)。

影響する会社・しない会社

  • 影響する: OpenBSD 7.9で、errata 018か026をまだ当てていない、または当てたあと再起動していない会社です。
  • 影響する: OpenBSD 7.8で、errata 054か062をまだ当てていない会社です。
  • 影響する: OpenBSD 7.7以前を使っている会社です。修正が出ないため、7.9へ上げる必要があります。
  • 影響する: 委託先や機器の業者が、OpenBSDのファイアウォール・ルーター・踏み台を運用している会社です。業者に確かめます。
  • 影響しない: 2つのerrataを当てて再起動したOpenBSDだけを使っている会社です。
  • 影響しない: OpenBSDを使っていない会社です。今回のerrataはOpenBSDのものです。FreeBSDやそれをもとにした製品は、それぞれの告知を確かめます(FreeBSDに複数の脆弱性 修正版公開 TCP・サウンド・bhyve)。

情シスが今日やること

  1. OpenBSDの機器を洗い出す。 ファイアウォール、ルーター、VPN、踏み台、DNSやメールの中継を、機器の台帳と委託先への問い合わせで拾います。
  2. 版と修正を確かめる。 uname -rで版を、syspatch -lで当てた修正を見ます。7.7以前なら、7.9へ上げる日程を決めます。
  3. syspatchを当てて再起動する。 ファイアウォールやルーターは止められる時間を決め、予備の機器があれば先に当てて動きを見ます。
  4. ログインできる人を見直す。 踏み台のアカウントに、退職者や契約の終わった委託先が残っていないかを確かめます。
  5. 次の修正に気づけるようにする。 syspatch -cをcronで回すか、OpenBSDのannounceのメーリングリストを読んで、新しいerrataを見落とさないようにします。

Linuxでも、一般の利用者からrootを取られる欠陥が続いています(Linuxの権限昇格「DirtyClone」、改ざんが見えにくい 5月以降のカーネル更新と再起動を確かめる)。カーネルの更新と再起動の手順を、OSごとに決めておくと迷いません。

よくある質問

Q外から通信を送られるだけで、乗っ取られますか。

A今回の2件は、ローカルの権限昇格(一般の利用者からrootになること)です。OpenBSDの上で、一般の利用者としてプログラムを動かせることが前提です。ただ、一般の利用者の権限は、別の欠陥や盗まれたパスワードで取られることがあります。外に面したファイアウォールや踏み台ほど、早めに当ててください。

Q自社のOpenBSDが直っているかは、どう確かめますか。

A「uname -r」で版を見て、「syspatch -l」で当てた修正の一覧を出します。7.9なら018と026、7.8なら054と062が入っていて、そのあと再起動していれば直っています。「syspatch -c」で、まだ当てていない修正があるかも分かります。

Q悪用されていますか。

ACVEの番号は付いておらず、米国CISAの「悪用が確認された脆弱性の一覧(KEV)」にも載っていません(2026年10月16日版で確認)。悪用の報告は、OpenBSDのerrataにもCalifの報告にも書かれていません。ただ、Califは検証のためのコードも公開しています。

出典・参考

チェック済み。この記事は監修者によってチェックされました。(2026年10月19日)

執筆

情シスのミカタ編集部AIにより執筆

書いた AI: AI記者(解説)

法令・官公庁の発表・企業の公式発表などの一次情報を調べて、情シス向けの解説・比較・テンプレの記事を書きます。数字と日付は出典と照らして確かめ、記事の最後に出典を載せています。使っているAI: Anthropic Claude。

監修

佐々木 航株式会社Game

代表取締役。工学部出身で、21歳で起業してからシステム会社の経営一筋で8期目。アプリの受託開発から始め、いまはAIを使ったシステムソリューションを手がけています。150社以上の企業とのプロジェクトで培った開発と情報システムの現場の経験と声を形にし、激動の時代を乗り越えたいと考えています。

メモ: 掲載時に自動で(しばらくの間)

記事は AI が一次情報を調べて書き、機械の検査を通してから公開しています。人が見ているもの・見ていないものはAI の使い方に書いています。まちがいに気づいたら訂正・ご指摘からお知らせください。直したら、記事の最後に何を直したかを書きます。

役に立ったら、いいねと共有をお願いします