<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Eks on ICE-ICE-BEAR-BLOG</title><link>https://ice-ice-bear.github.io/ko/tags/eks/</link><description>Recent content in Eks on ICE-ICE-BEAR-BLOG</description><generator>Hugo -- gohugo.io</generator><language>ko</language><lastBuildDate>Mon, 04 May 2026 00:00:00 +0900</lastBuildDate><atom:link href="https://ice-ice-bear.github.io/ko/tags/eks/index.xml" rel="self" type="application/rss+xml"/><item><title>EKS AMI CVE-2026-31431 Copy-Fail — 패치 지연과 algif_aead 미티게이션</title><link>https://ice-ice-bear.github.io/ko/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/ko/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 — 패치 지연과 algif_aead 미티게이션" /&gt;&lt;h2 id="개요"&gt;개요
&lt;/h2&gt;&lt;p&gt;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; 가 열렸다. 제목은 단순했다 — &amp;ldquo;🚨 Patch for: CVE-2026-31431&amp;rdquo;. 하지만 AWS의 답은 &amp;ldquo;패치 없음, ETA 못 줌&amp;rdquo; 이었고, 그동안 &lt;a class="link" href="https://github.com/Percivalll/Copy-Fail-CVE-2026-31431-Kubernetes-PoC" target="_blank" rel="noopener"
 &gt;컨테이너 탈출 PoC가 공개&lt;/a&gt;됐다. 결국 &lt;a class="link" href="https://github.com/awslabs/amazon-eks-ami/releases/tag/v20260505" target="_blank" rel="noopener"
 &gt;v20260505 EKS AMI&lt;/a&gt;가 6일 뒤 풀릴 때까지, &lt;strong&gt;공식 패치보다 커뮤니티의 미티게이션이 먼저 움직인&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; 이슈 #2699 오픈"] --&gt; B["05-01 &amp;lt;br/&amp;gt; v20260423 AMI도 취약 확인"]
 B --&gt; C["05-01 &amp;lt;br/&amp;gt; AWS: 패치 없음, ETA 없음"]
 C --&gt; D["05-01 &amp;lt;br/&amp;gt; algif_aead 모듈 차단 미티게이션"]
 D --&gt; E["05-01 &amp;lt;br/&amp;gt; kernel.org 6.12 메인라인 commit 8b88d99 머지"]
 E --&gt; F["05-02 &amp;lt;br/&amp;gt; SSM Run Command로 일괄 적용"]
 F --&gt; G["05-04 &amp;lt;br/&amp;gt; 커뮤니티 토론: Docker seccomp 차단 옵션"]
 G --&gt; H["05-05 &amp;lt;br/&amp;gt; Amazon Linux 커널 fix released"]
 H --&gt; I["05-06 &amp;lt;br/&amp;gt; EKS AMI v20260505 릴리스"]&lt;/pre&gt;&lt;h2 id="cve-2026-31431--copy-fail-핵심"&gt;CVE-2026-31431 — Copy-Fail 핵심
&lt;/h2&gt;&lt;p&gt;이 취약점은 리눅스 커널의 &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; — AF_ALG socket의 AEAD interface — 에 있는 메모리 처리 결함이다. 통칭 &amp;ldquo;Copy-Fail&amp;rdquo; 로 불린다. 핵심 특성 세 가지.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;로컬 인증된 사용자&lt;/strong&gt;가 트리거 가능. 원격 비인증 공격은 불가&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;컨테이너 워크로드에서 컨테이너 탈출&lt;/strong&gt;이 가능 — 멀티테넌트 K8s, CI runner, sandbox에 직접 영향&lt;/li&gt;
&lt;li&gt;공개 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 어드바이저리: &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;로컬&amp;quot;이라는 단어가 K8s 환경에서는 가장 약한 가정이다. 멀쩡한 컨테이너 안에서 unprivileged process 가 호스트 커널을 건드릴 수 있다는 뜻.&lt;/p&gt;
&lt;h2 id="사건-흐름--이슈-2699"&gt;사건 흐름 — 이슈 #2699
&lt;/h2&gt;&lt;table&gt;
 &lt;thead&gt;
 &lt;tr&gt;
 &lt;th&gt;날짜&lt;/th&gt;
 &lt;th&gt;진행&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 오픈. 제목: &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;커뮤니티 검증: 최신 v20260423 AMI의 커널 6.12.79-101.147.amzn2023 도 &lt;strong&gt;여전히 취약&lt;/strong&gt;&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;AWS 서포트 답변: &lt;strong&gt;&amp;ldquo;패치 없음, ETA 못 줌&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 공식 미티게이션 가이드 — &lt;code&gt;algif_aead&lt;/code&gt; 모듈 로딩 차단&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-01&lt;/td&gt;
 &lt;td&gt;6.12 메인라인 커널엔 &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; 약 10시간 전 머지됨&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-02&lt;/td&gt;
 &lt;td&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;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-04&lt;/td&gt;
 &lt;td&gt;커뮤니티 토론: &amp;ldquo;Docker 쓰시는 분들은 seccomp으로 막아도&amp;rdquo; — 미티게이션 추가 옵션 제시&lt;/td&gt;
 &lt;/tr&gt;
 &lt;tr&gt;
 &lt;td&gt;05-05&lt;/td&gt;
 &lt;td&gt;Amazon Linux 커널 fix — &lt;a class="link" href="https://alas.aws.amazon.com/AL2023/" target="_blank" rel="noopener"
 &gt;ALAS-2026 페이지&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 릴리스&lt;/a&gt;&lt;/strong&gt; — kernel 6.12.80-106.156 / 6.1.168-203.330. 이슈 lock 예정&lt;/td&gt;
 &lt;/tr&gt;
 &lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id="aws-공식-미티게이션-패치-전"&gt;AWS 공식 미티게이션 (패치 전)
&lt;/h2&gt;&lt;p&gt;기본 아이디어는 단순하다 — 취약한 커널 모듈을 로딩 자체로 차단하는 것.&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; 는 modprobe가 모듈을 로드하려 할 때 &lt;code&gt;/bin/false&lt;/code&gt; 를 대신 실행하게 만든다 — 즉 절대 로드되지 않는다. &lt;code&gt;rmmod&lt;/code&gt; 는 이미 로드된 모듈을 즉시 제거한다.&lt;/p&gt;
&lt;h2 id="클러스터-단위-일괄-적용--ssm-run-command"&gt;클러스터 단위 일괄 적용 — SSM Run Command
&lt;/h2&gt;&lt;p&gt;이슈 댓글에서 사용자들이 공유한 패턴.&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;마지막 줄은 검증 — &lt;code&gt;lsmod | grep algif&lt;/code&gt; 가 비어 있으면 모듈이 사라진 것. 클러스터에 노드가 수십 대라도 한 번에 적용된다.&lt;/p&gt;
&lt;h2 id="managed-node-groups--karpenter-userdata-베이크"&gt;Managed Node Groups / Karpenter UserData 베이크
&lt;/h2&gt;&lt;p&gt;한 사용자 사례: &lt;a class="link" href="https://karpenter.sh/" target="_blank" rel="noopener"
 &gt;Karpenter&lt;/a&gt; 의 NodePool UserData에 미티게이션을 박아 두면, &lt;strong&gt;모든 신규 노드가 부팅 즉시 보호된 상태로 올라온다&lt;/strong&gt;. 기존 노드는 SSM으로 일회성 처리, 새 노드는 UserData로 자동화 — 저영향, 저노력.&lt;/p&gt;
&lt;p&gt;PoC로 차단 검증, 사이드카·데몬셋 호환성 확인 후 단계적 롤아웃이 정석.&lt;/p&gt;
&lt;h2 id="bottlerocket-ami는-별도-트랙"&gt;Bottlerocket AMI는 별도 트랙
&lt;/h2&gt;&lt;p&gt;이슈 댓글 중 한 명이 보고: &amp;ldquo;&lt;a class="link" href="https://bottlerocket.dev/" target="_blank" rel="noopener"
 &gt;Bottlerocket&lt;/a&gt; AMI 쓰는 클러스터는 미티게이션 적용 실패. 이건 이 레포 소관 아닐 듯.&amp;rdquo; Bottlerocket은 read-only filesystem과 다른 모듈 로딩 정책을 갖기 때문에 &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="aws-커뮤니케이션-비판"&gt;AWS 커뮤니케이션 비판
&lt;/h2&gt;&lt;p&gt;이슈 전반에 흐르는 톤은 한 줄로 요약된다 — &lt;strong&gt;&amp;ldquo;AWS의 커뮤니케이션이 부족했다.&amp;rdquo;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;다른 매니지드 K8s 호스팅 업체들은 사전 경고 메일 발송, AWS만 무소식&lt;/li&gt;
&lt;li&gt;&amp;ldquo;패치 release 후 X일 내 AMI release&amp;rdquo; 같은 구체적인 ETA를 줬어야&lt;/li&gt;
&lt;li&gt;커뮤니티가 PoC와 메인라인 커밋을 먼저 추적하는 사이 AWS 서포트는 &amp;ldquo;ETA 못 줌&amp;rdquo;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;이게 v20260505가 풀린 뒤 &amp;ldquo;이슈 lock 예정&amp;rdquo; 으로 정리된 배경이다.&lt;/p&gt;
&lt;h2 id="인사이트"&gt;인사이트
&lt;/h2&gt;&lt;p&gt;이 이슈가 던지는 진짜 메시지는 패치 자체가 아니라 &lt;strong&gt;타임라인의 모양&lt;/strong&gt;이다. 메인라인 커널 커밋이 머지된 뒤 EKS AMI가 풀리기까지 약 6일이 걸렸고, 그 6일 동안 PoC는 이미 공개돼 있었다 — 멀티테넌트 K8s, CI runner, sandbox 환경 모두에서 컨테이너 탈출이 실증 가능한 상태였다는 뜻. 그래서 운영자에게 진짜 가치 있는 신호는 &amp;ldquo;AMI가 곧 나온다&amp;quot;가 아니라 &lt;strong&gt;&amp;ldquo;패치 전 6일 동안 어떻게 살아남는가&amp;rdquo;&lt;/strong&gt; 다. 답은 두 줄로 정리된다 — &lt;code&gt;algif_aead&lt;/code&gt; 모듈 차단을 SSM으로 모든 노드에 즉시 적용, Karpenter/MNG의 UserData에 베이크해 신규 노드도 자동 보호. AWS의 &amp;ldquo;ETA 못 줌&amp;rdquo; 응답은 별도 문제로, 다른 매니지드 호스팅 업체들이 사전 경고 메일을 돌리는 동안 AWS만 침묵했다는 점은 운영팀이 &lt;strong&gt;공식 채널 이상의 정보 소스(이슈 트래커, 커뮤니티 토론, kernel.org)&lt;/strong&gt; 를 평소에 모니터링해야 한다는 결론으로 이어진다. 5월 4일 시점에 이미 &amp;ldquo;Docker seccomp으로 막아야&amp;rdquo; 같은 우회 옵션이 회자되고 있었다는 사실이 그 증거다 — 공식 발표보다 커뮤니티가 위협을 빠르게 인식했다. 다음 비슷한 사건에서도 패턴은 반복될 것이고, &lt;strong&gt;레포 알림 + 커뮤니티 토론 + ALAS 페이지 모니터링&lt;/strong&gt; 이 운영팀의 기본 자세가 돼야 한다.&lt;/p&gt;
&lt;h2 id="참고"&gt;참고
&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 (2026-05-06 published)&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; — 메인라인 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; — 컨테이너 탈출 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; — UserData 베이크용&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; — 별도 트랙&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>