目錄
一個不需要 root、不需要特殊工具、只用 Python 標準函式庫就能寫出的 732 bytes 腳本,可以在你的 Ubuntu、Debian、RHEL、Arch、SUSE 上取得 root 權限。這不是誇大,這是 2026 年 4 月正式披露的 CVE-2026-31431,代號「CopyFail」。
TL;DR
CVE-2026-31431(CopyFail):Linux 核心 authencesn 加密模板的邏輯缺陷,允許非特權本機使用者對任何可讀檔案的頁面快取執行可控的 4-byte 寫入,且核心不會將被汙染的頁面標記為「dirty」(等待回寫),導致磁碟上的檔案完整無缺,但記憶體中的版本已被竄改並全系統可見。影響範圍:2017 年後幾乎所有主流 Linux 發行版。已於 2026 年 4 月 1 日合併修補程式進主線核心。
發生了什麼
CopyFail 披露於 2026 年 4 月底,技術細節由資安研究團隊 Xint 公開。核心問題出在 Linux 核心的 authencesn 加密模板——一個處理認證加密的底層元件。
這個缺陷讓攻擊者可以:
- 以非特權身份對任何可讀檔案的頁面快取執行 4-byte 精確寫入
- 核心不會把被汙染的頁面標記為 dirty,因此不會觸發回寫(write-back),磁碟上的檔案保持乾淨
- 但頁面快取才是系統實際讀取的位置——包括所有 process、所有容器
這代表攻擊者可以在記憶體中靜默竄改一個 setuid binary(例如 /usr/bin/passwd),讓下次執行時直接取得 root shell,同時:
- 磁碟上的檔案通過任何 checksum 驗證
- SELinux/AppArmor 等基於檔案屬性的防護形同虛設
- 日誌裡不會留下明顯痕跡
為什麼這件事值得關注
CVSSv3 評分 7.8(High),但現實影響更嚴重
CVSS 評分 7.8 意味著這是本機提權漏洞,需要先登入系統才能利用。這限制了遠端大規模攻擊的可能性。但以下幾個原因讓這個漏洞格外棘手:
容器穿透:Linux 頁面快取是跨所有 process 和容器共享的核心資源。Kubernetes 叢集中,一旦攻擊者取得單一 pod 的程式碼執行能力(例如透過 RCE 漏洞),就可以用 CopyFail 竄改同一節點上所有工作負載共用的記憶體,進而提權到 K8s node,影響整個節點的工作負載。
隱蔽性極強:傳統的完整性驗證工具(AIDE、Tripwire)比對的是磁碟上的雜湊值,完全偵測不到純頁面快取汙染。這讓 CopyFail 成為一個天然的「無痕提權」技術。
影響範圍廣泛:Ubuntu、RHEL、Debian、Fedora、Arch、SUSE、Amazon Linux 均受影響。任何 2017 年後出廠並未更新核心的機器都在範圍內。
腳本本身令人印象深刻
整個 exploit 只用到 Python 標準函式庫(os、socket、zlib),需要 Python 3.10+ 以使用 os.splice()。這代表:
- 不需要安裝任何第三方套件
- 不需要編譯 C 程式
- 幾乎所有現代 Linux 系統預裝的 Python 版本就夠用
技術角度怎麼看
頁面快取的信任假設被打破了
Linux 核心長期以來有個隱性假設:如果你沒有寫入權限,你就無法修改快取中的內容。CopyFail 在 authencesn 的特定程式碼路徑中打破了這個假設。
問題在於加密操作的in-place 修改邏輯——當某個加密操作失敗但已部分修改了 page 的內容時,核心沒有正確地將這個 page 標記為需要丟棄或回寫。這個「4-byte 寫入窗口」就是漏洞的核心。
修補方式
修補程式已於 2026 年 4 月 1 日合併進 Linux 主線核心,修正了 authencesn 在操作失敗時的頁面清理邏輯。各發行版正陸續透過標準更新通道推出修補版核心。
後續值得觀察的點
-
你的 K8s 叢集升了嗎? 雲端環境中的多租戶叢集是最需要立即修補的目標。在共用節點上執行不受信任工作負載的情境(CI/CD、serverless)尤其危險。
-
頁面快取完整性監控 這個事件暴露了現有 integrity monitoring 工具的盲點。未來可能出現針對頁面快取的運行期監控方案。
-
類似漏洞類型還有多少? authencesn 不是唯一做 in-place 加密操作的核心元件,類似的假設可能存在於其他地方。
立即行動
# 確認目前核心版本
uname -r
# Ubuntu/Debian
sudo apt update && sudo apt upgrade linux-image-generic
# RHEL/Fedora/CentOS
sudo dnf update kernel
# Arch Linux
sudo pacman -Syu linux
修補後重開機使新核心生效。
參考資料
- Copy Fail: 732 Bytes to Root on Linux - Xint
- CVE-2026-31431: 732 bytes to become root on (almost) every Linux server - Loginline
- A single 732-byte Python script can be used to obtain root on essentially all Linux distributions shipped since 2017 - PC Gamer
- CopyFail (CVE-2026-31431): How a 732-Byte Python Script Gets Root on Almost Every Linux Machine - DEV Community
相關標籤
相關文章
從開機到關機:Fireship 用 15 分鐘串起作業系統所有核心概念
作業系統不是一個黑盒,而是一條從 UEFI 到 Kernel 到 Process 的清晰流水線。Fireship 的影片用開機到關機的敘事主軸把這條線串起來。
用 LangGraph 打造影片製作 AI Agent:第三課實戰筆記
用 LangGraph 建構一個能自動規劃、撰稿、生成腳本的影片製作 AI Agent,重點在 state machine 設計和工具呼叫的錯誤處理。
Mini Shai-Hulud:史上最大 npm 供應鏈蠕蟲攻擊解析
2026 年 5 月 11 日,TeamPCP 組織在 6 分鐘內入侵 42 個 TanStack 套件,透過 GitHub Actions cache poisoning 與 OIDC token 記憶體提取,打造出史上首個具備 SLSA Build Level 3 provenance 的惡意蠕蟲套件群。