資安雷達 2026 年 9 月 20 日

2026-09-20 — Linux核心網路子系統爆四組本地提權漏洞

primary=https://heyitsas.im/posts/lpe-quartet/ primary=https://www.openwall.com/lists/oss-security/2026/09/18/16

Linux核心網路子系統爆四組本地提權漏洞

Asim Manizada,〈A quartet of Linux local root vulns: DirtyAH6, PPPoEject, TUNderflow, and DiagSpill〉· 2026-09-18

Linux 核心的四個網路子系統,同時被揭露各自獨立的本地權限提升漏洞:CVE-2026-80844(DirtyAH6)、CVE-2026-81000(TUNderflow)、CVE-2026-68121(PPPoEject)、CVE-2026-74469(DiagSpill),一般使用者只要能觸發其中任一條路徑,就能讓核心記憶體亂寫並奪取 root 權限。研究者 Asim Manizada 在今年七月中旬把四個漏洞回報給 security@kernel.org,並於 2026-09-18 公開完整技術細節與可用的概念驗證程式。

漏洞機制

DirtyAH6 出在 IPv6 Authentication Header 的路由標頭重排函式 ipv6_rearrange_rthdr(),該函式沒有檢查 segments_left 是否小於等於 segments,攻擊封包只要把 hdrlen 設成 2segments_left 設成 255,就能讓指標位移發生四千零六十四位元組的下溢,觸發越界的 memmove(),進而破壞 skb_shared_info 結構。概念驗證會把檔案支援的分頁片段安排在漏洞路徑旁邊,再靠一次 ESP 解密寫入該片段,藉此覆寫 PAM 模組換取 root。

TUNderflow 則發生在 TUN/TAP 裝置的 tun_set_headroom(),這個函式接受使用者設定的接收預留空間卻不做邊界檢查,一旦數值被灌到 4160 位元組,呼叫 SKB_MAX_HEAD() 就會整數下溢,讓 good_linear 纏繞成一個巨大的 size_t,造成堆積配置溢位。攻擊需要靠 netkit、VXLAN 或 Open vSwitch 之類會放大 headroom 的網路裝置串接才能觸發,之後透過梳理相鄰的 pipe 緩衝區並竄改合併旗標,換取檔案覆寫能力。

PPPoEject 是 pppoe_sendmsg() 在呼叫 dev_hard_header() 之後仍持有指向 skb 標頭的舊指標,如果底層裝置(例如 GRE、IP6GRE)在回呼中呼叫 pskb_expand_head() 重新配置了標頭記憶體,PPPoE 端寫入的就是已釋放記憶體(use-after-free)。概念驗證會競爭寫入已釋放的 skb 標頭,把某個存活的檔案描述符改指向偽造的 struct file,關閉該描述符時就會觸發攻擊者控制的核心回呼。

DiagSpill 藏在 sctp_diag 裡,它用十六位元的 transport_count 欄位計數對端 transport 數量卻不檢查是否溢位,只要塞進 65536 個 peer transport,計數器就會繞回 0,導致 Netlink 回應預留的緩衝區不足,複製整份 transport 清單時外溢約八百萬位元組資料。這是四個漏洞裡唯一不需要 user namespace 或任何特殊權限即可觸發的一個,只要系統啟用 SCTP 與 sctp_diag 即可命中。

受影響版本

四個漏洞都存在於長期維護的核心程式碼中,受影響版本橫跨主流 LTS 分支,任何仍在使用下列分支且尚未套用對應修補的核心都暴露在風險中:

名稱CVE子系統觸發門檻
DirtyAH6CVE-2026-80844IPv6 AH6/XFRM需開放 user namespace
TUNderflowCVE-2026-81000TUN/TAP需 user namespace,並串接會放大 headroom 的網路裝置
PPPoEjectCVE-2026-68121PPPoE需 user namespace,並存在可重配置記憶體的底層裝置
DiagSpillCVE-2026-74469SCTP diag僅需載入 SCTP/sctp_diag,不需 namespace
  • DirtyAH6、TUNderflow、PPPoEject:都要求系統開放非特權使用者命名空間,這在多數通用發行版的預設核心組態中是開著的。
  • DiagSpill:只要載入 SCTP 與 sctp_diag 模組,不需任何命名空間或額外權限即可觸發,是四者中門檻最低的一個。
  • PPPoEject 額外要求系統存在會在 dev_hard_header() 中重新配置記憶體的底層裝置,例如 GRE、IP6GRE。
  • DiagSpill 若搭配啟用 ASCONF/ADD-IP,且設定 addip_noauth_enable=1 或啟用 SCTP-AUTH,還會出現遠端阻斷服務的變種。

四個漏洞影響的正是桌面、伺服器與容器主機共用的通用核心,只要沒有針對性地關閉 AH6、TUN、PPPoE 或 SCTP 子系統,就同時暴露在四條攻擊路徑之下。

修補與緩解

上游已把四個修補一併合併進穩定核心分支,第一批同時包含全部修補的版本為 5.10.2705.15.2216.1.1886.6.1576.12.1096.18.507.2.4,管理員應對照自己所用的 LTS 分支立即升級到對應版本。

來不及升級的環境可以先停用非特權使用者命名空間擋下 DirtyAH6、TUNderflow、PPPoEject 三者,但這個緩解方式對 DiagSpill 完全無效;更保守的做法是照研究者建議直接停用未使用的 AH6、TUN、PPPoE、SCTP 子系統,縮小攻擊面。四個漏洞的概念驗證已公開在 GitHub 上並附有目標調整說明,代表野外出現武器化攻擊的門檻已經不高,應優先排入本週的修補排程。

原始來源:Asim Manizada 技術寫作:A quartet of Linux local root vulnsoss-security 郵件論壇討論串


End of article
0
Would love your thoughts, please comment.x
()
x