[{"data":1,"prerenderedAt":552},["ShallowReactive",2],{"news-copy-fail-linux-kernel-kubernetes-nodes":3},{"id":4,"title":5,"author":6,"body":7,"cover":540,"date":541,"description":542,"extension":543,"hero":544,"meta":545,"navigation":546,"path":547,"seo":548,"showContactForm":549,"showTechNav":549,"stem":550,"__hash__":551},"content\u002Fnews\u002Fcopy-fail-linux-kernel-kubernetes-nodes.md","„Copy Fail“ (CVE-2026-31431): Warum ein Kernel-Bug jeden Kubernetes-Node betrifft","Thomas K.",{"type":8,"value":9,"toc":533},"minimark",[10,14,19,27,38,41,47,88,92,98,101,104,108,114,133,305,312,342,356,474,488,492,501,505,529],[11,12,13],"p",{},"Die Linux-Lücke „Copy Fail“ kann aus einem unprivilegierten Pod Root auf dem Node machen. Ein neues Container-Image hilft dagegen nicht, denn der Fehler steckt im Kernel des Nodes. So sichern Sie Ihre Kubernetes- und AKS-Nodes ab.",[15,16,18],"h2",{"id":17},"was-ist-passiert","Was ist passiert?",[11,20,21,22,26],{},"Ende April 2026 wurde die Schwachstelle CVE-2026-31431 veröffentlicht, genannt „Copy Fail“. Entdeckt hat sie Taeyang Lee vom Sicherheitsunternehmen Theori, unterstützt vom Xint-Code-Team. Die Lücke liegt in der Krypto-Schnittstelle AF_ALG des Linux-Kernels, genauer im Modul ",[23,24,25],"code",{},"algif_aead",", und geht auf eine Optimierung aus dem Jahr 2017 (Kernel 4.14) zurück. Sie ist mit CVSS 7.8 bewertet.",[11,28,29,30,33,34,37],{},"Über AF_ALG und den Systemaufruf ",[23,31,32],{},"splice()"," kann ein unprivilegierter Prozess gezielt vier Bytes in den Page Cache einer beliebigen lesbaren Datei schreiben, etwa eines setuid-Programms wie ",[23,35,36],{},"\u002Fusr\u002Fbin\u002Fsu",". Die Datei auf der Festplatte bleibt unverändert, Integritätsprüfungen schlagen deshalb nicht an. Das Ergebnis sind Root-Rechte. Ein öffentlicher Exploit erschien innerhalb eines Tages, laut Berichten ein Python-Skript von nur 732 Bytes. Behoben ist der Fehler in den Kernel-Versionen 6.18.22, 6.19.12 und 7.0, die Distributionen liefern ihre Updates schrittweise aus.",[11,39,40],{},"Die US-Behörde CISA hat Copy Fail am 1. Mai in ihren Katalog aktiv ausgenutzter Schwachstellen (KEV) aufgenommen. US-Bundesbehörden müssen bis zum 15. Mai patchen.",[11,42,43],{},[44,45,46],"strong",{},"So wird aus einem Pod Root auf dem Node:",[48,49,54],"pre",{"className":50,"code":51,"language":52,"meta":53,"style":53},"language-mermaid shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","flowchart TD\n  A[\"Unprivilegierter Pod öffnet AF_ALG-Socket\"] --> B[\"Kernel lädt algif_aead automatisch\"]\n  B --> C[\"4-Byte-Schreibzugriff in den gemeinsamen Page Cache\"]\n  C --> D[\"Setuid-Programm im Speicher manipuliert\"]\n  D --> E[\"Root-Rechte auf dem Node\"]\n","mermaid","",[23,55,56,64,70,76,82],{"__ignoreMap":53},[57,58,61],"span",{"class":59,"line":60},"line",1,[57,62,63],{},"flowchart TD\n",[57,65,67],{"class":59,"line":66},2,[57,68,69],{},"  A[\"Unprivilegierter Pod öffnet AF_ALG-Socket\"] --> B[\"Kernel lädt algif_aead automatisch\"]\n",[57,71,73],{"class":59,"line":72},3,[57,74,75],{},"  B --> C[\"4-Byte-Schreibzugriff in den gemeinsamen Page Cache\"]\n",[57,77,79],{"class":59,"line":78},4,[57,80,81],{},"  C --> D[\"Setuid-Programm im Speicher manipuliert\"]\n",[57,83,85],{"class":59,"line":84},5,[57,86,87],{},"  D --> E[\"Root-Rechte auf dem Node\"]\n",[15,89,91],{"id":90},"warum-betrifft-sie-das","Warum betrifft Sie das?",[11,93,94,95,97],{},"Alle Container auf einem Node teilen sich dessen Kernel und damit auch den Page Cache. Öffnet ein Prozess einen AF_ALG-Socket, lädt der Kernel das Modul ",[23,96,25],{}," bei Bedarf automatisch nach, besondere Rechte braucht der Pod dafür nicht. Ein kompromittierter oder bösartiger Pod kann so über die Container-Grenze hinaus wirken. Im AKS-Issue zur Lücke berichtete ein Nutzer, dass ein Pod ohne Root-Rechte auf diesem Weg Root auf dem Node erlangte. Ein öffentlicher Kubernetes-Proof-of-Concept soll laut seinem Autor auch auf EKS und GKE funktioniert haben, andere Teams konnten das allerdings nicht in jeder Umgebung nachstellen.",[11,99,100],{},"Der entscheidende Punkt: Ein aktualisiertes Container-Image schließt die Lücke nicht. Erst ein gepatchter Kernel, der tatsächlich gebootet wurde, behebt sie. Ein installiertes Paket ohne Neustart reicht nicht.",[11,102,103],{},"Besonders exponiert sind Cluster, in denen fremder oder wenig geprüfter Code läuft, etwa CI-Runner, Build-Agents oder mandantenfähige Plattformen. Workloads in MicroVMs wie Firecracker oder in gVisor sind laut Analysen nicht über diesen Pfad angreifbar.",[15,105,107],{"id":106},"was-sie-jetzt-tun-sollten","Was Sie jetzt tun sollten",[11,109,110,111,113],{},"Microsoft hat am 1. Mai im Repository Azure\u002FAKS (Issue #5753) Hinweise veröffentlicht. Neue Node-Pools und Node-Image-Upgrades erhalten demnach bereits eine Mitigation, die das automatische Laden von ",[23,112,25],{}," blockiert. Bestehende Nodes brauchen ein Node-Image-Upgrade oder das bereitgestellte DaemonSet.",[115,116,117,128],"ul",{},[118,119,120,123,124,127],"li",{},[44,121,122],{},"Sofort mitigieren:"," Rollen Sie das DaemonSet aus dem Issue aus oder aktualisieren Sie das Node-Image. Die Mitigation setzt die modprobe-Regel ",[23,125,126],{},"install algif_aead \u002Fbin\u002Ffalse",". Die Regel allein entschärft ein bereits geladenes Modul nicht, prüfen Sie deshalb jeden Node.",[118,129,130],{},[44,131,132],{},"Node-Image prüfen und aktualisieren:",[48,134,138],{"className":135,"code":136,"language":137,"meta":53,"style":53},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","az aks nodepool show -g \u003Crg> --cluster-name \u003Ccluster> -n \u003Cpool> --query nodeImageVersion -o tsv\naz aks nodepool get-upgrades -g \u003Crg> --cluster-name \u003Ccluster> --nodepool-name \u003Cpool> --query latestNodeImageVersion -o tsv\naz aks nodepool upgrade -g \u003Crg> --cluster-name \u003Ccluster> -n \u003Cpool> --node-image-only\n","bash",[23,139,140,210,261],{"__ignoreMap":53},[57,141,142,146,150,153,156,159,163,166,170,173,176,178,181,183,185,188,190,193,196,198,201,204,207],{"class":59,"line":60},[57,143,145],{"class":144},"sBMFI","az",[57,147,149],{"class":148},"sfazB"," aks",[57,151,152],{"class":148}," nodepool",[57,154,155],{"class":148}," show",[57,157,158],{"class":148}," -g",[57,160,162],{"class":161},"sMK4o"," \u003C",[57,164,165],{"class":148},"r",[57,167,169],{"class":168},"sTEyZ","g",[57,171,172],{"class":161},">",[57,174,175],{"class":148}," --cluster-name",[57,177,162],{"class":161},[57,179,180],{"class":148},"cluste",[57,182,165],{"class":168},[57,184,172],{"class":161},[57,186,187],{"class":148}," -n",[57,189,162],{"class":161},[57,191,192],{"class":148},"poo",[57,194,195],{"class":168},"l",[57,197,172],{"class":161},[57,199,200],{"class":148}," --query",[57,202,203],{"class":148}," nodeImageVersion",[57,205,206],{"class":148}," -o",[57,208,209],{"class":148}," tsv\n",[57,211,212,214,216,218,221,223,225,227,229,231,233,235,237,239,241,244,246,248,250,252,254,257,259],{"class":59,"line":66},[57,213,145],{"class":144},[57,215,149],{"class":148},[57,217,152],{"class":148},[57,219,220],{"class":148}," get-upgrades",[57,222,158],{"class":148},[57,224,162],{"class":161},[57,226,165],{"class":148},[57,228,169],{"class":168},[57,230,172],{"class":161},[57,232,175],{"class":148},[57,234,162],{"class":161},[57,236,180],{"class":148},[57,238,165],{"class":168},[57,240,172],{"class":161},[57,242,243],{"class":148}," --nodepool-name",[57,245,162],{"class":161},[57,247,192],{"class":148},[57,249,195],{"class":168},[57,251,172],{"class":161},[57,253,200],{"class":148},[57,255,256],{"class":148}," latestNodeImageVersion",[57,258,206],{"class":148},[57,260,209],{"class":148},[57,262,263,265,267,269,272,274,276,278,280,282,284,286,288,290,292,294,296,298,300,302],{"class":59,"line":72},[57,264,145],{"class":144},[57,266,149],{"class":148},[57,268,152],{"class":148},[57,270,271],{"class":148}," upgrade",[57,273,158],{"class":148},[57,275,162],{"class":161},[57,277,165],{"class":148},[57,279,169],{"class":168},[57,281,172],{"class":161},[57,283,175],{"class":148},[57,285,162],{"class":161},[57,287,180],{"class":148},[57,289,165],{"class":168},[57,291,172],{"class":161},[57,293,187],{"class":148},[57,295,162],{"class":161},[57,297,192],{"class":148},[57,299,195],{"class":168},[57,301,172],{"class":161},[57,303,304],{"class":148}," --node-image-only\n",[115,306,307],{},[118,308,309],{},[44,310,311],{},"Jeden Node verifizieren:",[48,313,315],{"className":135,"code":314,"language":137,"meta":53,"style":53},"kubectl get nodes -o custom-columns='NAME:.metadata.name,IMAGE:.metadata.labels.kubernetes\\.azure\\.com\u002Fnode-image-version,KERNEL:.status.nodeInfo.kernelVersion'\n",[23,316,317],{"__ignoreMap":53},[57,318,319,322,325,328,330,333,336,339],{"class":59,"line":60},[57,320,321],{"class":144},"kubectl",[57,323,324],{"class":148}," get",[57,326,327],{"class":148}," nodes",[57,329,206],{"class":148},[57,331,332],{"class":148}," custom-columns=",[57,334,335],{"class":161},"'",[57,337,338],{"class":148},"NAME:.metadata.name,IMAGE:.metadata.labels.kubernetes\\.azure\\.com\u002Fnode-image-version,KERNEL:.status.nodeInfo.kernelVersion",[57,340,341],{"class":161},"'\n",[115,343,344,350],{},[118,345,346,349],{},[44,347,348],{},"Kernel-Fix nachziehen:"," Sobald Node-Images mit gepatchtem Kernel verfügbar sind, aktualisieren Sie erneut. Erst dann ist die Lücke geschlossen.",[118,351,352,355],{},[44,353,354],{},"Routine etablieren:"," Automatische Node-OS-Updates mit festem Wartungsfenster sorgen dafür, dass der nächste Kernel-Fix keine Handarbeit mehr ist:",[48,357,359],{"className":135,"code":358,"language":137,"meta":53,"style":53},"az aks update -g \u003Crg> -n \u003Ccluster> --node-os-upgrade-channel NodeImage\naz aks maintenanceconfiguration add -g \u003Crg> --cluster-name \u003Ccluster> \\\n  --name aksManagedNodeOSUpgradeSchedule --schedule-type Weekly \\\n  --day-of-week Sunday --interval-weeks 1 --start-time 02:00 --duration 4\n",[23,360,361,396,431,447],{"__ignoreMap":53},[57,362,363,365,367,370,372,374,376,378,380,382,384,386,388,390,393],{"class":59,"line":60},[57,364,145],{"class":144},[57,366,149],{"class":148},[57,368,369],{"class":148}," update",[57,371,158],{"class":148},[57,373,162],{"class":161},[57,375,165],{"class":148},[57,377,169],{"class":168},[57,379,172],{"class":161},[57,381,187],{"class":148},[57,383,162],{"class":161},[57,385,180],{"class":148},[57,387,165],{"class":168},[57,389,172],{"class":161},[57,391,392],{"class":148}," --node-os-upgrade-channel",[57,394,395],{"class":148}," NodeImage\n",[57,397,398,400,402,405,408,410,412,414,416,418,420,422,424,426,428],{"class":59,"line":66},[57,399,145],{"class":144},[57,401,149],{"class":148},[57,403,404],{"class":148}," maintenanceconfiguration",[57,406,407],{"class":148}," add",[57,409,158],{"class":148},[57,411,162],{"class":161},[57,413,165],{"class":148},[57,415,169],{"class":168},[57,417,172],{"class":161},[57,419,175],{"class":148},[57,421,162],{"class":161},[57,423,180],{"class":148},[57,425,165],{"class":168},[57,427,172],{"class":161},[57,429,430],{"class":168}," \\\n",[57,432,433,436,439,442,445],{"class":59,"line":72},[57,434,435],{"class":148},"  --name",[57,437,438],{"class":148}," aksManagedNodeOSUpgradeSchedule",[57,440,441],{"class":148}," --schedule-type",[57,443,444],{"class":148}," Weekly",[57,446,430],{"class":168},[57,448,449,452,455,458,462,465,468,471],{"class":59,"line":78},[57,450,451],{"class":148},"  --day-of-week",[57,453,454],{"class":148}," Sunday",[57,456,457],{"class":148}," --interval-weeks",[57,459,461],{"class":460},"sbssI"," 1",[57,463,464],{"class":148}," --start-time",[57,466,467],{"class":148}," 02:00",[57,469,470],{"class":148}," --duration",[57,472,473],{"class":460}," 4\n",[115,475,476,482],{},[118,477,478,481],{},[44,479,480],{},"Angriffsfläche verkleinern:"," Blockieren Sie AF_ALG per Seccomp für nicht vertrauenswürdige Workloads, verzichten Sie auf privilegierte Pods und setzen Sie Pod Security Standards durch.",[118,483,484,487],{},[44,485,486],{},"Übrige Linux-Systeme einbeziehen:"," Eigene Kubernetes-Nodes, VMs, Bastion-Hosts und Build-Server brauchen dasselbe Kernel-Update samt Neustart.",[15,489,491],{"id":490},"fazit","Fazit",[11,493,494,495,500],{},"Copy Fail zeigt deutlich, dass Container keine Sicherheitsgrenze gegen Kernel-Fehler sind. Wer Node-Images nur bei Kubernetes-Upgrades erneuert, ist bei solchen Lücken zu langsam. Eine feste Routine aus automatischen Node-Image-Updates und Wartungsfenstern macht den nächsten Kernel-Patch zur Formsache. Wenn Sie dabei Unterstützung wünschen, ",[496,497,499],"a",{"href":498},"\u002Fkontakt","sprechen Sie uns an",".",[15,502,504],{"id":503},"quellen","Quellen",[115,506,507,515,522],{},[118,508,509],{},[496,510,514],{"href":511,"rel":512},"https:\u002F\u002Fgithub.com\u002FAzure\u002FAKS\u002Fissues\u002F5753",[513],"nofollow","Kernel LPE vulnerabilities – AKS remediation guidance (Issue #5753) – Azure\u002FAKS auf GitHub",[118,516,517],{},[496,518,521],{"href":519,"rel":520},"https:\u002F\u002Fcyberinsider.com\u002Fcisa-warns-copy-fail-linux-flaw-is-already-actively-exploited\u002F",[513],"CISA warns 'Copy Fail' Linux flaw is already actively exploited – CyberInsider",[118,523,524],{},[496,525,528],{"href":526,"rel":527},"https:\u002F\u002Fsecurityboulevard.com\u002F2026\u002F04\u002Fcve-2026-31431-copy-fail-linux-kernel-lpe\u002F",[513],"CVE-2026-31431 (Copy Fail): Linux Kernel LPE – Security Boulevard",[530,531,532],"style",{},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}",{"title":53,"searchDepth":66,"depth":66,"links":534},[535,536,537,538,539],{"id":17,"depth":66,"text":18},{"id":90,"depth":66,"text":91},{"id":106,"depth":66,"text":107},{"id":490,"depth":66,"text":491},{"id":503,"depth":66,"text":504},"\u002Fimages\u002Fnews\u002Fcopy-fail-linux-kernel-kubernetes-nodes.webp","2026-05-06","Die Linux-Lücke Copy Fail macht aus einem unprivilegierten Pod Root auf dem Node. Warum ein neues Container-Image nicht hilft und wie Sie AKS-Nodes absichern.","md",null,{},true,"\u002Fnews\u002Fcopy-fail-linux-kernel-kubernetes-nodes",{"title":5,"description":542},false,"news\u002Fcopy-fail-linux-kernel-kubernetes-nodes","GziFgASkNYtzzg4CtCS2p-1xhKPoaeqw2qJLm3hEUYU",1793714089371]