🚨 CVE-2026-31431(Copy Fail)— Ubuntu 實測與修補驗證

🧠 前言

最近曝光的 Linux kernel 漏洞 CVE-2026-31431(Copy Fail),是一個相當危險的本地提權漏洞。

它的特點非常值得注意:

  • 不需要 race condition
  • 不需要 info leak
  • exploit 可以非常短(甚至 Python)
  • 影響範圍橫跨多個 Linux 發行版

根據公開分析,該漏洞源自 kernel crypto API(AF_ALG)與 AEAD 實作的邏輯問題,可導致 page cache 被不當修改

本篇文章將透過實測說明:

  • 如何用 harmless PoC 驗證漏洞
  • Ubuntu 24.04 上的實際行為
  • 如何確認 mitigation 是否有效

🔥 測試環境

  • OS: Ubuntu 24.04.2 LTS
  • Kernel: 6.8.0-1044-raspi
  • Architecture: aarch64

🧪 Harmless PoC

使用腳本:

CVE-2026-31431-copy_fail_exp_harmless.py
(You can download it from my gist.)

(改寫自原始 PoC,僅操作 /tmp 測試檔案,避免任何提權)

👉 該腳本核心邏輯(節錄):

  • 使用 AF_ALG socket
  • 搭配 splice() 操作
  • 對 page cache 注入資料

(完整實作可參考你的版本 )


🚨 未修補(漏洞存在)

執行:

python3 CVE-2026-31431-copy_fail_exp_harmless.py

輸出結果

before:
  mode: 0444
  size: 352 bytes

after:
  mode: 0444
  size: 352 bytes

result: file content changed

🔍 分析

這個結果非常關鍵:

  • 檔案是 唯讀(0444)
  • 沒有任何正常 write 操作
  • 內容卻被修改

👉 代表:

AF_ALG + algif_aead + splice() → page cache overwrite

也就是:

kernel 允許透過 page cache 修改檔案內容,繞過正常權限控制


⚠️ 關於 lsmod 檢查的重要誤區

很多人會用:

lsmod | grep algif_aead

然後得到:

(空)

就認為系統安全 ❌


為什麼這是錯的?

因為:

  • algif_aead動態載入 module
  • 只有在使用時才會出現
  • exploit 本身就可以觸發 module 載入

👉 換句話說:

module 未載入 ≠ 功能不可用

🔥 實際風險

即使:

lsmod | grep algif_aead

沒有結果

👉 仍然可能:

  • AF_ALG 可用
  • module 可自動載入
  • exploit 可成功執行

🛡️ 修補方式

禁用 vulnerable module:

sudo -i

echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif.conf
rmmod algif_aead

✅ 修補後驗證

再次執行:

python3 CVE-2026-31431-copy_fail_exp_harmless.py

輸出:

error: The kernel crypto API does not expose the requested AEAD algorithm

🔍 分析

這代表:

  • AF_ALG framework 還存在
  • 但 AEAD backend 已不可用

👉 即:

AF_ALG + ❌ algif_aead → exploit 失效

🧪 驗證 checklist

1️⃣ module 狀態

lsmod | grep algif_aead

👉 應為空


2️⃣ 禁止載入測試

modprobe algif_aead

👉 應失敗


3️⃣ 功能測試(最重要)

python3 CVE-2026-31431-copy_fail_exp_harmless.py

👉 應報錯(如上)


🧠 Root Cause(簡化)

漏洞來自以下組合:

  • AF_ALG(kernel crypto API)
  • AEAD implementation(algif_aead)
  • splice zero-copy 機制

導致:

controlled page cache write

⚠️ 安全影響

完整 exploit 可達成:

local user → page cache overwrite → SUID patch → root

📌 結論

狀態結果
未修補🔴 可被利用
已修補🟢 攻擊失效

🧑‍💻 重點心得

這個漏洞告訴我們一件很重要的事:

❗ 不要只用「靜態檢查」(如 lsmod)判斷安全性

真正應該做的是:

  • 行為驗證(PoC)
  • runtime 測試
  • attack surface 分析

📎 Disclaimer

本測試使用 harmless PoC,不涉及提權。

請僅於測試環境使用。


Comments

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *