<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Cve on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/tags/cve/</link><description>Recent content in Cve on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>en</language><lastBuildDate>Fri, 08 May 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/tags/cve/index.xml" rel="self" type="application/rss+xml"/><item><title>Next.js v16.2.6 — One Release That Closes 13 Security Advisories at Once</title><link>https://ice-ice-bear.github.io/posts/2026-05-08-nextjs-16-2-6-security-patch/</link><pubDate>Fri, 08 May 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/posts/2026-05-08-nextjs-16-2-6-security-patch/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post Next.js v16.2.6 — One Release That Closes 13 Security Advisories at Once" /&gt;&lt;h2 id="overview"&gt;Overview
&lt;/h2&gt;&lt;p&gt;On 2026-05-07, &lt;a class="link" href="https://github.com/vercel/next.js" target="_blank" rel="noopener"
 &gt;vercel/next.js&lt;/a&gt; shipped &lt;a class="link" href="https://github.com/vercel/next.js/releases/tag/v16.2.6" target="_blank" rel="noopener"
 &gt;v16.2.6&lt;/a&gt;, a single release that &lt;strong&gt;closes 13 security advisories at once&lt;/strong&gt; — 7 High, 4 Moderate, 2 Low. The most accurate one-line read came from the chat room itself: &lt;em&gt;&amp;ldquo;Looking at the patch notes, you&amp;rsquo;ll be in trouble if you don&amp;rsquo;t upgrade — extremely critical.&amp;rdquo;&lt;/em&gt; What stands out is not the count but the shape: &lt;strong&gt;three Middleware/Proxy bypasses across different surfaces&lt;/strong&gt;, one &lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r" target="_blank" rel="noopener"
 &gt;WebSocket SSRF&lt;/a&gt;, and &lt;strong&gt;three cache-poisoning advisories&lt;/strong&gt; — these aren&amp;rsquo;t isolated bugs, they&amp;rsquo;re a common pattern.&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;graph TD
 Release["Next.js v16.2.6 &amp;lt;br/&amp;gt; 2026-05-07"] --&gt; Bypass["Middleware/Proxy &amp;lt;br/&amp;gt; Bypass × 3"]
 Release --&gt; SSRF["SSRF × 1"]
 Release --&gt; Cache["Cache poisoning × 3"]
 Release --&gt; XSS["XSS × 2"]
 Release --&gt; DoS["DoS × 3"]
 Release --&gt; Other["follow-up × 1"]

 Bypass --&gt; B1["GHSA-267c-6grr-h53f &amp;lt;br/&amp;gt; segment-prefetch"]
 Bypass --&gt; B2["GHSA-492v-c6pp-mqqv &amp;lt;br/&amp;gt; dynamic route param"]
 Bypass --&gt; B3["GHSA-36qx-fr4f-26g5 &amp;lt;br/&amp;gt; Pages Router i18n"]

 SSRF --&gt; S1["GHSA-c4j6-fc7j-m34r &amp;lt;br/&amp;gt; WebSocket upgrade"]

 Cache --&gt; C1["GHSA-wfc6-r584-vfw7 &amp;lt;br/&amp;gt; RSC response"]
 Cache --&gt; C2["GHSA-vfv6-92ff-j949 &amp;lt;br/&amp;gt; RSC cache-busting"]
 Cache --&gt; C3["GHSA-3g8h-86w9-wvmq &amp;lt;br/&amp;gt; redirect"]

 XSS --&gt; X1["GHSA-ffhc-5mcf-pf4q &amp;lt;br/&amp;gt; CSP nonce"]
 XSS --&gt; X2["GHSA-gx5p-jg67-6x7h &amp;lt;br/&amp;gt; beforeInteractive"]

 DoS --&gt; D1["GHSA-8h8q-6873-q5fj &amp;lt;br/&amp;gt; Server Components"]
 DoS --&gt; D2["GHSA-mg66-mrh9-m8jx &amp;lt;br/&amp;gt; Cache Components"]
 DoS --&gt; D3["GHSA-h64f-5h5j-jqjh &amp;lt;br/&amp;gt; Image API"]

 Other --&gt; O1["GHSA-26hh-7cqf-hhc6 &amp;lt;br/&amp;gt; incomplete fix"]&lt;/pre&gt;&lt;h2 id="1-middlewareproxy-bypass--3--the-most-dangerous-cluster"&gt;1. Middleware/Proxy Bypass × 3 — The Most Dangerous Cluster
&lt;/h2&gt;&lt;p&gt;&lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/routing/middleware" target="_blank" rel="noopener"
 &gt;Middleware/Proxy&lt;/a&gt; is the layer where authentication, authorization, and redirects run before a route is reached. &lt;strong&gt;If you can bypass that layer, your auth is meaningless.&lt;/strong&gt; v16.2.6 closes bypasses found in three different surfaces at once.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-267c-6grr-h53f" target="_blank" rel="noopener"
 &gt;GHSA-267c-6grr-h53f&lt;/a&gt; — middleware bypass via &lt;strong&gt;App Router segment-prefetch routes&lt;/strong&gt; (High)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-26hh-7cqf-hhc6" target="_blank" rel="noopener"
 &gt;GHSA-26hh-7cqf-hhc6&lt;/a&gt; — &lt;strong&gt;incomplete-fix follow-up&lt;/strong&gt; to the above (High)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-492v-c6pp-mqqv" target="_blank" rel="noopener"
 &gt;GHSA-492v-c6pp-mqqv&lt;/a&gt; — middleware bypass via &lt;strong&gt;dynamic route parameter injection&lt;/strong&gt; (High)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-36qx-fr4f-26g5" target="_blank" rel="noopener"
 &gt;GHSA-36qx-fr4f-26g5&lt;/a&gt; — middleware bypass via &lt;strong&gt;&lt;a class="link" href="https://nextjs.org/docs/pages/building-your-application/routing/internationalization" target="_blank" rel="noopener"
 &gt;Pages Router i18n routing&lt;/a&gt;&lt;/strong&gt; (High)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The fact that the same class of bug appeared on three different surfaces (App Router segments, dynamic routes, Pages Router i18n) is itself the message. &lt;strong&gt;This is not a single bug — it&amp;rsquo;s a class of bugs where Middleware path matching and the actual router disagree on what a path means.&lt;/strong&gt; The fact that the team also bundled the incomplete-fix follow-up (&lt;code&gt;26hh-7cqf-hhc6&lt;/code&gt;) into the same release deserves credit — it minimizes the window in which a known-incomplete patch is exposed.&lt;/p&gt;
&lt;h2 id="2-ssrf--websocket-upgrades"&gt;2. SSRF — WebSocket Upgrades
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r" target="_blank" rel="noopener"
 &gt;GHSA-c4j6-fc7j-m34r&lt;/a&gt; — &lt;a class="link" href="https://owasp.org/www-community/attacks/Server_Side_Request_Forgery" target="_blank" rel="noopener"
 &gt;Server-Side Request Forgery&lt;/a&gt; via &lt;strong&gt;WebSocket upgrade handling&lt;/strong&gt; (High)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A WebSocket upgrade path could be coerced into making outbound requests, meaning an attacker could &lt;strong&gt;scan the internal network, hit cloud metadata endpoints, or call protected internal APIs&lt;/strong&gt; through the server. Apps with realtime/streaming features are squarely in the blast radius.&lt;/p&gt;
&lt;h2 id="3-cache-poisoning--3"&gt;3. Cache Poisoning × 3
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-wfc6-r584-vfw7" target="_blank" rel="noopener"
 &gt;GHSA-wfc6-r584-vfw7&lt;/a&gt; — cache poisoning of &lt;strong&gt;RSC responses&lt;/strong&gt; (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-vfv6-92ff-j949" target="_blank" rel="noopener"
 &gt;GHSA-vfv6-92ff-j949&lt;/a&gt; — poisoning via &lt;strong&gt;RSC cache-busting collisions&lt;/strong&gt; (Low)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-3g8h-86w9-wvmq" target="_blank" rel="noopener"
 &gt;GHSA-3g8h-86w9-wvmq&lt;/a&gt; — &lt;strong&gt;Middleware/Proxy redirects&lt;/strong&gt; can be cache-poisoned (Low)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/rendering/server-components" target="_blank" rel="noopener"
 &gt;React Server Components&lt;/a&gt; responses are commonly cached at the CDN/Edge layer. Once those caches are poisoned, &lt;strong&gt;arbitrary users get the malicious response served to them.&lt;/strong&gt; Two of these are directly attacker-triggerable. The Moderate/Low labels can underplay the real impact depending on your edge cache topology.&lt;/p&gt;
&lt;h2 id="4-xss--2"&gt;4. XSS × 2
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-ffhc-5mcf-pf4q" target="_blank" rel="noopener"
 &gt;GHSA-ffhc-5mcf-pf4q&lt;/a&gt; — XSS via App Router &lt;strong&gt;CSP nonce&lt;/strong&gt; handling (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-gx5p-jg67-6x7h" target="_blank" rel="noopener"
 &gt;GHSA-gx5p-jg67-6x7h&lt;/a&gt; — XSS when untrusted input reaches the &lt;strong&gt;&lt;a class="link" href="https://nextjs.org/docs/app/api-reference/components/script#beforeinteractive" target="_blank" rel="noopener"
 &gt;&lt;code&gt;beforeInteractive&lt;/code&gt; script strategy&lt;/a&gt;&lt;/strong&gt; (Moderate)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CSP nonces are the last line of defense against XSS, and the bug being inside that mechanism is what makes it nasty. &lt;code&gt;beforeInteractive&lt;/code&gt; runs the earliest and most privileged scripts on the page — there isn&amp;rsquo;t a good way to recover from untrusted input at that stage.&lt;/p&gt;
&lt;h2 id="5-dos--3"&gt;5. DoS × 3
&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-8h8q-6873-q5fj" target="_blank" rel="noopener"
 &gt;GHSA-8h8q-6873-q5fj&lt;/a&gt; — &lt;strong&gt;Server Components&lt;/strong&gt; DoS (High)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-mg66-mrh9-m8jx" target="_blank" rel="noopener"
 &gt;GHSA-mg66-mrh9-m8jx&lt;/a&gt; — &lt;strong&gt;&lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/caching" target="_blank" rel="noopener"
 &gt;Cache Components&lt;/a&gt;&lt;/strong&gt; connection-exhaustion DoS (High)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-h64f-5h5j-jqjh" target="_blank" rel="noopener"
 &gt;GHSA-h64f-5h5j-jqjh&lt;/a&gt; — &lt;strong&gt;&lt;a class="link" href="https://nextjs.org/docs/app/api-reference/components/image#image-optimization-api" target="_blank" rel="noopener"
 &gt;Image Optimization API&lt;/a&gt;&lt;/strong&gt; DoS (Moderate)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;All three are remotely triggerable at low cost, which is why they earned High/Moderate. Cache Components exhausts connections; the Image API burns transform budget.&lt;/p&gt;
&lt;h2 id="what-to-do-right-now"&gt;What to Do Right Now
&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;npm install next@16.2.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;yarn add next@16.2.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;pnpm add next@16.2.6
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;bun add next@16.2.6
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Apps using App Router + Middleware for auth should upgrade immediately.&lt;/strong&gt; Combine the three bypass advisories and you can reach a state where authentication is effectively bypassed. While you roll out the fix, consider blocking suspicious segment-prefetch patterns and unusual query parameters at the WAF/CDN layer as a temporary buffer.&lt;/p&gt;
&lt;h2 id="insights"&gt;Insights
&lt;/h2&gt;&lt;p&gt;Triage priority is unambiguous — &lt;strong&gt;3 bypasses + 1 SSRF + 3 cache-poisoning advisories landing in one release is itself the loudest signal in this batch.&lt;/strong&gt; The fact that middleware bypass appeared on three different surfaces says it isn&amp;rsquo;t one bug; it&amp;rsquo;s a class of defect where &lt;strong&gt;the App Router&amp;rsquo;s matching logic and the router&amp;rsquo;s actual resolution disagree about what a path is.&lt;/strong&gt; Even adjusting for Next.js 16 being a relatively new major, 13 advisories in one release is unusual. Bundling the incomplete-fix follow-up into the same release is a good example of responsible disclosure — it shrinks the window when an unfinished patch is in the wild. The chat room&amp;rsquo;s instinct — &lt;em&gt;&amp;ldquo;extremely critical&amp;rdquo;&lt;/em&gt; — is right: this should be the &lt;strong&gt;highest-priority upgrade in your queue.&lt;/strong&gt; Zooming out, the release is a hint that &lt;strong&gt;the App Router routing model itself deserves more fuzzing and audit.&lt;/strong&gt; As long as middleware matching and the router are independent, the same class of bug is likely to surface again.&lt;/p&gt;
&lt;h2 id="references"&gt;References
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Release&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js" target="_blank" rel="noopener"
 &gt;vercel/next.js&lt;/a&gt; · &lt;a class="link" href="https://github.com/vercel/next.js/releases/tag/v16.2.6" target="_blank" rel="noopener"
 &gt;v16.2.6 release notes&lt;/a&gt; (published 2026-05-07)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;High severity advisories&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-8h8q-6873-q5fj" target="_blank" rel="noopener"
 &gt;GHSA-8h8q-6873-q5fj&lt;/a&gt; — Server Components DoS&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-267c-6grr-h53f" target="_blank" rel="noopener"
 &gt;GHSA-267c-6grr-h53f&lt;/a&gt; — App Router segment-prefetch bypass&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-26hh-7cqf-hhc6" target="_blank" rel="noopener"
 &gt;GHSA-26hh-7cqf-hhc6&lt;/a&gt; — incomplete-fix follow-up&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-mg66-mrh9-m8jx" target="_blank" rel="noopener"
 &gt;GHSA-mg66-mrh9-m8jx&lt;/a&gt; — Cache Components DoS&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-492v-c6pp-mqqv" target="_blank" rel="noopener"
 &gt;GHSA-492v-c6pp-mqqv&lt;/a&gt; — dynamic-route bypass&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-c4j6-fc7j-m34r" target="_blank" rel="noopener"
 &gt;GHSA-c4j6-fc7j-m34r&lt;/a&gt; — WebSocket SSRF&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-36qx-fr4f-26g5" target="_blank" rel="noopener"
 &gt;GHSA-36qx-fr4f-26g5&lt;/a&gt; — Pages Router i18n bypass&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Moderate / Low advisories&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-ffhc-5mcf-pf4q" target="_blank" rel="noopener"
 &gt;GHSA-ffhc-5mcf-pf4q&lt;/a&gt; — App Router CSP-nonce XSS (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-gx5p-jg67-6x7h" target="_blank" rel="noopener"
 &gt;GHSA-gx5p-jg67-6x7h&lt;/a&gt; — beforeInteractive XSS (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-h64f-5h5j-jqjh" target="_blank" rel="noopener"
 &gt;GHSA-h64f-5h5j-jqjh&lt;/a&gt; — Image Optimization DoS (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-wfc6-r584-vfw7" target="_blank" rel="noopener"
 &gt;GHSA-wfc6-r584-vfw7&lt;/a&gt; — RSC cache poisoning (Moderate)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-vfv6-92ff-j949" target="_blank" rel="noopener"
 &gt;GHSA-vfv6-92ff-j949&lt;/a&gt; — RSC cache-busting collision (Low)&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/vercel/next.js/security/advisories/GHSA-3g8h-86w9-wvmq" target="_blank" rel="noopener"
 &gt;GHSA-3g8h-86w9-wvmq&lt;/a&gt; — Middleware redirect cache poisoning (Low)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Next.js docs&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://nextjs.org/docs/app" target="_blank" rel="noopener"
 &gt;App Router&lt;/a&gt; · &lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/routing/middleware" target="_blank" rel="noopener"
 &gt;Middleware/Proxy&lt;/a&gt; · &lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/caching" target="_blank" rel="noopener"
 &gt;Cache Components&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://nextjs.org/docs/app/building-your-application/rendering/server-components" target="_blank" rel="noopener"
 &gt;Server Components&lt;/a&gt; · &lt;a class="link" href="https://nextjs.org/docs/app/api-reference/components/image#image-optimization-api" target="_blank" rel="noopener"
 &gt;Image Optimization API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://nextjs.org/docs/pages/building-your-application/routing/internationalization" target="_blank" rel="noopener"
 &gt;Pages Router i18n&lt;/a&gt; · &lt;a class="link" href="https://nextjs.org/docs/app/api-reference/components/script#beforeinteractive" target="_blank" rel="noopener"
 &gt;&lt;code&gt;beforeInteractive&lt;/code&gt; script strategy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item><item><title>EKS AMI CVE-2026-31431 Copy-Fail — Patch Delay and the algif_aead Mitigation</title><link>https://ice-ice-bear.github.io/posts/2026-05-04-eks-ami-cve-2026-31431-mitigation/</link><pubDate>Mon, 04 May 2026 00:00:00 +0900</pubDate><guid>https://ice-ice-bear.github.io/posts/2026-05-04-eks-ami-cve-2026-31431-mitigation/</guid><description>&lt;img src="https://ice-ice-bear.github.io/" alt="Featured image of post EKS AMI CVE-2026-31431 Copy-Fail — Patch Delay and the algif_aead Mitigation" /&gt;&lt;h2 id="overview"&gt;Overview
&lt;/h2&gt;&lt;p&gt;On 2026-04-30, &lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/issues/2699" target="_blank" rel="noopener"
 &gt;awslabs/amazon-eks-ami issue #2699&lt;/a&gt; opened with a simple title — &amp;ldquo;🚨 Patch for: CVE-2026-31431.&amp;rdquo; AWS support&amp;rsquo;s answer was &amp;ldquo;no patch yet, no ETA,&amp;rdquo; and meanwhile &lt;a class="link" href="https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC" target="_blank" rel="noopener"
 &gt;a container-escape PoC went public&lt;/a&gt;. It took six days for &lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/releases/tag/v20260505" target="_blank" rel="noopener"
 &gt;EKS AMI v20260505&lt;/a&gt; to ship — and during those six days, &lt;strong&gt;the community&amp;rsquo;s mitigation moved faster than the official patch.&lt;/strong&gt;&lt;/p&gt;
&lt;pre class="mermaid" style="visibility:hidden"&gt;flowchart TD
 A["2026-04-30 &amp;lt;br/&amp;gt; Issue #2699 opens"] --&gt; B["05-01 &amp;lt;br/&amp;gt; v20260423 AMI confirmed vulnerable"]
 B --&gt; C["05-01 &amp;lt;br/&amp;gt; AWS: no patch, no ETA"]
 C --&gt; D["05-01 &amp;lt;br/&amp;gt; algif_aead module-load mitigation"]
 D --&gt; E["05-01 &amp;lt;br/&amp;gt; kernel.org 6.12 mainline commit 8b88d99 merged"]
 E --&gt; F["05-02 &amp;lt;br/&amp;gt; SSM Run Command rollout to clusters"]
 F --&gt; G["05-04 &amp;lt;br/&amp;gt; Chat thread: Docker seccomp option"]
 G --&gt; H["05-05 &amp;lt;br/&amp;gt; Amazon Linux kernel fix released"]
 H --&gt; I["05-06 &amp;lt;br/&amp;gt; EKS AMI v20260505 release"]&lt;/pre&gt;&lt;h2 id="cve-2026-31431--copy-fail-in-a-nutshell"&gt;CVE-2026-31431 — Copy-Fail in a Nutshell
&lt;/h2&gt;&lt;p&gt;The vulnerability lives in the Linux kernel&amp;rsquo;s &lt;a class="link" href="https://www.kernel.org/doc/html/latest/crypto/userspace-if.html" target="_blank" rel="noopener"
 &gt;algif_aead&lt;/a&gt; — the AEAD interface of the AF_ALG socket family. The community calls it &amp;ldquo;Copy-Fail.&amp;rdquo; Three things matter.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Locally authenticated users&lt;/strong&gt; can trigger it. No remote unauthenticated path.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Container escape is feasible&lt;/strong&gt; in container workloads — direct impact on multi-tenant K8s clusters, CI runners, and sandbox environments.&lt;/li&gt;
&lt;li&gt;Public PoC: &lt;a class="link" href="https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC" target="_blank" rel="noopener"
 &gt;Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;GitHub advisory: &lt;a class="link" href="https://github.com/advisories/GHSA-2274-3hgr-wxv6" target="_blank" rel="noopener"
 &gt;GHSA-2274-3hgr-wxv6&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;ldquo;Local&amp;rdquo; is the weakest assumption you have in K8s. It means an unprivileged process inside an apparently fine container can reach into the host kernel.&lt;/p&gt;
&lt;h2 id="timeline--issue-2699"&gt;Timeline — Issue #2699
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;Date&lt;/th&gt;
 &lt;th&gt;Event&lt;/th&gt;
 &lt;/tr&gt;
 &lt;/thead&gt;
 &lt;tbody&gt;
 &lt;tr&gt;
 &lt;td&gt;2026-04-30&lt;/td&gt;
 &lt;td&gt;Issue #2699 opens. Title: &amp;ldquo;🚨 Patch for: CVE-2026-31431&amp;rdquo;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;Community check: even the latest v20260423 AMI (kernel 6.12.79-101.147.amzn2023) is &lt;strong&gt;still vulnerable&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;AWS support reply: &lt;strong&gt;&amp;ldquo;no patch, no ETA available&amp;rdquo;&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;AWS official mitigation guide — block loading of the &lt;code&gt;algif_aead&lt;/code&gt; module&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;The 6.12 mainline kernel had merged &lt;a class="link" href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8b88d99341f139e23bdeb1027a2a3ae10d341d82" target="_blank" rel="noopener"
 &gt;commit 8b88d99&lt;/a&gt; about 10 hours earlier&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-02&lt;/td&gt;
 &lt;td&gt;A user rolls out the mitigation cluster-wide via &lt;a class="link" href="https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html" target="_blank" rel="noopener"
 &gt;AWS SSM Run Command&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-04&lt;/td&gt;
 &lt;td&gt;Community discussion: &amp;ldquo;for Docker users, you can also block this in seccomp&amp;rdquo; — proposes an additional mitigation surface&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-05&lt;/td&gt;
 &lt;td&gt;Amazon Linux kernel fix — see the &lt;a class="link" href="https://alas.aws.amazon.com/AL2023/" target="_blank" rel="noopener"
 &gt;ALAS-2026 page&lt;/a&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-06&lt;/td&gt;
 &lt;td&gt;&lt;strong&gt;&lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/releases/tag/v20260505" target="_blank" rel="noopener"
 &gt;EKS AMI v20260505 release&lt;/a&gt;&lt;/strong&gt; — kernel 6.12.80-106.156 / 6.1.168-203.330. Issue scheduled to be locked.&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="awss-pre-patch-mitigation"&gt;AWS&amp;rsquo;s Pre-Patch Mitigation
&lt;/h2&gt;&lt;p&gt;The idea is simple — block the vulnerable kernel module from loading at all.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;echo&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;install algif_aead /bin/false&amp;#34;&lt;/span&gt; &amp;gt; /etc/modprobe.d/disable-algif.conf
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;rmmod algif_aead 2&amp;gt;/dev/null &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;true&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;code&gt;install algif_aead /bin/false&lt;/code&gt; tells modprobe to run &lt;code&gt;/bin/false&lt;/code&gt; instead of loading the module — meaning it never loads. &lt;code&gt;rmmod&lt;/code&gt; removes the module if it is already loaded.&lt;/p&gt;
&lt;h2 id="cluster-wide-rollout--ssm-run-command"&gt;Cluster-Wide Rollout — SSM Run Command
&lt;/h2&gt;&lt;p&gt;A pattern shared in the issue comments.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aws ssm send-command &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --region eu-west-3 &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --document-name &lt;span class="s2"&gt;&amp;#34;AWS-RunShellScript&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --targets &lt;span class="s2"&gt;&amp;#34;Key=tag:eks:cluster-name,Values={{CLUSTER_NAME}}&amp;#34;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --parameters &lt;span class="s1"&gt;&amp;#39;commands=[
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;echo \&amp;#34;install algif_aead /bin/false\&amp;#34; &amp;gt; /etc/modprobe.d/disable-algif.conf&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;rmmod algif_aead 2&amp;gt;/dev/null || true&amp;#34;,
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; &amp;#34;lsmod | grep algif &amp;amp;&amp;amp; echo STILL_LOADED || echo MITIGATED&amp;#34;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="s1"&gt; ]&amp;#39;&lt;/span&gt; &lt;span class="se"&gt;\
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; --comment &lt;span class="s2"&gt;&amp;#34;CVE-2026-31431 mitigation&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The last line is a verification check — if &lt;code&gt;lsmod | grep algif&lt;/code&gt; is empty, the module is gone. Even with dozens of nodes per cluster, this is one command.&lt;/p&gt;
&lt;h2 id="bake-into-managed-node-group--karpenter-userdata"&gt;Bake into Managed Node Group / Karpenter UserData
&lt;/h2&gt;&lt;p&gt;One user&amp;rsquo;s playbook: bake the mitigation into the &lt;a class="link" href="https://karpenter.sh/" target="_blank" rel="noopener"
 &gt;Karpenter&lt;/a&gt; NodePool UserData so &lt;strong&gt;every newly provisioned node boots already protected.&lt;/strong&gt; Existing nodes get a one-shot SSM application, new nodes are auto-handled by UserData — low impact, low effort.&lt;/p&gt;
&lt;p&gt;The standard rollout discipline applies: verify the PoC is blocked, confirm sidecar and DaemonSet compatibility, then stage the rollout.&lt;/p&gt;
&lt;h2 id="bottlerocket-is-a-separate-track"&gt;Bottlerocket Is a Separate Track
&lt;/h2&gt;&lt;p&gt;A commenter reported: &amp;ldquo;&lt;a class="link" href="https://bottlerocket.dev/" target="_blank" rel="noopener"
 &gt;Bottlerocket&lt;/a&gt; AMI clusters can&amp;rsquo;t apply this mitigation. This probably belongs in the other repo.&amp;rdquo; Bottlerocket has a read-only filesystem and a different module-loading policy, so it has to be tracked over at &lt;a class="link" href="https://github.com/bottlerocket-os/bottlerocket" target="_blank" rel="noopener"
 &gt;bottlerocket-os&lt;/a&gt;.&lt;/p&gt;
&lt;h2 id="the-aws-communication-critique"&gt;The AWS Communication Critique
&lt;/h2&gt;&lt;p&gt;The single thread that runs through the whole issue: &lt;strong&gt;&amp;ldquo;AWS communicated poorly.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Other managed-K8s vendors sent advance warning emails. AWS sent nothing.&lt;/li&gt;
&lt;li&gt;A specific ETA — &amp;ldquo;AMI within X days of upstream patch&amp;rdquo; — would have helped operators plan.&lt;/li&gt;
&lt;li&gt;While the community was tracking the PoC and the mainline commit themselves, AWS support&amp;rsquo;s answer was still &amp;ldquo;no ETA.&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;That tension is exactly why the issue was set to be locked once v20260505 shipped.&lt;/p&gt;
&lt;h2 id="insights"&gt;Insights
&lt;/h2&gt;&lt;p&gt;The real signal in this issue isn&amp;rsquo;t the patch — it&amp;rsquo;s the &lt;strong&gt;shape of the timeline&lt;/strong&gt;. About six days passed between the mainline kernel merge and the EKS AMI release, and during those six days the PoC was already public, meaning container escape was demonstrably reachable in multi-tenant K8s, CI runners, and sandbox setups. So what operators actually needed wasn&amp;rsquo;t &amp;ldquo;a patch is coming,&amp;rdquo; but &lt;strong&gt;&amp;ldquo;how do we survive six days before the patch.&amp;rdquo;&lt;/strong&gt; The answer fits in two lines — apply the &lt;code&gt;algif_aead&lt;/code&gt; module block to every node immediately via SSM, and bake it into Karpenter and Managed Node Group UserData so new nodes come up already protected. AWS&amp;rsquo;s &amp;ldquo;no ETA&amp;rdquo; reply is a separate problem; while other managed hosting providers were sending advance warning emails, AWS stayed silent, which means operations teams need to monitor &lt;strong&gt;information sources beyond official channels — issue trackers, community chat rooms, kernel.org&lt;/strong&gt; — as a baseline practice. The fact that a 2026-05-04 chat thread was already debating &amp;ldquo;block it via Docker seccomp instead&amp;rdquo; is the proof: the community recognized the threat faster than the official announcement. The same pattern will repeat with the next CVE, and &lt;strong&gt;repo subscriptions + community channels + the ALAS feed&lt;/strong&gt; should be the standard ops posture.&lt;/p&gt;
&lt;h2 id="references"&gt;References
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Issue and AMI release&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/issues/2699" target="_blank" rel="noopener"
 &gt;awslabs/amazon-eks-ami issue #2699&lt;/a&gt; — 🚨 Patch for: CVE-2026-31431&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/releases/tag/v20260505" target="_blank" rel="noopener"
 &gt;EKS AMI v20260505 release&lt;/a&gt; — kernel 6.12.80-106.156 / 6.1.168-203.330 (published 2026-05-06)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;CVE / advisories&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/advisories/GHSA-2274-3hgr-wxv6" target="_blank" rel="noopener"
 &gt;GHSA-2274-3hgr-wxv6&lt;/a&gt; — GitHub advisory&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/?id=8b88d99341f139e23bdeb1027a2a3ae10d341d82" target="_blank" rel="noopener"
 &gt;Linux kernel commit 8b88d99&lt;/a&gt; — mainline fix&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC" target="_blank" rel="noopener"
 &gt;Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC&lt;/a&gt; — container-escape PoC&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://www.kernel.org/doc/html/latest/crypto/userspace-if.html" target="_blank" rel="noopener"
 &gt;Linux algif_aead userspace API docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://alas.aws.amazon.com/AL2023/" target="_blank" rel="noopener"
 &gt;Amazon Linux Security Center (ALAS)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Mitigation references&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a class="link" href="https://docs.aws.amazon.com/systems-manager/latest/userguide/execute-remote-commands.html" target="_blank" rel="noopener"
 &gt;AWS SSM Run Command&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://karpenter.sh/" target="_blank" rel="noopener"
 &gt;Karpenter&lt;/a&gt; — for UserData baking&lt;/li&gt;
&lt;li&gt;&lt;a class="link" href="https://bottlerocket.dev/" target="_blank" rel="noopener"
 &gt;Bottlerocket&lt;/a&gt; · &lt;a class="link" href="https://github.com/bottlerocket-os/bottlerocket" target="_blank" rel="noopener"
 &gt;bottlerocket-os GitHub&lt;/a&gt; — separate track&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>