🧠 前言
最近曝光的 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_ALGsocket - 搭配
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,不涉及提權。
請僅於測試環境使用。


發佈留言