<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>安全 on KnightLi的博客</title>
        <link>https://knightli.com/zh-tw/tags/%E5%AE%89%E5%85%A8/</link>
        <description>Recent content in 安全 on KnightLi的博客</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>zh-tw</language>
        <lastBuildDate>Sun, 17 May 2026 17:27:13 +0800</lastBuildDate><atom:link href="https://knightli.com/zh-tw/tags/%E5%AE%89%E5%85%A8/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Next.js 高危 SSRF 漏洞 CVE-2026-44578：影響範圍與升級建議</title>
        <link>https://knightli.com/zh-tw/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</link>
        <pubDate>Sun, 17 May 2026 17:27:13 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/17/nextjs-cve-2026-44578-websocket-ssrf/</guid>
        <description>&lt;p&gt;Next.js 在 2026 年 5 月揭露了一個高危 SSRF 漏洞：CVE-2026-44578。&lt;/p&gt;
&lt;p&gt;根據 GitHub / Vercel 安全公告 &lt;code&gt;GHSA-c4j6-fc7j-m34r&lt;/code&gt; 和 NVD 記錄，這個漏洞影響自託管的 Next.js 應用，前提是應用使用內建 Node.js server，且暴露在可接收惡意 WebSocket upgrade 請求的網路環境中。攻擊者可能讓伺服器代理請求到任意內部或外部位址，進而暴露內部服務或雲端 metadata 端點。&lt;/p&gt;
&lt;p&gt;Vercel 託管部署不受影響。修復版本是 &lt;code&gt;15.5.16&lt;/code&gt; 和 &lt;code&gt;16.2.5&lt;/code&gt;。&lt;/p&gt;
&lt;h2 id=&#34;先說結論&#34;&gt;先說結論
&lt;/h2&gt;&lt;p&gt;如果你在自己的伺服器、容器、Kubernetes、ECS、VPS、裸機或 PaaS 上自託管 Next.js，需要優先檢查。&lt;/p&gt;
&lt;p&gt;受影響範圍：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 13.4.13 &amp;lt; 15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;next &amp;gt;= 16.0.0 &amp;lt; 16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;不受影響或風險較低的情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;部署在 Vercel 平台上的應用。&lt;/li&gt;
&lt;li&gt;已升級到 &lt;code&gt;15.5.16&lt;/code&gt;、&lt;code&gt;16.2.5&lt;/code&gt; 或更高版本。&lt;/li&gt;
&lt;li&gt;沒有使用內建 Node.js server 暴露服務的場景。&lt;/li&gt;
&lt;li&gt;反向代理或負載平衡已阻斷不需要的 WebSocket upgrade 請求，且出站存取也做了限制。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;建議處置順序：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先確認生產環境實際執行的 &lt;code&gt;next&lt;/code&gt; 版本。&lt;/li&gt;
&lt;li&gt;自託管應用盡快升級到修復版本。&lt;/li&gt;
&lt;li&gt;暫時無法升級時，在反向代理或負載平衡層阻斷不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;限制應用伺服器存取雲端 metadata、內網管理面和敏感內部服務。&lt;/li&gt;
&lt;li&gt;排查近期異常 WebSocket upgrade 請求和內部存取日誌。&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&#34;漏洞是什麼&#34;&gt;漏洞是什麼
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 是一個 Server-Side Request Forgery，也就是 SSRF 漏洞。&lt;/p&gt;
&lt;p&gt;SSRF 的核心風險是：攻擊者不直接存取內部系統，而是誘導你的伺服器替他發請求。伺服器通常位於更靠近內網、雲平台和內部服務的位置，所以一旦被當成代理使用，可能存取到外部攻擊者本來碰不到的資源。&lt;/p&gt;
&lt;p&gt;這次 Next.js 的問題出在 WebSocket upgrade 處理路徑。安全公告稱，自託管應用如果使用內建 Node.js server，攻擊者可以透過特製 WebSocket upgrade 請求，讓伺服器代理存取任意內部或外部目的地。&lt;/p&gt;
&lt;p&gt;風險點包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;內網 HTTP 服務。&lt;/li&gt;
&lt;li&gt;管理後台。&lt;/li&gt;
&lt;li&gt;雲端 metadata 位址。&lt;/li&gt;
&lt;li&gt;容器或叢集內部服務。&lt;/li&gt;
&lt;li&gt;只允許伺服器存取的內部 API。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;這個漏洞的 CVSS v3.1 評分為 &lt;code&gt;8.6 High&lt;/code&gt;，向量是：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;這意味著攻擊面在網路側，攻擊複雜度低，不需要權限，也不需要使用者互動，主要影響機密性。&lt;/p&gt;
&lt;h2 id=&#34;為什麼自託管更危險&#34;&gt;為什麼自託管更危險
&lt;/h2&gt;&lt;p&gt;這次公告明確提到：Vercel-hosted deployments are not affected。&lt;/p&gt;
&lt;p&gt;真正需要重點關注的是自託管部署。原因很簡單：自託管應用的網路環境千差萬別，有些直接暴露 origin server，有些在 Nginx、Traefik、Ingress、Cloudflare、ALB 或自建閘道後面，有些運行在雲主機、容器網路或 Kubernetes 叢集裡。&lt;/p&gt;
&lt;p&gt;如果這些環境沒有限制出站存取，Next.js 程序可能看得到：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;169.254.169.254&lt;/code&gt; 這類雲端 metadata 位址。&lt;/li&gt;
&lt;li&gt;內網 IP 段。&lt;/li&gt;
&lt;li&gt;只在 VPC 內暴露的服務。&lt;/li&gt;
&lt;li&gt;Redis、Elasticsearch、Prometheus、Grafana 等內部元件。&lt;/li&gt;
&lt;li&gt;Kubernetes Service、Pod 或管理端點。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;所以 SSRF 的危險不只在 Next.js 本身，而在它所在網路裡能存取什麼。&lt;/p&gt;
&lt;h2 id=&#34;如何判斷是否受影響&#34;&gt;如何判斷是否受影響
&lt;/h2&gt;&lt;p&gt;第一步，看 &lt;code&gt;next&lt;/code&gt; 版本。&lt;/p&gt;
&lt;p&gt;在專案目錄裡執行：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm ls next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm why next
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;也可以直接查看：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat package-lock.json
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat pnpm-lock.yaml
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;cat yarn.lock
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;如果版本落在下面範圍，就需要處理：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 13.4.13 &amp;lt; 15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&amp;gt;= 16.0.0 &amp;lt; 16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;第二步，看部署方式。&lt;/p&gt;
&lt;p&gt;重點關注這些情況：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;使用 &lt;code&gt;next start&lt;/code&gt; 運行生產服務。&lt;/li&gt;
&lt;li&gt;使用自訂 Node.js server 承載 Next.js。&lt;/li&gt;
&lt;li&gt;Docker 映像裡直接啟動 Next.js server。&lt;/li&gt;
&lt;li&gt;Kubernetes / ECS / VPS / 裸機自託管。&lt;/li&gt;
&lt;li&gt;反向代理後面仍然直接暴露 Next.js origin。&lt;/li&gt;
&lt;li&gt;應用所在網路能存取內部服務或雲端 metadata。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果應用部署在 Vercel，按官方公告不受這個漏洞影響。但依然建議保持 Next.js 版本更新，因為同一批版本裡可能還修復了其他問題。&lt;/p&gt;
&lt;h2 id=&#34;應該升級到什麼版本&#34;&gt;應該升級到什麼版本
&lt;/h2&gt;&lt;p&gt;官方修復版本是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;15.5.16&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;16.2.5&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;升級示例：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或如果使用 16.x：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm install next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;pnpm：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@15.5.16
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;pnpm add next@16.2.5
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;升級後重新建置並發布：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run build
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npm run start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;或按你的 CI/CD 流程重新建置 Docker 映像並發布。&lt;/p&gt;
&lt;p&gt;如果你的專案鎖定在 14.x 或 15.x，不建議為了修漏洞倉促跨大版本到 16.x。更穩妥的做法是先升級到 &lt;code&gt;15.5.16&lt;/code&gt; 這一修復線，完成測試和發布後，再規劃大版本升級。&lt;/p&gt;
&lt;h2 id=&#34;臨時緩解措施&#34;&gt;臨時緩解措施
&lt;/h2&gt;&lt;p&gt;如果暫時不能升級，安全公告給出的核心思路是：不要把 origin server 直接暴露給不可信網路；如果不需要 WebSocket upgrade，就在反向代理或負載平衡層阻斷；同時盡量限制 origin 的出站存取。&lt;/p&gt;
&lt;p&gt;可以考慮這些緩解方向：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;不直接暴露 Next.js origin server。&lt;/li&gt;
&lt;li&gt;在 Nginx、Ingress、ALB、Cloudflare 等入口層過濾不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;如果業務不使用 WebSocket，直接拒絕帶有 upgrade 語義的請求。&lt;/li&gt;
&lt;li&gt;對應用伺服器做 egress 限制，禁止存取雲端 metadata 位址和敏感內網段。&lt;/li&gt;
&lt;li&gt;用雲平台能力啟用更安全的 metadata 存取模式，例如要求 token 的 metadata 服務。&lt;/li&gt;
&lt;li&gt;對管理後台、資料庫、快取、監控系統增加認證和網路隔離。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;注意，反向代理規則只是臨時緩解，不應該替代升級。框架漏洞最終仍然要透過修復版本解決。&lt;/p&gt;
&lt;h2 id=&#34;維運排查重點&#34;&gt;維運排查重點
&lt;/h2&gt;&lt;p&gt;這個漏洞主要影響機密性，所以排查重點是「有沒有被用來存取內部資源」。&lt;/p&gt;
&lt;p&gt;建議關注：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Web 存取日誌中異常的 &lt;code&gt;Upgrade&lt;/code&gt;、&lt;code&gt;Connection&lt;/code&gt;、&lt;code&gt;Host&lt;/code&gt;、路徑和來源 IP。&lt;/li&gt;
&lt;li&gt;反向代理或負載平衡日誌中異常的 WebSocket upgrade 請求。&lt;/li&gt;
&lt;li&gt;Next.js 服務附近的異常出站連線。&lt;/li&gt;
&lt;li&gt;雲端 metadata 服務存取日誌或憑證使用記錄。&lt;/li&gt;
&lt;li&gt;內網管理服務、監控系統、快取、搜尋服務的異常存取。&lt;/li&gt;
&lt;li&gt;IAM 臨時憑證、存取金鑰、token 是否有異常調用。&lt;/li&gt;
&lt;li&gt;容器或主機上是否出現異常程序、下載行為或橫向移動跡象。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果懷疑被利用，建議按外洩場景處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;保留日誌和現場。&lt;/li&gt;
&lt;li&gt;輪換可能暴露的雲端憑證、API key、資料庫密碼和 session secret。&lt;/li&gt;
&lt;li&gt;檢查雲帳號最近的 API 調用。&lt;/li&gt;
&lt;li&gt;檢查內網服務存取記錄。&lt;/li&gt;
&lt;li&gt;重建受影響容器或主機。&lt;/li&gt;
&lt;li&gt;複查出站存取策略和 metadata 保護。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;這和-reactnextjs-rce-不是一回事&#34;&gt;這和 React/Next.js RCE 不是一回事
&lt;/h2&gt;&lt;p&gt;容易混淆的一點是，CVE-2026-44578 是 Next.js WebSocket upgrade SSRF，不是之前 React Server Components 相關的 RCE。&lt;/p&gt;
&lt;p&gt;它的核心影響是讓伺服器向攻擊者指定的內部或外部位址發請求，主要風險是資訊外洩和內部資源探測。&lt;/p&gt;
&lt;p&gt;而 React Server Components 相關 RCE 則屬於程式碼執行風險，攻擊後果和修復範圍不同。&lt;/p&gt;
&lt;p&gt;所以排查時不要只看「Next.js 有漏洞」這個大標題，要把具體 CVE、影響版本、部署模式和修復版本對應起來。&lt;/p&gt;
&lt;h2 id=&#34;哪些團隊要優先處理&#34;&gt;哪些團隊要優先處理
&lt;/h2&gt;&lt;p&gt;優先級最高的是這些環境：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;自託管 Next.js 生產站點。&lt;/li&gt;
&lt;li&gt;運行在雲主機、容器、Kubernetes 或內網環境。&lt;/li&gt;
&lt;li&gt;應用伺服器可以存取雲端 metadata 服務。&lt;/li&gt;
&lt;li&gt;應用伺服器能存取內部管理後台、資料庫、快取或監控系統。&lt;/li&gt;
&lt;li&gt;直接暴露 &lt;code&gt;next start&lt;/code&gt; origin server。&lt;/li&gt;
&lt;li&gt;使用老版本 &lt;code&gt;next&lt;/code&gt;，且升級流程不清晰。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;優先級相對較低的是：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;完全部署在 Vercel 的應用。&lt;/li&gt;
&lt;li&gt;已升級到修復版本的應用。&lt;/li&gt;
&lt;li&gt;origin server 不直接暴露，且入口層已經阻斷不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;出站網路嚴格受控，無法存取敏感內網資源。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;但「優先級較低」不等於可以不升級。Next.js 是高頻暴露元件，框架版本長期落後會疊加更多風險。&lt;/p&gt;
&lt;h2 id=&#34;給開發團隊的檢查清單&#34;&gt;給開發團隊的檢查清單
&lt;/h2&gt;&lt;p&gt;可以按下面清單處理：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 確認所有倉庫的 &lt;code&gt;next&lt;/code&gt; 版本。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 查出所有自託管部署，不只看 Vercel 專案。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 標記使用 &lt;code&gt;next start&lt;/code&gt; 或內建 Node.js server 的服務。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 升級到 &lt;code&gt;15.5.16&lt;/code&gt;、&lt;code&gt;16.2.5&lt;/code&gt; 或更高版本。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 重新建置並發布生產映像。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 在入口層阻斷不需要的 WebSocket upgrade。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 限制應用伺服器存取雲端 metadata 和敏感內網段。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 檢查近期異常 upgrade 請求和出站存取。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 輪換疑似暴露的憑證。&lt;/li&gt;
&lt;li&gt;&lt;input disabled=&#34;&#34; type=&#34;checkbox&#34;&gt; 把 Next.js 安全更新納入依賴更新流程。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;總結&#34;&gt;總結
&lt;/h2&gt;&lt;p&gt;CVE-2026-44578 是一個需要認真處理的 Next.js 高危 SSRF 漏洞。&lt;/p&gt;
&lt;p&gt;它不影響 Vercel 託管部署，但影響範圍覆蓋大量自託管 Next.js 應用：&lt;code&gt;13.4.13&lt;/code&gt; 到 &lt;code&gt;15.5.16&lt;/code&gt; 之前，以及 &lt;code&gt;16.0.0&lt;/code&gt; 到 &lt;code&gt;16.2.5&lt;/code&gt; 之前。漏洞觸發點在 WebSocket upgrade 處理路徑，攻擊者可能讓伺服器代理存取內部或外部位址，進而暴露內網服務或雲端 metadata 端點。&lt;/p&gt;
&lt;p&gt;最直接的修復方式是升級到 &lt;code&gt;15.5.16&lt;/code&gt; 或 &lt;code&gt;16.2.5&lt;/code&gt;。臨時緩解則是不要直接暴露 origin server，阻斷不需要的 WebSocket upgrade，並限制應用伺服器的出站存取。&lt;/p&gt;
&lt;p&gt;對維運團隊來說，重點不是只看 CVE 分數，而是看你的 Next.js 服務所在網路能存取什麼。SSRF 的真實風險，往往取決於伺服器背後有哪些內網資源和雲權限。&lt;/p&gt;
&lt;p&gt;參考連結：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;GitHub Advisory：GHSA-c4j6-fc7j-m34r&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://nvd.nist.gov/vuln/detail/CVE-2026-44578&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;NVD：CVE-2026-44578&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class=&#34;link&#34; href=&#34;https://security.snyk.io/vuln/SNYK-JS-NEXT-16638682&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Snyk：SNYK-JS-NEXT-16638682&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Dirty Frag、Copy Fail 與 Fragnesia：近期三個 Linux 本地提權漏洞對比</title>
        <link>https://knightli.com/zh-tw/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</link>
        <pubDate>Fri, 15 May 2026 13:24:04 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/linux-lpe-dirty-frag-copy-fail-fragnesia-analysis/</guid>
        <description>&lt;p&gt;最近 Linux 核心連續出現幾個高關注度的本地提權漏洞：Dirty Frag、Copy Fail 和 Fragnesia。它們看起來像一組「同類事件」，因為最終效果都很接近：低權限本地使用者可能把權限提升到 root。&lt;/p&gt;
&lt;p&gt;但從維運處置角度看，不能把它們混成一個漏洞。三者的入口模組、觸發路徑、緩解方式和補丁節奏都不同。更準確的理解是：它們暴露了 Linux 核心在「頁面快取、splice、socket buffer、加密路徑」這些複雜交界處的共同風險。&lt;/p&gt;
&lt;p&gt;本文只做風險和處置分析，不展開可復現利用步驟。&lt;/p&gt;
&lt;h2 id=&#34;三個漏洞分別是什麼&#34;&gt;三個漏洞分別是什麼
&lt;/h2&gt;&lt;h3 id=&#34;dirty-fragcve-2026-43284&#34;&gt;Dirty Frag：CVE-2026-43284
&lt;/h3&gt;&lt;p&gt;Dirty Frag 主要指向 Linux 核心網路路徑裡的頁面快取寫入問題。公開資料中，它通常和兩個問題一起討論：&lt;code&gt;xfrm-ESP&lt;/code&gt; 側的 CVE-2026-43284，以及 &lt;code&gt;rxrpc&lt;/code&gt; 側的 CVE-2026-43500。&lt;/p&gt;
&lt;p&gt;其中 CVE-2026-43284 與 ESP 處理共享 &lt;code&gt;skb&lt;/code&gt; fragment 時的原地解密有關。問題的關鍵不是攻擊者直接修改磁碟檔案，而是讓核心在不該寫的共享頁面上發生寫入，進而影響頁面快取裡的檔案內容。&lt;/p&gt;
&lt;p&gt;維運上最需要記住的是：Dirty Frag 觸達的是 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt; 這一組核心模組和網路子系統路徑。它和 IPsec、ESP、RxRPC 相關，臨時緩解也會圍繞這些模組展開。&lt;/p&gt;
&lt;h3 id=&#34;copy-failcve-2026-31431&#34;&gt;Copy Fail：CVE-2026-31431
&lt;/h3&gt;&lt;p&gt;Copy Fail 是 Theori / Xint Code 披露的 Linux 核心本地提權漏洞。它的入口不在 IPsec 網路路徑，而在核心使用者態加密 API 的 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 相關路徑。&lt;/p&gt;
&lt;p&gt;公開說明中提到，它源於 2017 年引入的一處原地最佳化：某些情況下，核心沒有按預期複製資料，而是把頁面快取頁放進可寫目標路徑裡。攻擊者可以借助 &lt;code&gt;AF_ALG&lt;/code&gt; 與 &lt;code&gt;splice()&lt;/code&gt; 組合，對頁面快取支援的頁面做小範圍可控寫入。&lt;/p&gt;
&lt;p&gt;它的風險點在於可利用性很強，而且影響面跨多個主流發行版。和 Dirty Frag 不同，Copy Fail 的臨時緩解重點是限制或禁用 &lt;code&gt;algif_aead&lt;/code&gt;，以及在容器和 CI 環境中限制 &lt;code&gt;AF_ALG&lt;/code&gt; socket。&lt;/p&gt;
&lt;h3 id=&#34;fragnesiacve-2026-46300&#34;&gt;Fragnesia：CVE-2026-46300
&lt;/h3&gt;&lt;p&gt;Fragnesia 是 V12 Security 披露的另一個 Linux 核心本地提權漏洞，和 Dirty Frag 屬於相近攻擊面。它不是 Dirty Frag 的同一個 bug，但仍然圍繞 IPsec ESP / &lt;code&gt;rxrpc&lt;/code&gt; 相關模組，以及頁面快取寫入效果展開。&lt;/p&gt;
&lt;p&gt;AlmaLinux 的說明把它定位為同一程式碼區域裡的第三個本地 root 問題。其關鍵點在於 &lt;code&gt;skb_try_coalesce()&lt;/code&gt; 在合併 socket buffer 片段時沒有正確保留共享 fragment 標記，導致後續 XFRM ESP-in-TCP 接收路徑可能在外部頁面快取頁上做原地解密。&lt;/p&gt;
&lt;p&gt;也就是說，Fragnesia 和 Dirty Frag 更接近：兩者都繞著 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;、&lt;code&gt;skb&lt;/code&gt; fragment、ESP 解密路徑轉。它們的臨時緩解也高度重疊。&lt;/p&gt;
&lt;h2 id=&#34;相同點為什麼都危險&#34;&gt;相同點：為什麼都危險
&lt;/h2&gt;&lt;p&gt;這三個漏洞的共同點不是「程式碼位置完全一樣」，而是攻擊結果和風險模型非常像。&lt;/p&gt;
&lt;p&gt;第一，它們都是本地提權。攻擊者通常需要先在機器上取得普通使用者程式碼執行能力，然後再把權限提升到 root。對單使用者桌面來說，它不是遠端一鍵入侵；但對多使用者伺服器、CI runner、容器宿主機、共享開發機和暴露 SSH 的 VPS 來說，低權限入口並不罕見。&lt;/p&gt;
&lt;p&gt;第二，它們都和頁面快取寫入有關。攻擊者不一定永久改寫磁碟檔案，而是影響記憶體中的頁面快取副本。這會讓傳統檔案完整性檢查變得不夠可靠：磁碟 hash 可能正常，但執行路徑讀到的頁面快取內容已經被污染。&lt;/p&gt;
&lt;p&gt;第三，它們都偏向確定性邏輯漏洞，而不是傳統意義上很吃時序的競爭條件。公開資料多次強調這類漏洞不依賴贏得 race condition。對防守方來說，這意味著「利用成功率」不能按老經驗低估。&lt;/p&gt;
&lt;p&gt;第四，它們都放大了容器和自動化執行環境的風險。容器內的低權限程式碼、CI 任務、建置腳本、第三方外掛，一旦能觸達宿主核心相關介面，就可能把漏洞從「本地問題」變成「平台問題」。&lt;/p&gt;
&lt;h2 id=&#34;不同點不要用一個補丁思路套全部&#34;&gt;不同點：不要用一個補丁思路套全部
&lt;/h2&gt;&lt;p&gt;三者最大的區別在入口模組。&lt;/p&gt;
&lt;p&gt;Copy Fail 的關鍵入口是 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt;，屬於核心使用者態加密 API。它的臨時防護重點是禁用或限制 &lt;code&gt;algif_aead&lt;/code&gt;，以及用 seccomp 阻斷容器裡建立 &lt;code&gt;AF_ALG&lt;/code&gt; socket。&lt;/p&gt;
&lt;p&gt;Dirty Frag 的關鍵入口在 &lt;code&gt;xfrm-ESP&lt;/code&gt; 和 &lt;code&gt;rxrpc&lt;/code&gt;。它更接近網路協定和 socket buffer 處理路徑，臨時防護通常會考慮禁用 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。但這可能影響 IPsec、VPN、隧道或相關網路能力。&lt;/p&gt;
&lt;p&gt;Fragnesia 的入口也在 Dirty Frag 相近區域，但具體問題落在 &lt;code&gt;skb_try_coalesce()&lt;/code&gt; 沒有保留共享 fragment 標記。它更像是 Dirty Frag 風險面裡的另一個分支，而不是 Copy Fail 的加密 API 問題。&lt;/p&gt;
&lt;p&gt;所以，不能因為已經處理了 Copy Fail，就認為 Dirty Frag 和 Fragnesia 也被覆蓋；也不能因為禁用了 &lt;code&gt;esp4&lt;/code&gt; / &lt;code&gt;esp6&lt;/code&gt;，就認為 Copy Fail 自動消失。它們需要分別確認補丁狀態和緩解策略。&lt;/p&gt;
&lt;h2 id=&#34;影響範圍該怎麼判斷&#34;&gt;影響範圍該怎麼判斷
&lt;/h2&gt;&lt;p&gt;判斷這類漏洞是否受影響，不要只看發行版名字，也不要只看核心大版本號。發行版會回合補丁，雲廠商會維護自己的核心分支，企業發行版還可能有額外 backport。&lt;/p&gt;
&lt;p&gt;更穩妥的順序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;先看發行版安全公告和核心套件 changelog。&lt;/li&gt;
&lt;li&gt;再核對 CVE 是否已被目前核心套件修復。&lt;/li&gt;
&lt;li&gt;對雲主機、容器宿主機和 CI 節點，額外關注雲廠商或平台方公告。&lt;/li&gt;
&lt;li&gt;對臨時緩解，確認業務是否依賴對應模組。&lt;/li&gt;
&lt;li&gt;完成核心升級後安排重啟，確保實際執行核心已經切換。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這一步最容易踩坑的是「套件已經更新，但機器還沒重啟」。核心漏洞不是普通使用者態服務升級，安裝新套件之後，舊核心仍可能繼續執行。&lt;/p&gt;
&lt;h2 id=&#34;維運優先級&#34;&gt;維運優先級
&lt;/h2&gt;&lt;p&gt;這些漏洞最該優先處理的機器，不是「所有 Linux 平均排隊」，而是低權限程式碼最容易出現的地方。&lt;/p&gt;
&lt;p&gt;優先級最高的環境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多使用者登入伺服器&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;建置機和製品打包機&lt;/li&gt;
&lt;li&gt;容器宿主機和 Kubernetes 節點&lt;/li&gt;
&lt;li&gt;共享開發機&lt;/li&gt;
&lt;li&gt;暴露 SSH 的雲主機和 VPS&lt;/li&gt;
&lt;li&gt;執行第三方腳本、外掛、任務佇列的平台&lt;/li&gt;
&lt;li&gt;有 Web 漏洞、弱密碼或歷史入侵痕跡的機器&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相對封閉、單使用者、沒有外部程式碼執行入口的機器，風險仍然存在，但處置順序可以排在後面。&lt;/p&gt;
&lt;h2 id=&#34;臨時緩解應該怎麼理解&#34;&gt;臨時緩解應該怎麼理解
&lt;/h2&gt;&lt;p&gt;臨時緩解不是補丁替代品。它的價值是幫你在無法立刻重啟或等待發行版補丁時降低暴露面。&lt;/p&gt;
&lt;p&gt;對 Copy Fail，重點關注 &lt;code&gt;algif_aead&lt;/code&gt; 和 &lt;code&gt;AF_ALG&lt;/code&gt;。如果業務沒有使用核心 AF_ALG 加密介面，可以評估禁用相關模組；容器環境則應優先檢查 seccomp 策略，避免不受信任工作負載隨意建立對應 socket。&lt;/p&gt;
&lt;p&gt;對 Dirty Frag 和 Fragnesia，重點關注 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。如果系統不依賴 IPsec ESP、相關 VPN、隧道或 RxRPC，可以評估臨時禁用。但生產環境不要盲目執行，因為這些模組可能影響真實網路業務。&lt;/p&gt;
&lt;p&gt;最終仍然要回到核心更新。臨時緩解只能減少攻擊面，不能證明系統已經徹底安全。&lt;/p&gt;
&lt;h2 id=&#34;這三個漏洞說明了什麼&#34;&gt;這三個漏洞說明了什麼
&lt;/h2&gt;&lt;p&gt;這組漏洞真正值得警惕的地方，不只是 CVE 數量，而是它們都集中在核心高複雜度路徑：零拷貝、splice、socket buffer、頁面快取、加密介面、協定堆疊最佳化。&lt;/p&gt;
&lt;p&gt;這些路徑的共同特點是效能收益很大，但所有權邊界也更難維護。一個 fragment 是否共享、一個頁面是否還能原地寫、一個最佳化是否真的只是減少複製，都會變成安全邊界的一部分。&lt;/p&gt;
&lt;p&gt;對安全團隊和維運團隊來說，結論很實際：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;本地提權漏洞要按「已有低權限入口會被放大」處理。&lt;/li&gt;
&lt;li&gt;容器不是核心漏洞的天然隔離邊界。&lt;/li&gt;
&lt;li&gt;檔案完整性檢查不能只看磁碟內容。&lt;/li&gt;
&lt;li&gt;CI、建置機、外掛平台要當成高優先級資產。&lt;/li&gt;
&lt;li&gt;核心補丁需要驗證「已安裝」和「已執行」兩個狀態。&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Dirty Frag、Copy Fail 和 Fragnesia 都是近期 Linux 本地提權風險裡的高優先級事件，但它們不是同一個漏洞的三個名字。&lt;/p&gt;
&lt;p&gt;Copy Fail 走的是 &lt;code&gt;algif_aead&lt;/code&gt; / &lt;code&gt;AF_ALG&lt;/code&gt; 加密介面路徑；Dirty Frag 走的是 &lt;code&gt;xfrm-ESP&lt;/code&gt; 與 &lt;code&gt;rxrpc&lt;/code&gt; 相關路徑；Fragnesia 則在 Dirty Frag 相近攻擊面上，透過 &lt;code&gt;skb&lt;/code&gt; fragment 標記處理問題再次觸發頁面快取寫入風險。&lt;/p&gt;
&lt;p&gt;處置上，最穩妥的做法是：按發行版公告升級核心並重啟；對無法立即升級的系統，分別按漏洞入口評估臨時禁用模組或收緊 seccomp；對多租戶、CI、容器宿主機和共享開發環境優先處理。&lt;/p&gt;
&lt;p&gt;參考資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Theori Copy Fail 說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/theori-io/copy-fail-CVE-2026-31431&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/theori-io/copy-fail-CVE-2026-31431&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;CERT-EU Copy Fail 安全公告：&lt;a class=&#34;link&#34; href=&#34;https://cert.europa.eu/publications/security-advisories/2026-005/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://cert.europa.eu/publications/security-advisories/2026-005/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Dirty Frag 說明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-07-dirty-frag/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-07-dirty-frag/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;AlmaLinux Fragnesia 說明：&lt;a class=&#34;link&#34; href=&#34;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://almalinux.org/blog/2026-05-13-fragnesia-cve-2026-46300/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;V12 Security Fragnesia PoC 說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/tree/main/fragnesia&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/tree/main/fragnesia&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        </item>
        <item>
        <title>Fragnesia (CVE-2026-46300)：Linux 核心本地提權漏洞影響與緩解</title>
        <link>https://knightli.com/zh-tw/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</link>
        <pubDate>Fri, 15 May 2026 13:18:01 +0800</pubDate>
        
        <guid>https://knightli.com/zh-tw/2026/05/15/linux-kernel-fragnesia-local-privilege-escalation/</guid>
        <description>&lt;p&gt;Linux 核心最近又曝出一個和 Dirty Frag 同一類攻擊面相關的本地提權漏洞：Fragnesia (CVE-2026-46300)。&lt;/p&gt;
&lt;p&gt;根據 V12 Security 的披露，Fragnesia 是一個 Linux 本地提權漏洞。攻擊者不需要在宿主機上已有高權限，只要能在本地執行程式碼，就可能借助核心 XFRM ESP-in-TCP 子系統中的邏輯缺陷，把唯讀檔案的頁面快取內容按位元組改寫，最終觸發 root shell。&lt;/p&gt;
&lt;p&gt;原始資料：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;V12 Security PoC 說明：&lt;a class=&#34;link&#34; href=&#34;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/v12-security/pocs/blob/main/fragnesia/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;本文不展開可復現利用步驟，只整理維運側需要知道的風險點和處置思路。&lt;/p&gt;
&lt;h2 id=&#34;它和-dirty-frag-是什麼關係&#34;&gt;它和 Dirty Frag 是什麼關係
&lt;/h2&gt;&lt;p&gt;V12 Security 在說明中把 Fragnesia 歸到 Dirty Frag 漏洞類別裡。它不是 Dirty Frag 本身的同一個 bug，而是同一攻擊面上的另一個問題：Linux 核心的 XFRM ESP-in-TCP。&lt;/p&gt;
&lt;p&gt;XFRM 是 Linux 核心裡處理 IPsec 的框架。ESP-in-TCP 則和透過 TCP 承載 ESP 加密流量有關。Fragnesia 的問題出在共享頁面片段和 socket buffer 合併過程中的邏輯處理：某些情況下，核心會「忘記」某個 fragment 仍然是共享狀態，進而留下可控寫入空間。&lt;/p&gt;
&lt;p&gt;這類問題讓人聯想到 Dirty Pipe / Dirty Frag 這一類頁面快取寫入漏洞。共同點不是具體程式碼完全相同，而是都把攻擊效果落到了頁面快取裡的唯讀檔案副本上。&lt;/p&gt;
&lt;h2 id=&#34;風險為什麼高&#34;&gt;風險為什麼高
&lt;/h2&gt;&lt;p&gt;Fragnesia 的危險之處有三個。&lt;/p&gt;
&lt;p&gt;第一，它是本地提權。只要攻擊者已經能在系統上執行普通使用者程式碼，就可能把權限提升到 root。對多使用者伺服器、容器宿主機、CI runner、共享開發機、VPS 和暴露 Shell 的環境來說，這類漏洞比普通桌面更敏感。&lt;/p&gt;
&lt;p&gt;第二，它不依賴傳統競爭條件。V12 的說明中提到，該漏洞透過構造 ESP-in-TCP 處理流程，讓核心把加密流處理到已經 splice 進 socket buffer 的檔案頁面上，進而按位元組影響頁面快取內容。這意味著風險不只是「理論上可能」，而是研究團隊已經驗證了穩定利用路徑。&lt;/p&gt;
&lt;p&gt;第三，它改的是頁面快取，不是磁碟檔案。公開說明裡的示例目標是 &lt;code&gt;/usr/bin/su&lt;/code&gt;。利用成功後，磁碟上的檔案並不會被永久改寫，改動存在於記憶體頁面快取中。很多只檢查磁碟檔案 hash 或完整性的巡檢流程，可能看不出異常。&lt;/p&gt;
&lt;p&gt;這也是它對管理員麻煩的地方：系統看起來檔案沒變，但一旦執行被污染頁面快取裡的目標二進位檔，就可能觸發提權效果。&lt;/p&gt;
&lt;h2 id=&#34;已知影響範圍&#34;&gt;已知影響範圍
&lt;/h2&gt;&lt;p&gt;V12 Security 的說明稱，受 Dirty Frag 影響且沒有套用 2026 年 5 月 13 日相關修補的核心，也會受 Fragnesia 影響。公開驗證環境包括 Ubuntu 22.04、Ubuntu 24.04，以及 &lt;code&gt;6.8.0-111-generic&lt;/code&gt; 這類核心版本。&lt;/p&gt;
&lt;p&gt;這裡要注意兩點。&lt;/p&gt;
&lt;p&gt;第一，不要只看發行版大版本。Ubuntu 22.04 / 24.04 是否受影響，最終取決於核心修補狀態，而不是發行版名字。&lt;/p&gt;
&lt;p&gt;第二，不要只看有沒有預設 AppArmor 限制。Ubuntu 對非特權使用者命名空間的 AppArmor 限制可以提高門檻，但披露方明確把它視為額外繞過問題，不是漏洞本體的根治方式。&lt;/p&gt;
&lt;p&gt;真正可靠的判斷方式，仍然是查看發行版安全公告和核心套件更新。&lt;/p&gt;
&lt;h2 id=&#34;臨時緩解思路&#34;&gt;臨時緩解思路
&lt;/h2&gt;&lt;p&gt;如果系統暫時不能立刻升級核心，可以先評估是否依賴相關協定模組。&lt;/p&gt;
&lt;p&gt;V12 給出的緩解方向與 Dirty Frag 相同：如果系統不依賴 IPsec ESP 或 RxRPC，可以禁用相關模組，例如 &lt;code&gt;esp4&lt;/code&gt;、&lt;code&gt;esp6&lt;/code&gt;、&lt;code&gt;rxrpc&lt;/code&gt;。這類操作會影響相關網路能力，生產環境不要盲目執行，應先確認業務是否使用 IPsec、VPN、隧道或相關核心功能。&lt;/p&gt;
&lt;p&gt;更穩妥的處置順序是：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;確認發行版是否已經發布核心安全更新。&lt;/li&gt;
&lt;li&gt;優先安裝核心修補並安排重啟。&lt;/li&gt;
&lt;li&gt;如果無法立即升級，再評估臨時禁用相關模組。&lt;/li&gt;
&lt;li&gt;對多使用者系統和 CI / 建置環境優先處理。&lt;/li&gt;
&lt;li&gt;檢查是否開放非必要本地帳號、Shell、容器逃逸面和低權限執行入口。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;這裡不要把禁用模組當作最終修復。它更像是臨時降低暴露面。&lt;/p&gt;
&lt;h2 id=&#34;如果懷疑已經被利用&#34;&gt;如果懷疑已經被利用
&lt;/h2&gt;&lt;p&gt;Fragnesia 的一個特點是頁面快取污染。V12 在說明中強調，利用後目標檔案在頁面快取中的副本可能含有注入內容，後續執行仍可能觸發異常行為，直到頁面被驅逐或系統重啟。&lt;/p&gt;
&lt;p&gt;如果懷疑系統已經被利用，至少要做幾件事：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;盡快保留現場日誌和稽核記錄。&lt;/li&gt;
&lt;li&gt;檢查近期異常本地登入、低權限使用者活動、可疑程序和 root shell 痕跡。&lt;/li&gt;
&lt;li&gt;清理相關頁面快取或直接重啟。&lt;/li&gt;
&lt;li&gt;升級到已修復核心。&lt;/li&gt;
&lt;li&gt;對關鍵二進位檔做完整性檢查，但不要只依賴磁碟 hash。&lt;/li&gt;
&lt;li&gt;輪換可能已經暴露的憑證和金鑰。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;如果是生產伺服器，更建議把它當作一次潛在本地提權事件處理，而不是只當作普通補丁升級。&lt;/p&gt;
&lt;h2 id=&#34;維運側該優先看哪些機器&#34;&gt;維運側該優先看哪些機器
&lt;/h2&gt;&lt;p&gt;這類漏洞優先級最高的不是所有 Linux 機器平均處理，而是先看攻擊者最容易拿到低權限程式碼執行的地方。&lt;/p&gt;
&lt;p&gt;優先級較高的環境包括：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;多使用者登入伺服器&lt;/li&gt;
&lt;li&gt;CI / CD runner&lt;/li&gt;
&lt;li&gt;建置機&lt;/li&gt;
&lt;li&gt;共享開發機&lt;/li&gt;
&lt;li&gt;容器宿主機&lt;/li&gt;
&lt;li&gt;VPS 和雲主機&lt;/li&gt;
&lt;li&gt;暴露 SSH 的邊緣節點&lt;/li&gt;
&lt;li&gt;執行第三方腳本或外掛的平台&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;相對封閉、單使用者、沒有外部程式碼執行入口的機器，風險仍然存在，但緊急程度可以低一些。&lt;/p&gt;
&lt;h2 id=&#34;小結&#34;&gt;小結
&lt;/h2&gt;&lt;p&gt;Fragnesia 值得關注，不是因為它名字新，而是因為它再次把 Linux 本地提權問題拉回到頁面快取和核心網路子系統這一類複雜交界處。&lt;/p&gt;
&lt;p&gt;對管理員來說，最重要的不是研究利用細節，而是確認核心修補狀態、評估是否依賴 ESP / RxRPC、對高暴露機器優先升級，並理解「磁碟檔案沒變」不等於「系統沒有被影響」。&lt;/p&gt;
&lt;p&gt;如果系統受影響，最終答案仍然是盡快安裝發行版提供的核心更新。臨時禁用模組只能算過渡措施，不能替代補丁。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
