Watch at Ease看見世界,讀懂生活。

科技 · 新聞解讀

OpenBSD「Big Fish」可本機提權至 root,但修補早已提供

Calif 於 10 月 16 日公開可運作的 OpenBSD 7.9 本機提權鏈。它串聯數十年前的共享記憶體計數器溢位與其他核心缺陷;OpenBSD 已在 9 月釋出相關修補。

呈現本機使用者、共享記憶體計數器溢位、記憶體破壞與 root shell 的原創圖。
原創插畫:公開鏈條是本機提權,不是無前置條件的遠端入口。 Watch at Ease

安全公司 Calif 於 10 月 16 日發布完整 PoC,示範如何在 OpenBSD 7.9 從本機低權限使用者提權至 root。鏈條先讓有號 16 位元共享記憶體附加計數器溢位,再把競態觸發的釋放後使用與另一個越界寫入串聯。

風險確實存在,但界線同樣重要:攻擊者必須先能以本機使用者身分執行程式。公開材料沒有示範未驗證的遠端入侵。OpenBSD 早在 PoC 公開前,於 9 月 14 日發布勘誤 018、9 月 30 日發布勘誤 026。

公開利用證明了什麼

Calif 表示,利用會映射 127 個 System V 共享記憶體區段並分支 259 個程序,使附加計數器越過有號 16 位元上限;競態接著把錯誤計數轉成釋放後使用。

鏈條再透過堆積配置與另一個越界寫入修改頁表狀態,並覆寫可預測的核心函式指標。研究者在 KARL、SMAP 與 SMEP 開啟且沒有資訊洩漏漏洞下取得 root shell。

它沒有證明什麼

這是本機提權。公開路徑假設攻擊者已能在目標機器以低權限使用者執行程式;它本身不提供網路面向或未驗證入口。

獨立報導發布時,沒有 CVE,也沒有實際攻擊證據。這只是當時狀態,不能保證公開程式碼出現後不會被利用。

修補早於 PoC

OpenBSD 7.9 勘誤 018 日期為 9 月 14 日,用來防止 shmat(4) 整數溢位;勘誤 026 日期為 9 月 30 日,修正可能導致釋放後使用的核心引用計數錯誤。官方條目均涵蓋所有架構的原始碼修補。

勘誤頁指出 amd64、i386 與 arm64 可透過 syspatch 取得二進位更新;其他架構可能需要原始碼與 -stable 分支。OpenBSD 7.8 也在勘誤 054 取得共享記憶體溢位修補。

管理員如何核驗

在受支援的官方 OpenBSD 版本上,不帶選項執行 syspatch 會擷取、驗證並安裝所有缺少的二進位修補;修補是累積式,不能只選部分。-c 列出可用修補,-l 列出已安裝修補。

不要只靠作業系統版本字串判定安全。應核對已安裝修補、閱讀命令輸出,並遵循修補提供的重新啟動提示。若版本不受支援,或架構沒有必要的二進位更新,應使用專案簽署的原始碼修補與 -stable 指引。

為何修補後研究仍重要

37 年前的計數器型別只是起點。完整利用還依賴可預測的核心配置與另一個記憶體破壞原語。Calif 建議安全鏈結解除、頁表映射隨機化、配置器隨機化與編譯器邊界檢查。

對讀者而言,結論應保持狹窄:可運作利用公開後,修補核查很急迫;但不能描述成遠端接管 OpenBSD,也不能聲稱已有活躍攻擊。

呈現 9 月兩項修補早於 10 月 16 日 PoC 的原創時間軸。
原創插畫:管理員應以 syspatch 核對缺少的修補,並遵循輸出的重新啟動提示。 Watch at Ease