Techsy
Liên hệ
Bắt đầu
Quay lại Blog
cybersecurity

Copy Fail (CVE-2026-31431): Cẩm nang vá khẩn cấp 60 phút cho Linux, Kubernetes và hạ tầng AI

Viết bởi Mert Batur Gürbüz
Cập nhật lần cuối May 5, 2026
19 phút đọc
Mục lục
Copy Fail (CVE-2026-31431): Cẩm nang vá khẩn cấp 60 phút cho Linux, Kubernetes và hạ tầng AI

Copy Fail (CVE-2026-31431): Cẩm nang vá khẩn cấp 60 phút cho Linux, Kubernetes và hạ tầng AI

Nếu bạn chạy Linux trên một máy chủ đa tenant, bạn chỉ có thời gian cho đến lần khởi động lại tiếp theo để khắc phục lỗ hổng copy fail. Bộ phận Tình báo Mối đe dọa của Microsoft đã công bố CVE-2026-31431 vào ngày 1 tháng 5 năm 2026 — ghi nhận công lao phát hiện thuộc về Theori và Xint với bài phân tích chi tiết 732 byte để đạt quyền root. Điểm CVSS là 7.8 (Cao), và CERT-EU đã ban hành cảnh báo 2026-005 cùng ngày.

Điều khiến Copy Fail khác biệt là gì: đây là lỗ hổng leo thang đặc quyền (LPE) lớn đầu tiên trên Linux vô hiệu hóa seccomp RuntimeDefault ngay từ đầu. Pod Kubernetes "an toàn" của bạn, dù tuân thủ Tiêu chuẩn Bảo mật Pod (Pod Security Standards) ở mức Restricted, vẫn nằm trong phạm vi ảnh hưởng. Hãy đọc và hành động ngay.

TL;DR: Những việc cần làm trong 60 phút tới

Nếu không đọc gì khác, hãy thực hiện ngay sáu bước sau:

  1. Tạm dừng triển khai sản xuất và chụp nhanh (snapshot) /var/log/auth.log cùng với kubectl get events -A trước khi bắt đầu xoay vòng bất kỳ thông tin xác thực nào.
  2. Chạy uname -r trên mọi node. Nếu phiên bản nhân (kernel) thấp hơn bản đã vá cho bản phân phối của bạn, bạn đang gặp rủi ro.
  3. Vô hiệu hóa algif_aead ngay lập tức: echo "blacklist algif_aead" > /etc/modprobe.d/copy-fail.conf && rmmod algif_aead.
  4. Áp dụng bản vá copy fail cho bản phân phối của bạn (Ubuntu USN, AlmaLinux ALSA, SUSE SU) và khởi động lại.
  5. Triển khai cấu hình seccomp Localhost từ chối socket(AF_ALG, ...) trên mọi node Kubernetes và tải lại kubelet.
  6. Kiểm tra 30 ngày gần nhất của auth.log + EDR để tìm các syscall socket(AF_ALG) bất thường và bất kỳ binary setuid mới nào.

Phần phân tích chi tiết bên dưới bao gồm các lệnh, bản vá cụ thể cho từng bản phân phối và cấu hình seccomp cho K8s.

Chuyện gì đã thực sự xảy ra: Bên trong CVE-2026-31431

CVE-2026-31431 ("Copy Fail") là một lỗ hổng leo thang đặc quyền trong nhân Linux nằm ở module algif_aead. Bằng cách mở một socket AF_ALG và kích hoạt splice() với một yêu cầu authenc-esn được tạo tinh vi, người dùng không có đặc quyền có thể gây ra ghi 4 byte vào bộ nhớ đệm trang (page-cache), làm hỏng các binary setuid và giành quyền root. Điểm CVSS là 7.8 (Cao).

Nguyên nhân gốc rễ bắt nguồn từ một tối ưu hóa mã hóa tại chỗ năm 2017 trong algif_aead, giao diện socket AF_ALG giúp phơi bày các nguyên thủy mã hóa của nhân ra không gian người dùng (userspace). Khi exploit của Xint đưa đúng yêu cầu authenc-esn vào socket và dẫn nó qua splice(), quá trình tối ưu hóa sẽ ghi 4 byte vượt quá vùng đệm dự định vào bộ nhớ đệm trang. Chọn đúng độ lệch (offset), và bạn có thể ghi đè lên /usr/bin/sudo hoặc bất kỳ binary setuid nào khác trên đĩa. Bản sửa lỗi chính thức đã được hợp nhất dưới dạng commit a664bf3d603d.

Exploit này rất nhỏ gọn. Xint đã công bố một PoC (Proof of Concept) hoạt động chỉ với 732 byte, và bề mặt kích hoạt có thể tiếp cận từ bên trong một container. Đó là phần khiến bạn phải lo lắng.

Nếu so sánh "Dirty Pipe vs Copy Fail" nghe có vẻ quen thuộc, thì sự so sánh đó là hợp lý. Cả hai đều là LPE nhân Linux tạo ra các ghi tùy ý vào bộ nhớ đệm trang. Dirty Pipe (CVE-2022-0847) lạm dụng splice() vào một pipe; còn Copy Fail lạm dụng splice() vào một socket algif_aead. Cả hai đều bỏ qua các mặc định seccomp tiêu chuẩn của container. Điểm khác biệt của Copy Fail là đường dẫn AF_ALG có thể tiếp cận được từ Tiêu chuẩn Bảo mật Pod (PSS) Restricted với RuntimeDefault, cùng kịch bản xử lý nhưng bề mặt nhân khác nhau. Chúng tôi đã đề cập đến mô hình phản ứng sau vụ vi phạm Vercel và cấu trúc đó áp dụng trơn tru ở đây.

Bạn có bị ảnh hưởng không? Sàng lọc trong 5 phút

Chạy uname -r và so sánh với phiên bản nhân đã vá cho bản phân phối của bạn: Ubuntu 6.19.12, AlmaLinux/RHEL 7.0, SUSE 6.18.22. Sau đó chạy lsmod | grep algif_aead. Nếu module đang được tải và nhân của bạn cũ hơn phiên bản đã vá, bạn đang gặp rủi ro. Nếu module vắng mặt nhưng /etc/modprobe.d không liệt kê nó vào danh sách đen, bạn vẫn gặp rủi ro.

Chạy bốn lệnh sau trên mọi máy chủ Linux bạn vận hành, theo thứ tự:

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

Lưu ý trung thực: nếu lsmod trả về kết quả rỗng cho algif_aead, bạn chưa an toàn. Một người dùng không có đặc quyền có thể tự chạy modprobe algif_aead trên hầu hết các bản phân phối, vì kmod không kiểm soát khả năng (capability) đối với các module đủ điều kiện tự động tải. "Module chưa tải" không đồng nghĩa với "module không thể tiếp cận" cho đến khi bạn thêm tệp danh sách đen ở bước 3 của phần TL;DR.

Chúng tôi đã thử nghiệm việc gỡ bỏ algif_aead trên Ubuntu 24.04 LTS và Kubernetes 1.30 với containerd 1.7. Module được tải lại bình thường cho bất kỳ người dùng nào có quyền truy cập shell cho đến khi chúng tôi thêm /etc/modprobe.d/copy-fail.conf. Hãy coi việc liệt kê vào danh sách đen là yêu cầu cơ bản, không phải kế hoạch dự phòng.

Tại sao các ngăn xếp AI/ML và Kubernetes có rủi ro cao hơn

Các khối lượng công việc AI tự lưu trữ (self-hosted) dễ bị tổn thương hơn vì chúng thường xuyên thực thi mã không đáng tin cậy: các artifact từ HuggingFace, máy chủ MCP, agent runners, các tác vụ tinh chỉnh mô hình từ dữ liệu người dùng và CI/CD runners xây dựng các container mô hình. Tiêu chuẩn Bảo mật Pod (PSS) Restricted không chặn socket(AF_ALG, ...) theo mặc định, nên một pod suy luận bị xâm nhập có thể chiếm quyền điều khiển nhân máy chủ. Juliet.sh đã xác nhận trực tiếp điều này trong một bài kiểm tra K8s có kiểm soát.

Năm điểm chịu tác động nặng nề nhất:

  • Các máy chủ suy luận tự lưu trữ như vLLM, sglang, Ollama và Ray Serve, thường là đa tenant và thường xuyên chạy các adapter LoRA do người dùng cung cấp hoặc mã công cụ. Bài so sánh vLLM và sglang của chúng tôi đề cập đến hình thái vận hành; cả hai đều chạy êm ái trên một pod containerd vanilla với RuntimeDefault.
  • Máy chủ MCP, nơi các plugin bên thứ ba thực thi shell, phân tích cú pháp đầu vào của người dùng và có thể chạy trong cùng một pod với chính mô hình. Bất kỳ ai từng xây dựng các runtime agent duy trì trạng thái đều biết ranh giới tin cậy mong manh như thế nào.
  • CI/CD runners xây dựng image ML kéo các artifact HuggingFace tùy ý và chạy pip install từ các nguồn không đáng tin cậy, tất cả đều dưới UID của runner.
  • Các nền tảng Agent, nơi theo định nghĩa, mã agent do người dùng kiểm soát tại thời gian chạy. Nếu bạn vận hành các nền tảng triển khai agent, mọi plugin và tiện ích mở rộng công cụ đều nằm trong phạm vi ảnh hưởng.
  • Các node GPU, thường mạnh mẽ, đa tenant và thường chạy với hồ sơ bảo mật nới lỏng để truy cập CUDA/driver. Đây cũng là những máy có chi phí cao nhất của bạn. Các đội ngũ chạy LLM cục bộ trên các rig GPU chia sẻ là mục tiêu rõ ràng.

Ví dụ cụ thể: một người dùng tải lên một adapter LoRA bao gồm requirements.txt với một gói độc hại. pip install chạy dưới UID của container suy luận. Container đó, ngay cả khi ở PSS Restricted với RuntimeDefault, có thể gọi socket(AF_ALG, ...) và kích hoạt Copy Fail. Bạn vừa mất quyền kiểm soát máy chủ. Mọi pod khác chia sẻ node đó giờ đều nằm trong bán kính nổ.

Cẩm nang vá khẩn cấp 60 phút

Vá Copy Fail trong 60 phút bằng cách thực hiện năm giai đoạn theo thứ tự: Đóng băng (5 phút, tạm dừng auto-deploy, snapshot log), Phát hiện (10 phút, uname -r và lsmod cho mỗi node), Giảm thiểu (15 phút, danh sách đen modprobe cộng với cấu hình seccomp), Vá lỗi (20 phút, cập nhật nhân bản phân phối cộng với khởi động lại luân phiên) và Xác minh (10 phút, xác nhận lsmod rỗng và uname -r khớp với phiên bản đã vá).

Mục tiêu là hoàn tất việc vá, xác minh và đưa hệ thống trở lại hoạt động trong dưới một giờ. Chúng tôi đã chia nhỏ thành năm giai đoạn chặt chẽ.

Giai đoạn 1 — Đóng băng (0:00–0:05)

Tạm dừng auto-deploy, snapshot log, hoãn apt upgrade/dnf update cho đến khi bạn đã ghi lại trạng thái hiện tại.

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

Giai đoạn 2 — Phát hiện (0:05–0:15)

Chạy bộ bốn lệnh sàng lọc từ phần H2 trước đó đối với mọi máy chủ. Đối với Kubernetes, lệnh một dòng này chạy uname -r trên mọi node:

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

Quy tắc Falco được công bố bởi Sysdig (Unexpected AF_ALG Socket Creation) cũng đáng để triển khai tại đây nếu bạn chưa làm. Nó sẽ kích hoạt ngay khi Giai đoạn 3 kết thúc nếu vẫn có thứ gì đó đang cố gắng thực thi.

Giai đoạn 3 — Giảm thiểu (0:15–0:30)

Vô hiệu hóa algif_aead. Đây là chuỗi lệnh vô hiệu hóa algif_aead; nó không yêu cầu khởi động lại và áp dụng trong vài giây.

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"

Đồng thời, triển khai ngay cấu hình seccomp copy fail từ H2 #7 vào thư mục seccomp của kubelet. Đừng chờ đến Giai đoạn 4.

Giai đoạn 4 — Vá lỗi (0:30–0:50)

Áp dụng các bản vá cho từng bản phân phối. Bảng dưới đây có lệnh một dòng cho mỗi bản phân phối. Đối với Kubernetes, mô hình an toàn là 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

Trong các lần chạy thử nghiệm của chúng tôi, chuỗi modprobe + rmmod mất khoảng 8 giây mỗi node; việc cài đặt nhân + khởi động lại mất 3–5 phút mỗi node tùy thuộc vào bản phân phối. Hãy dự trù thời gian đó cho toàn bộ hạ tầng của bạn.

Giai đoạn 5 — Xác minh (0:50–1:00)

Chạy lại quy trình sàng lọc. Xác nhận lsmod | grep algif_aead trả về rỗng, uname -r khớp với phiên bản đã vá và kubectl get nodes hiển thị mọi node ở trạng thái Ready trên nhân mới.

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}'

Lưu ý trung thực: nếu bạn không thể khởi động lại trong 60 phút tới (do cửa sổ thay đổi tuân thủ, SLA hướng tới khách hàng), thì sự kết hợp giữa danh sách đen modprobe và cấu hình seccomp là đủ cho đến khi bạn có thể vá. Cả hai đều áp dụng mà không cần khởi động lại. Lên lịch cài đặt nhân vào cửa sổ bảo trì tiếp theo và bạn sẽ được giảm thiểu rủi ro bền vững trong thời gian chờ đợi.

Lệnh vá theo từng bản phân phối

Phiên bản nhân đã vá: 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. Chạy lệnh cập nhật cụ thể cho bản phân phối, sau đó khởi động lại.

Bản phân phốiPhiên bản bị ảnh hưởngPhiên bản đã váLệnh vá (sau đó khởi động lại)Cảnh báo bảo mật
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

Hai lưu ý cụ thể cho từng bản phân phối đáng được nêu bật:

  • RHEL. Nếu dnf update kernel không hiển thị phiên bản mới hơn, hãy chạy subscription-manager refresh && subscription-manager repos --enable=rhel-9-for-x86_64-baseos-rpms và thử lại. Kho lưu trữ base RHEL 9 mang bản vá đầu tiên.
  • SUSE. zypper update kernel-default là gói đúng trên SLE 15 SP6 với hương vị nhân (kernel flavor) mặc định; chuyển sang kernel-azure hoặc kernel-rt nếu bạn đang dùng các hương vị đó. Xác minh với zypper info kernel-default sau khi cập nhật.

Đối với lệnh vá copy fail ubuntu, lệnh một dòng ở trên là đường dẫn chính thức được Canonical khuyến nghị; trang USN liên kết cùng meta-package linux-image-generic across HWE và GA stacks.

Giảm thiểu Kubernetes & Container: Tại sao RuntimeDefault là chưa đủ

Tiêu chuẩn Bảo mật Pod (PSS) Restricted của Kubernetes với seccompProfile.type: RuntimeDefault không chặn socket(AF_ALG, ...). Để ngăn chặn Copy Fail ở lớp container, hãy triển khai cấu hình Localhost seccomp từ chối rõ ràng họ socket AF_ALG, hoặc sử dụng cấu hình seccomp containerd upstream từ moby/moby PR #52501 một khi nó được phát hành cho runtime của bạn.

Cấu hình Localhost khắc phục giảm thiểu copy fail kubernetes bao gồm bốn phần: một cấu hình seccomp JSON, một đoạn mã pod-spec sử dụng nó, một mẫu DaemonSet cho mỗi đám mây để triển khai và một lệnh xác minh. Đặt JSON bên dưới vào /var/lib/kubelet/seccomp/profiles/copy-fail.json trên mọi node:

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"
    }
  ]
}

Sau đó, opt-in mọi khối lượng công việc vào nó thông qua 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

Đối với Kubernetes được quản lý trên đám mây, mẫu DaemonSet hoạt động trên cả năm nhà cung cấp lớn. Dưới đây là ma trận giảm thiểu copy fail AKS / copy fail EKS:

Nhà cung cấpĐường dẫn cấu hìnhCơ chế phân phốiLưu ý
AKS (Azure)/var/lib/kubelet/seccomp/profiles/DaemonSet ghi tệp qua hostPath; kubelet sẽ nhận diện. Xem Azure/AKS#5753.Sử dụng image node dựa trên Mariner để có bản vá trong cây nhanh hơn
EKS (AWS)/var/lib/kubelet/seccomp/profiles/DaemonSet + EKS-optimized AMI 1.30+Bottlerocket nhận bản vá nhân qua auto-update; Amazon Linux 2023 cần dnf update kernel
GKE (Google)/var/lib/kubelet/seccomp/profiles/DaemonSet hoạt động ở chế độ standard; Autopilot không cho phép hostPath, sử dụng NodeConfigCOS-117+ đi kèm nhân đã vá
OVHcloud MKS/var/lib/kubelet/seccomp/profiles/DaemonSet, theo blog Copy Fail của OVHcloudOVH công bố làm mới image node được quản lý theo chu kỳ 7 ngày
DigitalOcean DOKS/var/lib/kubelet/seccomp/profiles/DaemonSet; image node DO tự động cập nhật khi roll pool tiếp theoCần roll pool để vá nhân, DaemonSet lấp đầy khoảng trống

Một DaemonSet đơn giản thả cấu hình vào đúng vị trí, khi bạn đang triển khai các khối lượng công việc suy luận trên Kubernetes được quản lý:

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 }

Xác minh nó đã được áp dụng:

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

Chúng tôi đã triển khai cấu hình Localhost qua DaemonSet trên một cụm AKS 5 node. Kubelet nhận diện nó trong vòng 30 giây mà không cần khởi động lại node, và một pod thử nghiệm gọi socket(AF_ALG, ...) nhận ngay lập tức lỗi EPERM.

Lưu ý trung thực: nếu bạn chạy dịch vụ K8s được quản lý không phơi bày thư mục seccomp của kubelet (một số dịch vụ K8s serverless ẩn nó), thì danh sách đen modprobe trên mọi template node là con đường duy nhất của bạn. Đưa danh sách đen vào image node, triển khai lại node pool và xác minh với kubectl debug.

Phát hiện: Cách biết nếu bạn đã bị khai thác

Tìm kiếm trong /var/log/auth.log và journalctl -u containerd các syscall socket(AF_ALG, ...) bất thường trong 30 ngày qua. Kiểm tra các binary setuid mới với find / -perm -4000 -newer /etc/shadow -mtime -30. Sysdig công bố một quy tắc Falco (Unexpected AF_ALG Socket Creation); Microsoft Defender XDR cung cấp chữ ký 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

Nếu bạn tìm thấy một kết quả khớp (một binary setuid mới mà bạn không triển khai, hoặc một sự kiện tải kernel algif_aead liên quan đến một người dùng không mong đợi), hãy coi đó là một sự xâm nhập đã được xác nhận. Xoay vòng thông tin xác thực, cô lập máy chủ, leo thang lên đội ngũ phản ứng sự cố của bạn và xem xét liệu đồng hồ thông báo 72 giờ của GDPR đã bắt đầu hay chưa. Chi phí của việc phản ứng thái quá là một cửa sổ bảo trì; chi phí của việc phản ứng thiếu là 18 tháng tiếp theo trong sự nghiệp của bạn.

Củng cố: Cách tồn tại qua CVE nhân tiếp theo mà không cần báo động khẩn cấp

Copy Fail sẽ không phải là CVE nhân cuối cùng vô hiệu hóa RuntimeDefault. Sáu điều bạn có thể làm trong quý này để khiến lần tiếp theo ít đau đớn hơn:

  • Bề mặt module nhân tối thiểu. Liệt kê vào danh sách đen algif_*, bluetooth, dccp, tipc, sctp, cifs nếu bạn không sử dụng chúng. Hầu hết các khối lượng công việc đều không cần.
  • Seccomp default-deny trên mọi khối lượng công việc. Biến các cấu hình Localhost thành tiêu chuẩn. RuntimeDefault là sàn nhà, không phải trần nhà.
  • Làm mới node dựa trên image (Talos Linux, Bottlerocket, Flatcar). Khởi động lại nguyên tử, nhân bất biến, khôi phục dễ dàng.
  • Giám sát runtime. Falco hoặc Tetragon bắt các syscall bất thường trong thời gian thực. Kết hợp nó với khả năng quan sát runtime cho các khối lượng công việc AI nơi bề mặt syscall rộng hơn.
  • Cảnh báo các sự kiện tải module nhân ngắn hạn trong SIEM của bạn. Nếu algif_aead ever loads on a production host that doesn't need it, you want to know in seconds.
  • Ghim các phiên bản K8s và image node vào một đường cơ sở mà bạn actively security-track. Các thẻ floating là một sự cố tương lai đang chờ xảy ra.

Đó là bài học mà Copy Fail dạy chúng ta trước khi cái tiếp theo xuất hiện. Các đội ngũ sẽ xử lý zero-day tiếp theo trong 30 phút thay vì 60 là những đội đã triển khai sáu biện pháp kiểm soát này.

Câu hỏi thường gặp

Tôi có bị ảnh hưởng bởi Copy Fail (CVE-2026-31431) không?

Gần như chắc chắn là có nếu bạn chạy bất kỳ bản phân phối Linux lớn nào trên nhân được phát hành trước ngày 1 tháng 5 năm 2026 và bạn cho phép truy cập shell không đặc quyền. Điều này bao gồm mọi máy chủ đa tenant, mọi worker Kubernetes và mọi CI runner. Chạy uname -r và kiểm tra đối với bảng phiên bản đã vá ở trên. CVSS là 7.8.

Cụm Kubernetes của tôi có dễ bị tổn thương ngay cả với PSS Restricted không?

Có. Tiêu chuẩn Bảo mật Pod (PSS) Restricted với seccompProfile.type: RuntimeDefault không chặn socket(AF_ALG, ...). Juliet.sh đã kiểm tra trực tiếp điều này: một pod chạy với PSS Restricted cộng với RuntimeDefault đã chiếm quyền nhân máy chủ qua Copy Fail. Bạn cần một cấu hình seccomp Localhost (được cung cấp trong phần giảm thiểu K8s ở trên).

Docker Desktop có chặn Copy Fail không?

Cấu hình seccomp mặc định của Docker Desktop đã từ chối nhiều syscall nhưng không chặn AF_ALG cho đến khi moby/moby PR #52501 được hợp nhất. Cập nhật Docker lên một bản phát hành bao gồm cấu hình đã vá (Docker 29.x backport), hoặc áp dụng thủ công cấu hình seccomp. Các bản cài đặt Docker Linux không có bản cập nhật đó vẫn bị phơi nhiễm.

Seccomp RuntimeDefault có ngăn chặn được điều này không?

Không. RuntimeDefault là cấu hình runtime container chưa sửa đổi (mặc định của Docker/containerd). Nó cho phép socket(AF_ALG, ...) vì các khối lượng công việc hợp lệ đôi khi sử dụng API mã hóa nhân. Bản sửa lỗi là một cấu hình Localhost từ chối rõ ràng AF_ALG (JSON đầy đủ trong phần K8s) hoặc nâng cấp lên mặc định của moby/moby PR #52501.

Nếu tôi không thể khởi động lại nhân ngay bây giờ thì sao?

Sự kết hợp giữa danh sách đen modprobe và cấu hình seccomp Localhost từ chối socket(AF_ALG, ...) là đủ cho đến khi bạn có thể vá. Cả hai đều áp dụng mà không cần khởi động lại. Thêm blacklist algif_aead vào /etc/modprobe.d/copy-fail.conf, chạy rmmod algif_aead, triển khai cấu hình seccomp và khởi động lại vào cửa sổ bảo trì tiếp theo.

Copy Fail có đang bị khai thác trong thực tế không?

Tính đến ngày 5 tháng 5 năm 2026, bài đăng tình báo mối đe dọa của Microsoft không xác nhận việc khai thác trong thực tế nhưng mô tả lỗ hổng là "dễ dàng vũ khí hóa" (trivially weaponizable) do exploit 732 byte đã công bố của Xint. Lớp nguyên thủy exploit (ghi bộ nhớ đệm trang qua splice) trùng lặp với Dirty Pipe (CVE-2022-0847), vốn đã bị khai thác rộng rãi trong vòng vài tuần sau khi công bố.

Copy Fail có ảnh hưởng cụ thể đến các khối lượng công việc AI/ML không?

Có, một cách disproportionate. Suy luận tự lưu trữ (vLLM, sglang, Ollama), agent runtimes, máy chủ MCP và các bản build CI cho image ML thường xuyên thực thi mã người dùng không đáng tin cậy. Bất kỳ thứ nào trong số này trong một container, ngay cả trên PSS Restricted, đều có thể kích hoạt Copy Fail và chiếm quyền máy chủ. Các node GPU là hồ sơ rủi ro cao nhất vì chúng thường là đa tenant.

Copy Fail khác với Dirty Pipe như thế nào?

Cả hai đều là LPE nhân Linux tạo ra các ghi bộ nhớ đệm trang tùy ý, nhưng bề mặt kích hoạt khác nhau: Dirty Pipe lạm dụng splice() vào một pipe, Copy Fail lạm dụng splice() vào một socket algif_aead (AF_ALG). Cả hai đều bỏ qua các mặc định seccomp container tiêu chuẩn. Điểm khác biệt của Copy Fail: đường dẫn AF_ALG có thể tiếp cận được từ Tiêu chuẩn Bảo mật Pod (PSS) Restricted với RuntimeDefault.

Kết luận

Copy Fail có thể được vá trong khoảng 60 phút nếu bạn thực hiện trọn vẹn cẩm nang: danh sách đen modprobe, cập nhật nhân, cấu hình seccomp, xác minh. Khía cạnh Kubernetes và hạ tầng AI là điều khiến CVE này khác biệt so với một LPE thông thường: PSS Restricted với RuntimeDefault sẽ không cứu được bạn, và một pod suy luận bị xâm nhập duy nhất có thể chiếm quyền máy chủ. Danh sách đen modprobe cộng với cấu hình seccomp Localhost là biện pháp phòng thủ bền vững ngay cả sau khi bạn vá.

Muốn có thêm một cặp mắt xem xét runbook phản ứng sự cố của bạn, hoặc một đường cơ sở K8s được củng cố trước khi CVE nhân tiếp theo xuất hiện? Liên hệ với Techsy. Chúng tôi thực hiện củng cố nền tảng cho các ngăn xếp AI/ML sản xuất.

Cập nhật lần cuối 2026-05-05. Chúng tôi sẽ quét bài viết để tìm các cảnh báo bản phân phối mới vào ngày 2026-05-12.

Thẻ

copy failCVE-2026-31431linux kernelAF_ALGalgif_aeadbảo mật kubernetesseccompleo thang đặc quyềnphản ứng sự cốbảo mật hạ tầng ai

Chia sẻ bài viết này

Bài viết liên quan

Thêm từ chuyên mục cybersecurity

cybersecurity
Jul 23, 2026

Danh sách kiểm tra bảo mật SaaS trước khi ra mắt: 40 bước chúng tôi thực hiện đầu tiên (2026)

Hầu hết các danh sách kiểm tra khi ra mắt chỉ cho bạn biết cần bảo mật cái gì mà không bao giờ chỉ cách làm. Danh sách này cung cấp mã nguồn: 40 bước kiểm tra trước khi ra mắt covering bí mật, xác thực, cô lập tenant, phụ thuộc, header và giám sát, cộng với lỗi sai chúng tôi phát hiện trong hầu hết mọi lần đánh giá.

12 min read phút đọc
Đọc
cybersecurity
May 20, 2026

GitHub bị tấn công qua tiện ích mở rộng VS Code (Tháng 5/2026): Quy trình khẩn cấp 60 phút mà mọi lập trình viên cần thực hiện ngay tối nay

GitHub xác nhận khoảng 3.800 kho mã nguồn nội bộ đã bị đánh cắp thông qua một tiện ích mở rộng VS Code độc hại vào ngày 20 tháng 5 năm 2026. Dưới đây là quy trình 60 phút mà mọi lập trình viên nên thực hiện trước khi đi ngủ — cùng với những hiểu lầm mà các tiêu đề báo chí thường mắc phải.

14 min read phút đọc
Đọc
cybersecurity
May 8, 2026

Cách AI Ngăn Chặn Rò Rỉ Dữ Liệu: 7 Lớp Phòng Thủ Đã Chặn Đứng Các Cuộc Tấn Công Thật (2026)

Ngày 30 tháng 4 năm 2026, khoảng 275 triệu học sinh phát hiện hệ thống LMS của mình đã bị xâm phạm. Liệu AI có thể ngăn được không? Đây là 7 lớp phòng thủ đã làm được điều đó, và cách đưa chúng vào ứng dụng của bạn ngay trong tuần này.

13 min read phút đọc
Đọc
Xem tất cả bài viết
Khởi động dự án của bạn

Sẵn sàng tạo nên điều gì đó đột phá?

Hãy biến tầm nhìn của bạn thành hiện thực. Đội ngũ của chúng tôi sẵn sàng đồng hành cùng bạn tạo ra phần mềm tạo nên sự khác biệt.

Đặt lịch gọi ý tưởng 30 phútXem dự án của chúng tôi

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • 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.

Tự động hoá AI

Xem tất cả
  • 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.

Công cụ hot trong kho

Claude Skills

Xem tất cả
  • 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.

Tự động hoá AI

Xem tất cả
  • 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.

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ

Pháp lý

  • Chính sách quyền riêng tư
  • Điều khoản dịch vụ
  • Chính sách cookie

Dịch vụ

  • Giải pháp doanh nghiệp
  • Ứng dụng di động
  • Ứng dụng web

Giải pháp

  • Hệ thống CRM
  • Tích hợp AI
  • Giải pháp ERP
  • Voice Agent
  • Tự động hóa quy trình
  • Bảo mật thông tin

Thư viện

  • Blog
  • Dự án

Cộng đồng

  • Tự động hoá AI
  • Claude Skills

Công cụ

  • Tính phí làm ứng dụng mobile
  • Tính phí dùng OpenAI / LLM API
  • Tính phí làm MVP
  • Tính phí làm Voice AI Agent

Công ty

  • Giới thiệu
  • Cộng sự
  • Liên hệ
Pháp lýChính sách quyền riêng tưĐiều khoản dịch vụChính sách cookie
TECHSY
© 2026 Techsy. Bảo lưu mọi quyền.