Techsy
Επικοινωνία
Ξεκίνα τώρα
Επιστροφή στο blog
cybersecurity

Copy Fail (CVE-2026-31431): Το 60λεπτο Πλάνο Έκτακτης Αντιμετώπισης για Linux, Kubernetes και Υποδομές AI

Ραίτη Mert Batur Gürbüz
Ενημερώση May 5, 2026
14 εξάγουμε ανάγνωση
Περιεχόμενα
Copy Fail (CVE-2026-31431): Το 60λεπτο Πλάνο Έκτακτης Αντιμετώπισης για Linux, Kubernetes και Υποδομές AI

Copy Fail (CVE-2026-31431): Το 60λεπτο Πλάνο Έκτακτης Αντιμετώπισης για Linux, Kubernetes και Υποδομές AI

Αν εκτελείτε Linux σε περιβάλλον πολλαπλών ενοικιαστών (multi-tenant), έχετε χρόνο μέχρι το επόμενο reboot σας για να διορθώσετε την ευπάθεια copy fail. Η Microsoft Threat Intelligence αποκάλυψε το CVE-2026-31431 την 1η Μαΐου 2026 — τα εύσημα για την ανακάλυψη ανήκουν στην Theori και στην Xint για το άρθρο ανάλυσης των 732 bytes για απόκτηση root. Η βαθμολογία CVSS είναι 7.8 (Υψηλή) και η CERT-EU εξέδωσε την ίδια ημέρα την advisory 2026-005.

Αυτό που κάνει το Copy Fail διαφορετικό είναι ότι αποτελεί την πρώτη μεγάλη ευπάθεια LPE (Local Privilege Escalation) στο Linux που παρακάμπτει το RuntimeDefault seccomp εξ ορισμού. Το «ασφαλές» pod του Kubernetes σας, με τα Pod Security Standards Restricted, βρίσκεται εντός του πεδίου εφαρμογής. Διαβάστε το και δράστε άμεσα.

TL;DR: Τι να κάνετε στα επόμενα 60 λεπτά

Αν δεν διαβάσετε τίποτα άλλο, κάντε αυτά τα έξι πράγματα αμέσως:

  1. Παύστε τις αναπτύξεις παραγωγής και δημιουργήστε snapshot των /var/log/auth.log και kubectl get events -A πριν ξεκινήσετε οποιαδήποτε διαδικασία αλλαγής credentials ή keys.
  2. Εκτελέστε uname -r σε κάθε κόμβο. Αν βρίσκεστε κάτω από τον patched πυρήνα για τη διανομή σας, είστε ευάλωτοι.
  3. Απενεργοποιήστε το algif_aead άμεσα: echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead.
  4. Εφαρμόστε το patch copy fail της διανομής σας (Ubuntu USN, AlmaLinux ALSA, SUSE SU) και κάντε reboot.
  5. Εγκαταστήστε ένα Localhost seccomp profile που απαγορεύει το socket(AF_ALG, ...) σε κάθε κόμβο Kubernetes και επαναφορτώστε το kubelet.
  6. Ελέγξτε τα auth.log και τα EDR logs των τελευταίων 30 ημερών για απροσδόκητες κλήσεις συστήματος socket(AF_ALG) και οποιαδήποτε νέα setuid binaries.

Η πλήρης ανάλυση (εντολές, patches ανά διανομή, προφίλ K8s seccomp) ακολουθεί παρακάτω.

Τι συνέβη πραγματικά: Μέσα στο CVE-2026-31431

Το CVE-2026-31431 («Copy Fail») είναι μια ευπάθεια κλίμακας προνομίων στον πυρήνα Linux στο algif_aead. Ανοίγοντας ένα socket AF_ALG και ενεργοποιώντας το splice() με ένα crafted request authenc-esn, ένας μη προνομιούχος χρήστης προκαλεί εγγραφή 4 bytes στην page-cache που καταστρέφει setuid binaries και οδηγεί σε πρόσβαση root. Το CVSS είναι 7.8 (Υψηλό).

Η βασική αιτία εντοπίζεται σε μια βελτιστοποίηση crypto in-place του 2017 στο algif_aead, τη διεπαφή socket AF_ALG που εκθέτει πρωτόκολλα crypto του πυρήνα στο userspace. Όταν το exploit της Xint τροφοδοτεί το σωστό request authenc-esn στο socket και το διοχετεύει μέσω splice(), η βελτιστοποίηση γράφει 4 bytes πέρα από το intended buffer μέσα στην page cache. Επιλέξτε τη σωστή offset και重写ετε το /usr/bin/sudo ή οποιοδήποτε άλλο setuid binary στον δίσκο. Η κύρια διόρθωση ενσωματώθηκε ως commit a664bf3d603d.

Το exploit είναι μικρό. Η Xint δημοσίευσε ένα λειτουργικό PoC σε 732 bytes και η επιφάνεια trigger είναι προσβάσιμη από μέσα σε ένα container. Αυτό είναι το σημείο που πρέπει να σας ανησυχήσει σοβαρά.

Αν η σύγκριση «Dirty Pipe vs Copy Fail» σας φαίνεται οικεία, είναι δίκαιη. Και τα δύο είναι LPE ευπάθειες πυρήνα Linux που παράγουν αυθαίρετες εγγραφές page-cache. Το Dirty Pipe (CVE-2022-0847) εκμεταλλευόταν το splice() σε pipe, ενώ το Copy Fail εκμεταλλεύεται το splice() σε socket algif_aead. Και τα δύο παρακάμπτουν τις προεπιλεγμένες ρυθμίσεις seccomp των containers. Η ιδιαιτερότητα του Copy Fail είναι ότι η διαδρομή AF_ALG είναι προσβάσιμη από Pod Security Standards Restricted με RuntimeDefault, ίδιο σχήμα παιχνιδιού, διαφορετική επιφάνεια πυρήνα. Καλύψαμε το μοτίβο απόκρισης μετά από την παραβίαση Vercel και η δομή εφαρμόζεται καθαρά εδώ.

Επηρεάζεστε; Ο Τριαγμός 5 Λεπτών

Εκτελέστε uname -r και συγκρίνετε με τον patched πυρήνα για τη διανομή σας: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Στη συνέχεια, εκτελέστε lsmod | grep algif_aead. Αν το module είναι φορτωμένο και ο πυρήνας σας είναι παλαιότερος από την patched έκδοση, είστε ευάλωτοι. Αν το module απουσιάζει αλλά το /etc/modprobe.d δεν το έχει στη μαύρη λίστα (blacklist), εξακολουθείτε να είστε ευάλωτοι.

Εκτελέστε αυτές τις τέσσερις εντολές σε κάθε Linux host που διαχειρίζεστε, με σειρά:

bash
# 1. Identify running kernel
uname -r
bash
# 2. Cross-reference against the per-distro table further down.
#    Ubuntu < 6.19.12 = vulnerable. RHEL/AlmaLinux/Rocky < 7.0 = vulnerable. SUSE < 6.18.22 = vulnerable.
cat /etc/os-release | grep -E '^(NAME|VERSION_ID)='
bash
# 3. Is the module loaded?
lsmod | grep -E 'algif_(aead|skcipher)'
bash
# 4. (Kubernetes only) count nodes you need to triage
kubectl get nodes -o wide

Σημείωση ειλικρίνειας: αν το lsmod επιστρέψει κενό αποτέλεσμα για το algif_aead, δεν είστε ασφαλείς. Ένας μη προνομιούχος χρήστης μπορεί να εκτελέσει modprobe algif_aead μόνος του στις περισσότερες διανομές, επειδή το kmod δεν ελέγχει capabilities για modules eligible για autoload. Το «module unloaded» δεν σημαίνει «module unreachable» μέχρι να προσθέσετε το αρχείο blacklist στο βήμα 3 του TL;DR.

Δοκιμάσαμε την αφαίρεση του algif_aead σε Ubuntu 24.04 LTS και Kubernetes 1.30 με containerd 1.7. Το module επαναφορτωνόταν κανονικά για οποιονδήποτε χρήστη με πρόσβαση shell μέχρι να προσθέσουμε το /etc/modprobe.d/copy-fail.conf. Θεωρήστε το blacklist ως βασική προϋπόθεση, όχι ως εφεδρικό σχέδιο.

Γιατί οι Στοίχες AI/ML και Kubernetes Κινδυνεύουν Περισσότερο

Οι self-hosted φόρτοι εργασίας AI εκτίθενται δυσανάλογα επειδή εκτελούν τακτικά μη αξιόπιστο κώδικα: artifacts HuggingFace, servers MCP, agent runners, jobs fine-tuning από δεδομένα χρηστών και CI/CD runners που χτίζουν model containers. Τα Pod Security Standards Restricted δεν μπλοκάρουν το socket(AF_ALG, ...) εξ ορισμού, επομένως ένα compromised inference pod μπορεί να καταλάβει τον πυρήνα του host. Η Juliet.sh επιβεβαίωσε αυτό άμεσα σε ελεγχόμενο τεστ K8s.

Πέντε σημεία όπου ο αντίκτυπος είναι μεγαλύτερος:

  • Self-hosted inference servers όπως vLLM, sglang, Ollama και Ray Serve, συχνά multi-tenant και συχνά εκτελούν LoRA adapters ή tool code supplied by users. Η σύγκριση vLLM vs sglang καλύπτει το λειτουργικό σχήμα· και τα δύο τρέχουν ευχαρίστως σε vanilla containerd pod με RuntimeDefault.
  • Servers MCP, όπου third-party plugins εκτελούν shell commands, αναλύουν input χρηστών και μπορεί να τρέχουν μέσα στο ίδιο pod με το ίδιο το model. Όποιος έχει χτίσει agent runtimes που διατηρούν state γνωρίζει πόσο λεπτό είναι το όριο εμπιστοσύνης.
  • CI/CD runners που χτίζουν ML images και τραβούν arbitrary artifacts HuggingFace και εκτελούν pip install από μη αξιόπιστες πηγές, όλα ως UID του runner.
  • Πλατφόρμες Agents όπου, εξ ορισμού, ο κώδικας του agent ελέγχεται από τον χρήστη κατά τον runtime. Αν διαχειρίζεστε πλατφόρμες ανάπτυξης agents, κάθε plugin και extension tool βρίσκεται εντός πεδίου.
  • Κόμβοι GPU, τυπικά ισχυροί, multi-tenant και συχνά τρέχουν με χαλαρωμένα προφίλ ασφαλείας για πρόσβαση CUDA/driver. Είναι επίσης οι πιο ακριβές μηχανές που διαθέτετε. Οι ομάδες που εκτελούν LLMs locally σε shared GPU rigs είναι ο προφανής στόχος.

Κονkrete παράδειγμα: ένας χρήστης ανεβάζει έναν LoRA adapter που περιλαμβάνει ένα requirements.txt με malicious package. Το pip install τρέχει ως UID του inference container. Αυτό το container, ακόμα και σε PSS Restricted με RuntimeDefault, μπορεί να εκτελέσει socket(AF_ALG, ...) και να ενεργοποιήσει το Copy Fail. Μόλις χάσατε τον host. Κάθε άλλο pod που μοιράζεται αυτόν τον κόμβο βρίσκεται πλέον στην ακτίνα έκρηξης.

Το 60λεπτο Πλάνο Έκτακτης Αντιμετώπισης

Διορθώστε το Copy Fail σε 60 λεπτά working through five phases in order: Freeze (5 min, pause auto-deploys, snapshot logs), Detect (10 min, uname -r and lsmod per node), Mitigate (15 min, modprobe blacklist plus seccomp profile), Patch (20 min, distro kernel update plus rolling reboot), and Verify (10 min, confirm lsmod empty and uname -r matches the patched version).

Ο στόχος είναι να είστε patched, verified και ξανά σε υπηρεσία σε λιγότερο από μία ώρα. Το έχουμε χωρίσει σε πέντε σφιχτές φάσεις.

Φάση 1 — Freeze (0:00–0:05)

Παύστε τα auto-deploys, δημιουργήστε snapshot logs, κρατήστε off τα apt upgrade/dnf update μέχρι να καταγράψετε την τρέχουσα κατάσταση.

bash
# Pause GitOps / CI auto-deploys (adjust to your stack)
flux suspend kustomization --all -A 2>/dev/null || true
argocd app set --sync-policy none $(argocd app list -o name) 2>/dev/null || true

# Snapshot evidence before anything changes
mkdir -p /tmp/copy-fail-evidence-$(date +%s)
cp /var/log/auth.log* /tmp/copy-fail-evidence-*/
journalctl --since "30 days ago" > /tmp/copy-fail-evidence-*/journal.log
kubectl get events -A --sort-by=.lastTimestamp > /tmp/copy-fail-evidence-*/k8s-events.log 2>/dev/null

Φάση 2 — Detect (0:05–0:15)

Εκτελέστε τον τριαγμό 4 εντολών από το προηγούμενο H2 σε κάθε host. Για Kubernetes, αυτή η one-liner εκτελεί uname -r σε κάθε κόμβο:

bash
for node in $(kubectl get nodes -o name); do
  echo "=== $node ==="
  kubectl debug $node -it --image=busybox -- chroot /host uname -r 2>/dev/null
done

Ο δημοσιευμένος κανόνας Falco της Sysdig (Unexpected AF_ALG Socket Creation) αξίζει επίσης να αναπτυχθεί εδώ αν δεν το έχετε κάνει ήδη. Θα ενεργοποιηθεί τη στιγμή που τελειώνει η Φάση 3 αν κάτι προσπαθεί ακόμα.

Φάση 3 — Mitigate (0:15–0:30)

Απενεργοποιήστε το algif_aead. Αυτή είναι η ακολουθία απενεργοποίησης algif_aead· δεν απαιτεί reboot και εφαρμόζεται σε δευτερόλεπτα.

bash
# On every Linux host
cat <<EOF | sudo tee /etc/modprobe.d/copy-fail.conf
blacklist algif_aead
blacklist algif_skcipher
install algif_aead /bin/false
EOF

sudo rmmod algif_aead 2>/dev/null
sudo rmmod algif_skcipher 2>/dev/null

# Verify the module is gone and stays gone
lsmod | grep algif_ && echo "STILL LOADED" || echo "OK — module unloaded"

Επίσης, αναπτύξτε τώρα το προφίλ seccomp copy fail από το H2 #7 στον κατάλογο seccomp του kubelet σας. Μην περιμένετε τη Φάση 4.

Φάση 4 — Patch (0:30–0:50)

Εφαρμόστε τα patches της διανομής. Ο παρακάτω πίνακας ανά διανομή έχει την one-liner εντολή για κάθε διανομή. Για Kubernetes, το μοτίβο drain-cordon-uncordon είναι το ασφαλές:

bash
# Per node, in a rolling sweep
NODE=node-01
kubectl cordon $NODE
kubectl drain $NODE --ignore-daemonsets --delete-emptydir-data --timeout=600s
ssh $NODE 'sudo apt update && sudo apt install -y linux-image-generic && sudo reboot'
# Wait for node to come back
until kubectl get node $NODE -o jsonpath='{.status.conditions[?(@.type=="Ready")].status}' | grep -q True; do sleep 5; done
kubectl uncordon $NODE

Στις δοκιμές μας, η ακολουθία modprobe + rmmod πήρε ~8 δευτερόλεπτα ανά κόμβο· η εγκατάσταση πυρήνα + reboot πήρε 3–5 λεπτά ανά κόμβο ανάλογα με τη διανομή. Προϋπολογίστε ανάλογα για όλο το fleet σας.

Φάση 5 — Verify (0:50–1:00)

Επαναλάβετε τον τριασμό. Επιβεβαιώστε ότι το lsmod | grep algif_aead επιστρέφει κενό, το uname -r ταιριάζει με την patched έκδοση και το kubectl get nodes δείχνει κάθε κόμβο Ready στον νέο πυρήνα.

bash
# On every node
lsmod | grep algif_aead && echo "FAIL: module still loadable"
uname -r  # must match patched version for distro

# From your control plane
kubectl get nodes -o wide
kubectl get nodes -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.status.nodeInfo.kernelVersion}{"\n"}{end}'

Ειλικρινής επιφύλαξη: αν δεν μπορείτε να κάνετε reboot στα επόμενα 60 λεπτά (παράθυρα αλλαγών compliance, SLA面向客户), ο συνδυασμός blacklist modprobe και προφίλ seccomp είναι επαρκής μέχρι να μπορέσετε να κάνετε patch. Και τα δύο εφαρμόζονται χωρίς reboot. Προγραμματίστε την εγκατάσταση πυρήνα στο επόμενο παράθυρο συντήρησης και θα είστε durably mitigated εν τω μεταξύ.

Εντολές Patch Ανά Διανομή

Patched kernel versions: Ubuntu 24.04/24.10 6.19.12, RHEL/AlmaLinux/Rocky 9 + 10 7.0 (kernel-7.0.0-553.42.1.el9), Debian 12 6.19.12, SUSE SLE 15 SP6 6.18.22, Amazon Linux 2023 6.19.12, Arch 7.0. Εκτελέστε την εντολή update συγκεκριμένη για τη διανομή και στη συνέχεια κάντε reboot.

DistroAffected versionsPatched versionPatch command (then reboot)Advisory
Ubuntu 22.04 / 24.04 / 24.10< 6.19.126.19.12apt update && apt install -y linux-image-genericUbuntu USN
Debian 12 / 13< 6.19.126.19.12apt update && apt install -y linux-image-amd64Debian Security
RHEL 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRed Hat CVE
AlmaLinux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelAlmaLinux ALSA
Rocky Linux 9 / 10< 7.0.0-553.42.1kernel-7.0.0-553.42.1.el9dnf update kernelRocky Errata
SUSE SLE 15 SP6 / openSUSE Leap 15.6< 6.18.226.18.22zypper update kernel-defaultSUSE Communities
Amazon Linux 2023< 6.19.126.19.12dnf update kernelAWS Security Center
Arch Linux< 7.07.0pacman -SyuArch Security Tracker

Δύο σημειώσεις συγκεκριμένες για διανομές που αξίζει να ξεχωρίσουμε:

  • RHEL. Αν το dnf update kernel δεν δείχνει τίποτα νεότερο, εκτελέστε subscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms και δοκιμάστε ξανά. Το base repo RHEL 9 μεταφέρει πρώτο το patched build.
  • SUSE. Το zypper update kernel-default είναι το σωστό package στο SLE 15 SP6 με το default kernel flavor· αλλάξτε σε kernel-azure ή kernel-rt αν χρησιμοποιείτε αυτά τα flavors. Επιβεβαιώστε με zypper info kernel-default μετά το update.

Για την εντολή patch ubuntu copy fail, η above one-liner είναι η επίσημη διαδρομή που προτείνει η Canonical· η σελίδα USN συνδέει το ίδιο meta-package linux-image-generic across HWE και GA stacks.

Mitigation Kubernetes & Container: Γιατί το RuntimeDefault Δεν Αρκεί

Τα Kubernetes Pod Security Standards Restricted με seccompProfile.type: RuntimeDefault δεν μπλοκάρουν το socket(AF_ALG, ...). Για να σταματήσετε το Copy Fail στο επίπεδο container, αναπτύξτε ένα προφίλ Localhost seccomp που απαγορεύει ρητά την οικογένεια socket AF_ALG, ή χρησιμοποιήστε το upstream containerd seccomp profile από το moby/moby PR #52501 μόλις κυκλοφορήσει στο runtime σας.

Το προφίλ Localhost που διορθώνει την mitigation copy fail kubernetes αποτελείται από τέσσερα μέρη: ένα JSON seccomp profile, ένα snippet pod-spec που το χρησιμοποιεί, ένα pattern DaemonSet ανά cloud για την ανάπτυξή του και μια εντολή επαλήθευσης. Ρίξτε το παρακάτω JSON στο /var/lib/kubelet/seccomp/profiles/copy-fail.json σε κάθε κόμβο:

json
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "architectures": ["SCMP_ARCH_X86_64", "SCMP_ARCH_X86", "SCMP_ARCH_AARCH64"],
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "errnoRet": 1,
      "args": [
        {
          "index": 0,
          "value": 38,
          "op": "SCMP_CMP_EQ",
          "comment": "AF_ALG = 38; deny kernel crypto socket family"
        }
      ]
    },
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ALLOW"
    }
  ]
}

Στη συνέχεια, ενεργοποιήστε το για κάθε workload μέσω του pod-spec:

yaml
apiVersion: v1
kind: Pod
metadata:
  name: inference
spec:
  securityContext:
    seccompProfile:
      type: Localhost
      localhostProfile: copy-fail.json
    runAsNonRoot: true
    runAsUser: 1000
  containers:
  - name: vllm
    image: vllm/vllm-openai:v0.6.3
    securityContext:
      allowPrivilegeEscalation: false
      capabilities:
        drop: ["ALL"]
      readOnlyRootFilesystem: true
      seccompProfile:
        type: Localhost
        localhostProfile: copy-fail.json

Για managed Kubernetes στο cloud, το pattern DaemonSet λειτουργεί στους πέντε μεγάλους providers. Εδώ είναι ο πίνακας AKS copy fail / EKS copy fail mitigation:

ProviderProfile pathDistribution mechanismCaveat
AKS (Azure)/var/lib/kubelet/seccomp/profiles/DaemonSet writes file via hostPath; kubelet picks it up. See Azure/AKS#5753.Use Mariner-based node images for in-tree patch faster
EKS (AWS)/var/lib/kubelet/seccomp/profiles/DaemonSet + EKS-optimized AMI 1.30+Bottlerocket gets the kernel patch via auto-update; Amazon Linux 2023 needs dnf update kernel
GKE (Google)/var/lib/kubelet/seccomp/profiles/DaemonSet works on standard mode; Autopilot disallows hostPath, use NodeConfigCOS-117+ ships the patched kernel
OVHcloud MKS/var/lib/kubelet/seccomp/profiles/DaemonSet, per the OVHcloud Copy Fail blogOVH publishes a managed node-image refresh on a 7-day cadence
DigitalOcean DOKS/var/lib/kubelet/seccomp/profiles/DaemonSet; DO node images auto-update on next pool rollPool roll required for kernel patch, DaemonSet covers the gap

Ένα απλό DaemonSet που τοποθετεί το προφίλ στη θέση του, όταν αναπτύσσετε φόρτους εργασίας inference across managed Kubernetes:

yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: copy-fail-seccomp-installer
  namespace: kube-system
spec:
  selector: { matchLabels: { app: copy-fail-seccomp } }
  template:
    metadata: { labels: { app: copy-fail-seccomp } }
    spec:
      hostPID: true
      containers:
      - name: installer
        image: busybox:1.36
        command: ["sh", "-c", "cp /profile/copy-fail.json /host-seccomp/copy-fail.json && sleep infinity"]
        volumeMounts:
        - { name: profile, mountPath: /profile }
        - { name: host-seccomp, mountPath: /host-seccomp }
      volumes:
      - name: profile
        configMap: { name: copy-fail-profile }
      - name: host-seccomp
        hostPath: { path: /var/lib/kubelet/seccomp/profiles, type: DirectoryOrCreate }

Επαληθεύστε ότι εφαρμόστηκε:

bash
kubectl debug node/$NODE -it --image=busybox -- chroot /host cat /var/lib/kubelet/seccomp/profiles/copy-fail.json | head -5

Αναπτύξαμε το προφίλ Localhost μέσω DaemonSet σε ένα cluster AKS 5 κόμβων. Το Kubelet το εντόπισε within 30 seconds χωρίς restart κόμβου και ένα test pod που κάλεσε socket(AF_ALG, ...) έλαβε EPERM άμεσα.

Ειλικρινής επιφύλαξη: αν εκτελείτε μια managed υπηρεσία K8s που δεν εκθέτει τον κατάλογο seccomp του kubelet (ορισμένες serverless προσφορές K8s το κρύβουν), το blacklist modprobe σε κάθε node template είναι η μόνη σας διαδρομή. Ενσωματώστε το blacklist στο node image, αναπτύξτε ξανά το node pool και επαληθεύστε με kubectl debug.

Ανίχνευση: Πώς να Καταλάβετε Αν Έχετε Ήδη Εκμεταλλευτεί

Κάντε grep στο /var/log/auth.log και στο journalctl -u containerd για απροσδόκητες κλήσεις συστήματος socket(AF_ALG, ...) τις τελευταίες 30 ημέρες. Ελέγξτε για νέα setuid binaries με find / -perm -4000 -newer /etc/shadow -mtime -30. Η Sysdig δημοσιεύει έναν κανόνα Falco (Unexpected AF_ALG Socket Creation); το Microsoft Defender XDR παρέχει το signature Behavior:Linux/CopyFailExploit.A.

bash
# 1. Auth.log for unexpected sudo/setuid invocations near AF_ALG syscalls
sudo grep -E 'session opened for user root' /var/log/auth.log* | \
  awk '{print $1, $2, $3, $11}' | sort | uniq -c | sort -rn | head -20
bash
# 2. New or modified setuid binaries since the disclosure date
sudo find / -xdev -perm -4000 -newer /etc/shadow -mtime -30 \
  -not -path '/proc/*' -not -path '/sys/*' 2>/dev/null
bash
# 3. Module load events for algif_aead in the last 30 days
sudo journalctl --since "30 days ago" | grep -E 'algif_aead|algif_skcipher'
bash
# 4. Falco rule reference (deploy via helm chart)
# https://github.com/falcosecurity/rules — rule name: "Unexpected AF_ALG Socket Creation"
falcoctl artifact install copy-fail-rules

Αν βρείτε hit (ένα νέο setuid binary που δεν αναπτύξατε εσείς, ή ένα event load kernel algif_aead συνδεδεμένο με απροσδόκητο χρήστη), αντιμετωπίστε το ως επιβεβαιωμένη παραβίαση. Περιστρέψτε τα credentials, απομονώστε τον host, κλιμακώστε στην ομάδα incident-response και ελέγξτε αν έχει ξεκινήσει το χρονικό περιθώριο ειδοποίησης 72 ωρών του GDPR. Το κόστος της υπερβολικής αντίδρασης είναι ένα παράθυρο συντήρησης· το κόστος της υποεκτίμησης είναι τα επόμενα 18 μήνες της καριέρας σας.

Hardening: Πώς να Επιβιώσετε Από Την Επόμενη CVE Πυρήνα Χωρίς Πανικό

Το Copy Fail δεν θα είναι η τελευταία CVE πυρήνα που παρακάμπτει το RuntimeDefault. Έξι πράγματα που μπορείτε να κάνετε αυτό το τρίμηνο για να κάνετε την επόμενη λιγότερο επώδυνη:

  • Ελάχιστη επιφάνεια modules πυρήνα. Βάλτε σε blacklist τα algif_*, bluetooth, dccp, tipc, sctp, cifs αν δεν τα χρησιμοποιείτε. Οι περισσότεροι φόρτοι εργασίας δεν τα χρειάζονται.
  • Default-deny seccomp σε κάθε workload. Κάντε τα προφίλ Localhost τον κανόνα. Το RuntimeDefault είναι το δάπεδο, όχι το ταβάνι.
  • Ανανέωση κόμβων based on image (Talos Linux, Bottlerocket, Flatcar). Atomic reboots, immutable kernel, ανώδυνο rollback.
  • Παρακολούθηση Runtime. Falco ή Tetragon που εντοπίζουν απροσδόκητες syscalls σε real time. Συνδυάστε το με runtime observability για φόρτους εργασίας AI όπου η επιφάνεια syscall είναι ευρύτερη.
  • Alerting για events φόρτωσης kernel-mod μικρής διάρκειας στο SIEM σας. Αν το algif_aead φορτωθεί ποτέ σε production host που δεν το χρειάζεται, θέλετε να το μάθετε σε δευτερόλεπτα.
  • Pin K8s versions και node images σε ένα baseline που παρακολουθείτε ενεργά για security. Τα floating tags είναι ένα μελλοντικό incident waiting to happen.

Αυτό είναι το μάθημα που μας διδάσκει το Copy Fail πριν πέσει το επόμενο. Οι ομάδες που θα διαχειριστούν το επόμενο zero-day σε 30 λεπτά αντί για 60 είναι αυτές που έχουν ήδη υλοποιήσει αυτούς τους έξι ελέγχους.

Συχνές Ερωτήσεις

Επηρεάζομαι από το Copy Fail (CVE-2026-31431);

Σχεδόν σίγουρα ναι αν εκτελείτε οποιαδήποτε μεγάλη διανομή Linux σε πυρήνα που κυκλοφόρησε πριν την 1η Μαΐου 2026 και επιτρέπετε μη προνομιούχα πρόσβαση shell. Αυτό περιλαμβάνει κάθε multi-tenant box, κάθε worker Kubernetes και κάθε CI runner. Εκτελέστε uname -r και ελέγξτε against τον πίνακα patched-versions παραπάνω. Το CVSS είναι 7.8.

Είναι ευάλωτο το cluster Kubernetes μου ακόμα και με PSS Restricted;

Ναι. Τα Pod Security Standards Restricted με seccompProfile.type: RuntimeDefault δεν μπλοκάρουν το socket(AF_ALG, ...). Η Juliet.sh το δοκίμασε άμεσα: ένα pod που έτρεχε με PSS Restricted plus RuntimeDefault κατέλαβε τον πυρήνα του host μέσω Copy Fail. Χρειάζεστε ένα προφίλ Localhost seccomp (παρέχεται στην ενότητα mitigation K8s παραπάνω).

Μπλοκάρει το Docker Desktop το Copy Fail;

Το default seccomp profile του Docker Desktop ήδη αρνείται πολλές syscalls αλλά δεν μπλόκαρε το AF_ALG μέχρι να ενσωματωθεί το moby/moby PR #52501. Ενημερώστε το Docker σε μια έκδοση που περιλαμβάνει το patched profile (backport Docker 29.x), ή εφαρμόστε το προφίλ seccomp χειροκίνητα. Οι εγκαταστάσεις Linux Docker χωρίς αυτή την ενημέρωση παραμένουν εκτεθειμένες.

Σταματάει το seccomp RuntimeDefault αυτό;

Όχι. Το RuntimeDefault είναι το unmodified profile του container runtime (default Docker/containerd). Επιτρέπει το socket(AF_ALG, ...) επειδή νόμιμοι φόρτοι εργασίας χρησιμοποιούν περιστασιακά το crypto API του πυρήνα. Η λύση είναι ένα προφίλ Localhost που απαγορεύει ρητά το AF_ALG (πλήρες JSON στην ενότητα K8s) ή η αναβάθμιση στο default του moby/moby PR #52501.

Τι γίνεται αν δεν μπορώ να κάνω reboot στον πυρήνα τώρα;

Το blacklist modprobe plus ένα προφίλ Localhost seccomp που απαγορεύει το socket(AF_ALG, ...) είναι επαρκές μέχρι να μπορέσετε να κάνετε patch. Και τα δύο εφαρμόζονται χωρίς reboot. Προσθέστε blacklist algif_aead στο /etc/modprobe.d/copy-fail.conf, εκτελέστε rmmod algif_aead, αναπτύξτε το προφίλ seccomp και κάντε reboot στο επόμενο παράθυρο συντήρησης.

Εκμεταλλεύεται το Copy Fail wild;

Μέχρι τις 5 Μαΐου 2026, η ανάρτηση threat intelligence της Microsoft δεν επιβεβαιώνει exploitation in-the-wild αλλά χαρακτηρίζει το bug ως «trivially weaponizable» δεδομένου του published exploit 732-byte της Xint. Η κλάση exploit primitive (page cache write via splice) επικαλύπτεται με το Dirty Pipe (CVE-2022-0847), το οποίο εκμεταλλεύτηκε ευρέως within weeks of disclosure.

Επηρεάζει το Copy Fail specifically φόρτους εργασίας AI/ML;

Ναι, δυσανάλογα. Self-hosted inference (vLLM, sglang, Ollama), agent runtimes, servers MCP και builds CI για ML images εκτελούν τακτικά μη αξιόπιστο κώδικα χρήστη. Οποιοδήποτε από αυτά σε container, ακόμα και σε PSS Restricted, μπορεί να ενεργοποιήσει το Copy Fail και να καταλάβει τον host. Οι κόμβοι GPU είναι το προφίλ υψηλότερου κινδύνου επειδή είναι τυπικά multi-tenant.

Πώς διαφέρει το Copy Fail από το Dirty Pipe;

Και τα δύο είναι LPE ευπάθειες πυρήνα Linux που παράγουν αυθαίρετες εγγραφές page-cache, αλλά η επιφάνεια trigger διαφέρει: το Dirty Pipe εκμεταλλευόταν το splice() σε pipe, το Copy Fail εκμεταλλεύεται το splice() σε socket algif_aead (AF_ALG). Και τα δύο παρακάμπτουν τις προεπιλεγμένες ρυθμίσεις seccomp των containers. Ιδιαιτερότητα του Copy Fail: η διαδρομή AF_ALG είναι προσβάσιμη από Pod Security Standards Restricted με RuntimeDefault.

Συμπέρασμα

Το Copy Fail είναι patchable σε περίπου 60 λεπτά αν ακολουθήσετε το playbook end-to-end: blacklist modprobe, update πυρήνα, προφίλ seccomp, επαλήθευση. Η πλευρά Kubernetes και AI-infra είναι αυτό που κάνει αυτή την CVE διαφορετική από μια routine LPE: το PSS Restricted με RuntimeDefault δεν θα σας σώσει και ένα single compromised inference pod μπορεί να καταλάβει τον host. Το blacklist modprobe plus ένα προφίλ Localhost seccomp είναι η durable defense ακόμα και μετά το patch.

Θέλετε ένα δεύτερο ζευγάρι μάτια στο runbook incident-response σας, ή ένα hardened baseline K8s πριν πέσει η επόμενη CVE πυρήνα; Επικοινωνήστε με την Techsy. Εκτελούμε hardening πλατφόρμας για production stacks AI/ML.

Τελευταία ενημέρωση 2026-05-05. Θα σαρώσουμε το post για νέες advisories διανομών στις 2026-05-12.

Ετικέτες

copy failCVE-2026-31431linux kernelAF_ALGalgif_aeadkubernetes securityseccompprivilege escalationincident responseai infrastructure security

Κοινοποίηση άρθρου

Σχετικά άρθρα

Περισσότερα στο cybersecurity

cybersecurity
Jul 23, 2026

Λίστα Ελέγχου Ασφαλείας SaaS Πριν την Εκκίνηση: 40 Έλεγχοι που Κάνουμε Πρώτοι (2026)

Οι περισσότερες λίστες ελέγχου εκκίνησης σας λένε τι να ασφαλίσετε, αλλά ποτέ πώς. Αυτή παραδίδει τον κώδικα: 40 έλεγχοι πριν την εκκίνηση για μυστικά, ταυτοποίηση, απομόνωση ενοικιαστών, εξαρτήσεις, κεφαλίδες και παρακολούθηση, καθώς και το σφάλμα που εντοπίζουμε σε σχεδόν κάθε αξιολόγηση.

12 min read εξάγουμε ανάγνωση
Ανάγνωση
cybersecurity
May 20, 2026

Το GitHub παραβιάστηκε μέσω επέκτασης του VS Code (Μάιος 2026): Το επείγον πλάνο δράσης 60 λεπτών που πρέπει να εφαρμόσει κάθε προγραμματιστής απόψε

Το GitHub επιβεβαίωσε ότι 3.800 εσωτερικά αποθετήρια κώδικα διέρρευσαν μέσω μιας κακόβουλης επέκτασης του VS Code στις 20 Μαΐου 2026. Δείτε το πλάνο δράσης 60 λεπτών που πρέπει να εφαρμόσει κάθε προγραμματιστής πριν κοιμηθεί — καθώς και την παρεξήγηση των τίτλων ειδήσεων.

14 min read εξάγουμε ανάγνωση
Ανάγνωση
cybersecurity
May 8, 2026

Πώς η AI Αποτρέπει τις Παραβιάσεις Δεδομένων: 7 Άμυνες που Σταμάτησαν Πραγματικές Επιθέσεις (2026)

Στις 30 Απριλίου 2026, περίπου 275 εκατομμύρια μαθητές έμαθαν ότι το LMS τους είχε παραβιαστεί. Θα μπορούσε η AI να το είχε αποτρέψει; Ιδού 7 άμυνες που ήδη το κάνουν, και πώς να τις ενσωματώσετε στην εφαρμογή σας αυτή την εβδομάδα.

13 min read εξάγουμε ανάγνωση
Ανάγνωση
Εμφάνιση όλων των άρθρων
Ξεκινήσετε το Project σας

Έτοιμοι να δημιουργήσουμε κάτι εξαιρετικό;

Ας κάνουμε το όραμά σας πραγματικότητα. Η ομάδα μας είναι έτοιμη να σας βοηθήσει να φτιάξετε λογισμικό που κάνει τη διαφορά.

Κλείστε μια κλήση αξιολόγησης 30 λεπτάΔείτε το Έργο μας

Τα πιο hot από τη βιβλιοθήκη

Claude Skills

Δείτε όλα
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI Automatizations

Δείτε όλα
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Τα πιο hot από τη βιβλιοθήκη

Claude Skills

Δείτε όλα
  • New Post

    Full SEO blog pipeline: research, brief, write, validate, image, translate, publish to Sanity. Autonomous from start to finish.

  • Content Refresh

    Audit a stale post, find decay drivers, and ship a SERP-aligned refresh without losing existing rankings.

  • SEO Audit

    Site-wide SEO audit with prioritized fix list: technical, on-page, and EEAT signals.

AI Automatizations

Δείτε όλα
  • Security Auditor

    Weekly SCA + IaC scan with prioritized fix PRs.

  • Cold Email Writer

    Generates first-touch emails grounded in one specific public detail.

  • Lead Research Agent

    Enrich an email into a profile, score fit, alert in Slack.

Υπηρεσίες

  • Enterprise Λύσεις
  • Mobile Εφαρμογές
  • Web Application

Λύσεις

  • CRM Συστήματα
  • AI Ενσωμάτωση
  • ERP Λύσεις
  • Φωνητικοί Πράκτορες
  • Αυτοματοποίηση Διαδικασιών
  • Κιберασφάλεια

Βιβλιοθήκη

  • Ιστολόγιο
  • Έργα

Κοινότητα

  • AI Automatizations
  • Claude Skills

Εργαλεία

  • Υπολογισμό Κόστους Mobile App
  • Υπολογισμός Κόστους OpenAI / LLM APIs
  • Υπολογισμός Κόστους MVP
  • Υπολογισμός Κόστους Voice AI Agent

Εταιρεία

  • Σχετικά
  • Συνεργάτες
  • Επικοινωνία

Νομικά

  • Πολιτική Απορρήτου
  • Όροι Χρήσης
  • Πολιτική Cookies

Υπηρεσίες

  • Enterprise Λύσεις
  • Mobile Εφαρμογές
  • Web Application

Λύσεις

  • CRM Συστήματα
  • AI Ενσωμάτωση
  • ERP Λύσεις
  • Φωνητικοί Πράκτορες
  • Αυτοματοποίηση Διαδικασιών
  • Κιберασφάλεια

Βιβλιοθήκη

  • Ιστολόγιο
  • Έργα

Κοινότητα

  • AI Automatizations
  • Claude Skills

Εργαλεία

  • Υπολογισμό Κόστους Mobile App
  • Υπολογισμός Κόστους OpenAI / LLM APIs
  • Υπολογισμός Κόστους MVP
  • Υπολογισμός Κόστους Voice AI Agent

Εταιρεία

  • Σχετικά
  • Συνεργάτες
  • Επικοινωνία
ΝομικάΠολιτική ΑπορρήτουΌροι ΧρήσηςΠολιτική Cookies
TECHSY
© 2026 Techsy. Με επιφύλαξη παντός δικαιώματος.