FreeBSD execve() ローカル権限昇格脆弱性 CVE-2026-7270——Calif.ioがAI支援で発見した2013年からの演算子優先順位バグ

この記事は約12分で読めます。

2026年4月29日、FreeBSD Projectは、execve(2)システムコールにおけるローカル権限昇格脆弱性CVE-2026-7270のセキュリティアドバイザリ(FreeBSD-SA-26:13.exec)を公開しました。本脆弱性は、カーネル内の演算子優先順位バグにより、攻撃者が制御するデータが隣接するexecve(2)引数バッファを上書きし得るものです。非特権ユーザーによるroot権限取得につながる可能性があり、FreeBSD-SA-26:13.execの公開時点では、FreeBSDのサポート対象リリース全体に影響するとされています。

アドバイザリでは、13.5-RELEASE-p13、14.3-RELEASE-p12、14.4-RELEASE-p3、15.0-RELEASE-p7で修正済みとされ、回避策(Workaround)は提供されていません。対応は、サポート対象のstableまたはrelengブランチへの更新と、更新後のリブートが基本となります。なお、FreeBSD 13.5は2026年4月30日にEOLを迎えているため、本稿公開時点では14.3、14.4、15.0系への移行もあわせて検討すべきです。

本脆弱性で特筆すべき点は2つあります。1つ目は、2013年から存在していたとされる演算子優先順位の誤りが、約13年間にわたり全FreeBSDサポートバージョンに潜在し続けていた点です。2つ目は、本脆弱性がCalif.io社の発見者「Ryan Austin」によって、AI支援によるバグ発見・PoC作成プロセスを通じて見つけ出された点です。同時期にはLinuxカーネル側でもCopy Fail(CVE-2026-31431)がTheoriのXint Codeによって発見されたと報告されており、AIを用いた既存コードの再点検が、長年潜在していたロジックバグの発見につながる事例が相次いでいます。ただし、CVE-2026-7270とCVE-2026-31431は技術的には独立した別事象です。

脆弱性の概要

本脆弱性は、execve(2)システムコールがshebangスクリプト(先頭が#!で始まるスクリプト)を処理する際の引数バッファ操作に存在します。FreeBSD公式アドバイザリは、本脆弱性について、カーネル内の演算子優先順位バグによりバッファオーバーフローが発生し、攻撃者が制御するデータが隣接するexecve(2)引数バッファを上書きし得る、と説明しています。CWE-783(Operator Precedence Logic Error)として分類されています。

execve(2)はUNIX系OSの基本的なシステムコールで、現在のプロセスイメージを指定された実行イメージに置き換えます。shebang行を持つスクリプトを実行する場合、カーネルは指定されたインタプリタ(例:/bin/sh)を読み込み、元の引数を再構成して渡します。この再構成処理の中で、引数バッファの長さ計算に1文字の誤りがあったことが、本脆弱性の根本原因です。

Calif.ioブログによれば、問題のコードはmemmove()呼び出しの第3引数(コピーサイズ)を計算する箇所で、本来「endp - begin_argv - consume」と書くべきところが「endp - begin_argv + consume」と記述されていたとされます。-+の1文字違いにより、コピーサイズが本来の値より2 × consume分大きくなり、隣接バッファへのオーバーフローが発生する構造です。このコードは2013年に導入されて以降、約13年間誰の目にも留まらずに残っていました。

影響範囲とパッチ提供状況

FreeBSD-SA-26:13.execの公開時点で影響対象とされたのは、FreeBSDのサポート対象リリース全体です。アドバイザリでは、以下の各セキュリティパッチレベルで修正済みとされています。

  • FreeBSD 13.5-RELEASE:p13で修正
  • FreeBSD 14.3-RELEASE:p12で修正
  • FreeBSD 14.4-RELEASE:p3で修正
  • FreeBSD 15.0-RELEASE:p7で修正
  • FreeBSD 13.5-STABLE、14.4-STABLE、15.0-STABLE:2026年4月29日 14:47:46 UTC以降のチェックアウトで修正済み

留意点として、FreeBSD 13.5は2026年4月30日にEOL(End of Life)を迎えています。アドバイザリ公開時点では13.5にもパッチが提供されましたが、本稿公開時点では13.5自体がサポート期間外となるため、13.5系を運用している組織は14.3、14.4、15.0系への移行もあわせて検討すべきです。

FreeBSD 14.0は2024年10月でサポート期間が終了しており、本脆弱性に対するパッチは提供されません。FreeBSD 14.0を継続利用している環境は、サポート対象バージョンへのアップグレードが必要です。Quest社のKACE SMA/SDAアプライアンス向けセキュリティアドバイザリは、FreeBSD 14.0ベース製品については「No patch will be issued」とし、SMA 15.0へのアップグレードを必須としています。組み込み機器・アプライアンス製品でFreeBSDが使われているケースでは、製品ベンダー側のリリースサイクル次第では、本脆弱性に対するパッチ提供時期が大きくずれ込む可能性があります。

影響と前提条件

本脆弱性はローカル権限昇格脆弱性であり、攻撃の前提として「FreeBSDマシンで一般ユーザー権限のコードを実行できること」が必要です。そのため、単独でインターネット越しに悪用されるリモートコード実行脆弱性ではありません。一方で、いったん一般ユーザー権限を取得された後にroot権限へ昇格され得るため、マルチユーザー環境、共有開発環境、CI/CD実行基盤、管理用アプライアンスでは高い優先度で対応すべき脆弱性です。実際、CISA-ADPによるCVSS 3.1スコアは7.8(High)、Quest KACEのアドバイザリでは「Severity: Critical」と評価されています。

Quest社のKACE製品向けアドバイザリが指摘しているように、本脆弱性は単独で問題になるよりも「攻撃チェーンの一部」として機能するケースが想定されます。例えば、別の脆弱性で一般ユーザー権限としてのコード実行を奪われた場合、本脆弱性を組み合わせることでrootへ昇格し、さらなる侵害に発展させることが可能です。

とりわけ留意すべきは以下のような環境です。マルチユーザー環境でshell loginを許可しているサーバー、CI/CDランナーで他者のジョブが実行される環境、共有開発サーバー、SSHアクセスを限定的に開放しているjumphost、ホスティング業者の共有FreeBSDサーバー、KACE等の管理用アプライアンス(直接ログインは不可だが内部に脆弱性連鎖の可能性あり)、といった「不特定コードが一般ユーザー権限で実行される環境」では、本脆弱性は実害につながりやすい性質を持ちます。

AI支援による発見プロセス

Calif.io社のブログ「CVE-2026-7270: How I Get Root on FreeBSD with a Shell Script」は、本脆弱性が同社のAI支援によるバグ発見プロセスから出てきたものであることを公にしています。同社の発見過程では、execve(2)のshebang処理コードに対する精査の中で、AIがmemmove()のコピーサイズ計算における符号の誤りを特定したとされます。同社の公開資料には、人間とAIの対話の中で複数の悪用ルートを検討した記録が残されており、発見からPoC作成まで人間とAIの協調プロセスとして実施されたことが確認できます。FreeBSD公式アドバイザリの発見者クレジットも「Ryan of Calif.io」(人間)として記録されています。

注目に値するのは、Calif.ioの公開リポジトリ(publications/MADBugs/freebsd-CVE-2026-7270)に、技術解説、悪用コード、PoC、そして「人間からAIへのプロンプト指示」までもが整理されて公開されている点です。これは、AI支援による脆弱性発見プロセスの再現性を担保し、研究コミュニティ全体で同種の手法を発展させていくための情報共有として機能しています。

同時期にLinuxカーネル側で公開されたCopy Fail(CVE-2026-31431)も、Theori社のAIスキャンツール「Xint Code」によって発見されたものでした。両事例は技術的には完全に独立していますが、「長年潜在していたカーネル論理バグが、AIによるコード再点検で次々と表面化している」という構造的トレンドを浮き彫りにしています。今後、防御側のパッチ適用サイクル設計や、攻撃者側のスキャン手法の進化を見据えた運用戦略の見直しが求められる段階に来ています。

悪用シナリオの構造

Calif.ioの技術記事では、本脆弱性をローカル権限昇格に結び付けるため、execve(2)の引数バッファ破壊を、root権限で動作する別プロセスのexec処理タイミングと組み合わせる手法が説明されています。詳細なPoCや実装コードは同社の公開リポジトリに含まれていますが、本稿では実装手順ではなく、防御側が把握すべきリスク構造に絞って整理します。

重要なのは、本脆弱性が単なるクラッシュではなく、条件がそろうとroot権限のプロセス実行環境に影響を与え得る点です。したがって、一般ユーザー権限で任意コードを実行できる環境では、別の侵入経路と組み合わされた場合に、root権限奪取まで進む攻撃チェーンの一部になり得ます。Calif.ioブログとGitHubリポジトリは既にHacker News等で広く拡散しており、攻撃者側でもPoCの再利用は容易な状態です。Workaroundが提供されない以上、対応の遅れは直接的なリスクにつながります。

パッチ適用と暫定対策

FreeBSD公式アドバイザリの方針はシンプルです。Workaroundは提供されないため、対応はパッチ適用とリブートに一本化されます。具体的な手順は以下の通りです。

FreeBSD 15.0-RELEASE環境(amd64またはarm64で、base system packagesでインストールされたもの)では、pkg(8)ユーティリティで以下のように更新できます。

pkg upgrade -r FreeBSD-base
shutdown -r +10min "Rebooting for a security update"

RELEASE版でbase system packagesを使用していない環境(FreeBSD 13のi386プラットフォーム含む)では、freebsd-update(8)ユーティリティで更新します。

freebsd-update fetch
freebsd-update install
shutdown -r +10min "Rebooting for a security update"

ソースコードパッチからのビルドを行う場合は、FreeBSD公式アドバイザリで提供されているpatchファイルとPGP署名検証を経て適用します。詳細手順はFreeBSD-SA-26:13.exec.ascの「Solution」セクションを参照してください。

パッチ適用後はリブートが必要です。本件はカーネルのexecve(2)処理に関する修正であるため、更新後のカーネルを起動するまで修正は有効になりません。

暫定対策として明示されているものはありませんが、防御側で取り得る運用上の補強策としては、(1)一般ユーザーのshell loginを最小化する、(2)CI/CDランナーで他者のジョブを動かしている環境でビルドノードのアップグレードを優先する、(3)監査ログでshebang execの異常頻度や、root権限プロセスのexec処理周辺で発生する不審な並行アクセスを監視する、(4)KACE等の組み込みアプライアンスについてはベンダーのパッチ提供を待ち、待機期間中はネットワーク制限を強化する、といった選択肢があります。

実務観点での要点

CVE-2026-7270の論点を実務視点で整理すると、3点に集約されます。

1つ目は、AI支援による脆弱性発見が散発的な単一事例ではなく、構造的トレンドになっている事実の認識です。記事#41 Linux Copy Fail(Theori AI支援発見)に続き、本記事のFreeBSD CVE-2026-7270(Calif.io AI支援発見)が同時期に公開されました。AIスキャンによる古いコードベースの再点検が「長年残った論理バグ」を次々と顕在化させていく流れは、今後加速する可能性が高いと考えられます。防御側は「自分たちが運用しているOSやライブラリも、まだ発見されていない長年潜在のバグを抱えている可能性がある」という前提でパッチサイクルを設計する必要があります。

2つ目は、サポート切れバージョンの継続利用リスクです。FreeBSD 14.0は2024年10月でEOLとなりパッチが提供されません。同様にKACE SMA 14.0/14.1のように、ベンダーがFreeBSD 14.0ベースの製品にパッチを提供しないケースが発生しています。組織内でFreeBSDベースのアプライアンスや組み込み製品を運用している場合、製品ベンダー側のリリースサイクルとFreeBSDコミュニティのサポート期間が一致しないことがあり、想定よりも長期間「修正が来ない脆弱性を抱えたまま運用する」状況に置かれる可能性があります。アセット管理時には、ベース層のOSバージョンとサポート状態を含めた棚卸しが推奨されます。

3つ目は、Workaroundが提供されない脆弱性への対応設計です。本脆弱性のように回避策が存在しない事例では、パッチ適用以外の選択肢がありません。リブートを伴うパッチ適用が必要なため、24/7運用のシステムでは計画停止のスケジューリングが論点になります。事前にメンテナンスウィンドウを確保しやすい運用設計(冗長化、ローリングアップデート、Hot standbyなど)を整えておくことが、本件のような事象の対応速度を左右します。

ソース

一次情報・公式情報

  • FreeBSD Security Advisory FreeBSD-SA-26:13.exec:https://www.freebsd.org/security/advisories/FreeBSD-SA-26:13.exec.asc
  • NVD CVE-2026-7270:https://nvd.nist.gov/vuln/detail/CVE-2026-7270
  • Calif.io Blog:「CVE-2026-7270: How I Get Root on FreeBSD with a Shell Script」:https://blog.calif.io/p/cve-2026-7270-how-i-get-root-on-freebsd
  • Calif.io GitHub Publications:https://github.com/califio/publications/tree/main/MADBugs/freebsd-CVE-2026-7270

製品ベンダー情報

  • Quest Support Knowledge Base:「Security Advisory: CVE-2026-7270 – FreeBSD Vulnerability Impact on KACE SMA and SDA (4383090)」

参考情報

  • Hacker News:「Local privilege escalation via execve()」
  • bsdsec.net:「FreeBSD Security Advisory FreeBSD-SA-26:13.exec」
  • THREATINT:「CVE-2026-7270」

※本稿のパッチ提供状況およびベンダー対応は公開時点で確認できた情報に基づきます。本脆弱性に関する各ベンダーアドバイザリは更新される可能性があるため、最新情報は各公式ページでご確認ください。

slug: freebsd-cve-2026-7270-execve-lpe-ai-discovery

コメント

タイトルとURLをコピーしました