CVE-2026-42511: FreeBSD の dhclient における 21 年間のルート RCE

FreeBSD は長らく、Netflix、Sony、さまざまなネットワークハードウェアベンダーなどの大手企業の重要インフラを支える、最も安全なオペレーティングシステムの一つとしての評判を保ってきました。しかし、最近発見された脆弱性 CVE-2026-42511 は、20 年以上にわたって存在していた重大なセキュリティギャップを明らかにしました。

この脆弱性は AISLE によって発見され、ルート権限でのリモートコマンド実行 (RCE) を可能にします。この欠陥は、同一ローカルネットワーク上の任意のシステムから「ワーム化」できるため、標準的なネットワーク設定プロセスを完全なシステム侵害のベクタに変えてしまう点で特に危険です。

問題の根源:20 年にわたるレガシー

この脆弱性は FreeBSD の DHCP クライアントである dhclient に存在します。この欠陥は 2005 年、FreeBSD-6.0 のリリース時に dhclient の実装が OpenBSD から取り込まれた際に導入されました。OpenBSD は 2012 年に問題のある dhclient-script を廃止し、事実上脅威を無効化しましたが、コードは FreeBSD に残り、今まで眠って検出されていませんでした。

本質的に、CVE-2026-42511 は攻撃者が制御するプロトコルデータの不適切なサニタイズに起因するロジック上の欠陥です。このデータは信頼された設定ファイルに永続化され、その後特権実行パスで再解釈されます。

技術的解析:パケットからルートへ

1. 汚染されたリースファイル

dhclient が DHCP 応答を受信すると、リース情報をローカルファイル(通常は /var/db/dhclient.leases.<if>)に書き込みます。この処理を担当する write_client_lease()fprintf を使用してデータをシリアライズします。ほとんどのフィールドはサニタイズされるか有効な IP アドレスに制限されていますが、Bootstrap Protocol(BOOTP)からの 2 つの特定フィールドがそのまま書き込まれます:

  • lease->filename
  • lease->server_name

これらのフィールドはエスケープされていないため、攻撃者は二重引用符、改行、セミコロンを注入できます。例えば、悪意のある DHCP サーバは file フィールドに次のような内容を送信できます: ";\n medium ";id>/tmp/pwned

dhclient がこれを書き込むと、filename 文字列から抜け出し、新しい medium ディレクティブを注入します。結果として生成されるリースファイルは構文的には有効ですが、悪意のあるペイロードが含まれています:

lease {
  interface "em1";
  fixed-address 192.168.100.50;
  next-server 192.168.100.2;
  filename "";
  medium ";id>/tmp/pwned";
}

2. 特権実行シンク

エクスプロイトの第2段階は、dhclient がネットワーク設定を適用するために /sbin/dhclient-script を呼び出すときに発生します。このスクリプトは root 権限で実行され、危険な eval 文を含んでいます:

eval "$IFCONFIG $interface $medium"

リース更新やシステム再起動時に汚染されたリースファイルが再解析されると、注入された medium の値がこの eval シンクに渡されます。システムが実行する最終コマンドは次のようになります:

eval "/sbin/ifconfig -n em1 ;id>/tmp/pwned"

これにより、id > /tmp/pwned(または任意の他のコマンド)がフルルート権限で実行されます。

攻撃対象領域

この脆弱性は、同一ブロードキャストドメイン上で DHCP サーバを操作または偽装できる攻撃者にとって非常に利用しやすいです。対象は以下を含みます:

  • 有線ネットワーク: 同一ローカルネットワークセグメント上の不正デバイス。
  • 無線ネットワーク: 悪意のある Wi-Fi アクセスポイント、または DHCP トラフィックを注入できる同一 Wi-Fi ネットワーク上の攻撃者。

FreeBSD がラップトップサポートや Wi-Fi 互換性に注力するにつれ、カフェや空港などの公共スペースで信頼できないネットワークに接続するユーザーのリスクが高まります。

コミュニティの視点と批判

この発見は FreeBSD のネットワークスタックにおけるアーキテクチャ選択について議論を呼び起こしました。ある観測者は、重要なネットワークプロトコルに対して JSON、TOML、SQLite などの構造化フォーマットではなく、アドホックなファイルシリアライズを使用し、データパス上にシェルの eval 呼び出しを配置することは根本的にリスクの高い設計パターンであると指摘しています。

「データパス上にシェル機能を持たせる…特に DHCP のように重要なものに対しては、選択が悪すぎます。そこにシェル eval を使用することを適切と考えるのは、システム全体に対して非常に悪い印象を与えるほどの不適切な選択です。」

エクスプロイトチェーンの概要

  1. 注入: 悪意のある DHCP サーバが細工された BOOTP の file フィールドを送信する。
  2. 永続化: dhclient がエスケープされていない文字列をリースデータベースに書き込む。
  3. 再解析: 後でシステムが汚染されたリースファイルを読み込み、注入された medium ディレクティブを信頼された状態として扱う。
  4. 実行: dhclient が悪意のある medium の値を /sbin/dhclient-script に渡す。
  5. 侵害: スクリプト内の eval コマンドが攻撃者のペイロードをルート権限で実行する。

結論

CVE-2026-42511 は、レガシーコードが数十年にわたり重大な脆弱性を抱え続け得ることを、セキュリティで高く評価されているシステムでさえも示す厳しい警鐘です。エスケープされていないシリアライズと特権 eval シンクの組み合わせにより、ルートアクセスへの道が極めて簡単になっていました。FreeBSD はその後、アドバイザリ FreeBSD-SA-26:12.dhclient で修正をリリースしており、ユーザーは直ちにシステムを更新することが強く推奨されます。

Sources