CVE-2026-42511:FreeBSD dhclient 中一個 21 年歷史的根權限遠端程式碼執行漏洞

FreeBSD 長期以來一直被視為現存最安全的作業系統之一,為 Netflix、Sony 以及各種網路硬體廠商等巨頭提供關鍵基礎設施。然而,最近發現的漏洞 CVE-2026-42511 揭露了一個已存在超過二十年的嚴重安全缺口。

此漏洞由 AISLE 發現,允許以根權限執行遠端指令 (RCE)。該缺陷尤其危險,因為它可被同一本地網路上的任何系統「蠕蟲化」,將標準的網路設定流程變成完整系統被入侵的向量。

問題根源:兩十年的遺留問題

此漏洞位於 dhclient,FreeBSD 的 DHCP 客戶端。該缺陷最早於 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 位址,但來自引導協定 (BOOTP) 的兩個特定欄位會原樣寫入:

  • lease->filename
  • lease->server_name

由於這些欄位未進行轉義,攻擊者可以注入雙引號、換行符與分號。例如,惡意 DHCP 伺服器可以傳送一個 file 欄位,內容為:"; 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. 特權執行入口

利用的第二階段發生於 dhclient 呼叫 /sbin/dhclient-script 以套用網路設定時。此腳本以根身分執行,且包含危險的 eval 陳述式:

eval "$IFCONFIG $interface $medium"

當受污染的租約檔案在租約續約或系統重新啟動時被重新解析,注入的 medium 值會傳入此 eval 匯流。系統最終執行的指令變為:

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

這導致指令 id > /tmp/pwned(或任何其他任意指令)以完整的根權限執行。

攻擊面

此漏洞對任何能在相同廣播域上操作或偽造 DHCP 伺服器的攻擊者都極易取得。包括:

  • 有線網路: 同一本地網路段上的惡意裝置。
  • 無線網路: 惡意的 Wi‑Fi 存取點,或同一 Wi‑Fi 網路上能注入 DHCP 流量的攻擊者。

隨著 FreeBSD 越來越重視筆記型電腦支援與 Wi‑Fi 相容性,使用者在咖啡廳、機場等公共場所連接不受信任的網路時,風險亦隨之提升。

社群觀點與批評

此發現引發了關於 FreeBSD 網路堆疊架構選擇的討論。部分觀察者指出,對關鍵網路協定使用臨時的檔案序列化(而非 JSON、TOML 或 SQLite 等結構化格式),以及在資料路徑上放置 shell eval 呼叫,都是根本上危險的設計模式。

"在 … 任何像 DHCP 這樣關鍵的資料路徑上使用 shell 功能似乎是一個糟糕的選擇。認為在那裡使用 shell eval 是合適的,這樣的決定糟糕到足以對整個系統產生負面印象。"

攻擊鏈結概述

  1. Injection: 惡意 DHCP 伺服器傳送精心構造的 BOOTP file 欄位。
  2. Persistence: dhclient 將未轉義的字串寫入租約資料庫。
  3. Reparsing: 系統稍後讀取受污染的租約檔案,將注入的 medium 指令視為受信任的狀態。
  4. Execution: dhclient 將惡意的 medium 值傳遞給 /sbin/dhclient-script
  5. Compromise: 腳本中的 eval 指令以根權限執行攻擊者的載荷。

結論

CVE-2026-42511 明顯提醒我們,即使是以安全著稱的系統,遺留程式碼也可能長期隱藏關鍵漏洞。未轉義的序列化與特權 eval 匯流的結合,提供了一條通往根權限的簡易路徑。FreeBSD 已在 advisory FreeBSD-SA-26:12.dhclient 中發布修補,強烈建議使用者立即更新系統。

Sources