В некоторых версиях ядра Linux была обнаружена уязвимость локального повышения привилегий CVE-2026-31431. Из-за логического дефекта модуля algif_aead в криптографической подсистеме ядра Linux злоумышленники могут изменять содержимое кеша страниц любого читаемого файла, что позволит им повысить права до root и выйти за пределы контейнера.
На платформе Advanced затронуты операционные системы следующих версий:
Ubuntu 22.04
HCE OS 2.0
Выпуск патчей для этих образов с устранением уязвимости ожидается до 30.05.2026.
Отключите или не используйте модуль algif_aead:
Вы можете отключить модуль algif_aead на всех нодах с помощью DaemonSet:
Создайте YAML-файл и скопируйте в него следующий код:
apiVersion: apps/v1kind: DaemonSetmetadata:name: cve-2026-31431-fixnamespace: kube-systemlabels:app: cve-2026-31431-fixsecurity: vulnerability-mitigationspec:selector:matchLabels:app: cve-2026-31431-fixupdateStrategy:type: RollingUpdaterollingUpdate:maxUnavailable: 1template:metadata:labels:app: cve-2026-31431-fixspec:hostPID: truetolerations:# Tolerate all taints to ensure deployment on all worker nodes- operator: Existseffect: NoExecute- operator: Existseffect: NoScheduleinitContainers:- name: apply-fiximage: ubuntu:22.04command:- /bin/bash- -c- |set -eecho "========================================="echo "CVE-2026-31431 Fix"echo "Node: $(cat /host/etc/hostname 2>/dev/null || hostname)"echo "Date: $(date)"echo "========================================="echo ""echo "Step 1: Checking vulnerability before fix..."if nsenter -t 1 -m -u -i -n -p -- python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))"))' 2>/dev/null; thenecho "System is VULNERABLE - AF_ALG AEAD interface is accessible"elseecho "✓ AF_ALG AEAD interface is not accessible"fiecho ""echo "Step 2: Creating modprobe configuration..."# Create modprobe.d directory if it doesn't existmkdir -p /host/etc/modprobe.d# Disable algif_aead moduleecho "install algif_aead /bin/false" > /host/etc/modprobe.d/disable-algif.confecho "✓ Created /etc/modprobe.d/disable-algif.conf"echo ""echo "Step 3: Unloading algif_aead module if loaded..."chroot /host rmmod algif_aead 2>/dev/null && echo "✓ Module unloaded successfully" || echo "✓ Module was not loaded or already unloaded"echo ""echo "Step 4: Verifying the fix..."if [ -f /host/etc/modprobe.d/disable-algif.conf ]; thenecho "✓ Configuration file exists:"cat /host/etc/modprobe.d/disable-algif.confelseecho "✗ ERROR: Fix verification failed - configuration file not found"exit 1fiecho ""echo "Step 5: Testing if vulnerability is fixed..."if nsenter -t 1 -m -u -i -n -p -- python3 -c 'import socket; s = socket.socket(socket.AF_ALG, socket.SOCK_SEQPACKET, 0); s.bind(("aead","authencesn(hmac(sha256),cbc(aes))"))' 2>/dev/null; thenecho "✗ ERROR: AF_ALG AEAD is still accessible after fix!"exit 1elseecho "✓ AF_ALG AEAD interface is properly blocked"fiecho ""echo "========================================="echo "✓ CVE-2026-31431 fix applied successfully"echo "========================================="securityContext:privileged: truevolumeMounts:- name: host-rootmountPath: /hostresources:limits:cpu: 200mmemory: 128Micontainers:- name: monitorimage: ubuntu:22.04command:- /bin/bash- -c- |echo "CVE-2026-31431 fix monitoring started on node: $(cat /host/etc/hostname 2>/dev/null || hostname)"echo "Monitoring interval: 1 hour"# Keep the pod running and monitor the fixwhile true; dosleep 3600# Check if configuration file still existsif [ ! -f /host/etc/modprobe.d/disable-algif.conf ]; thenecho "[$(date)] WARNING: Fix configuration missing on $(cat /host/etc/hostname), reapplying..."mkdir -p /host/etc/modprobe.decho "install algif_aead /bin/false" > /host/etc/modprobe.d/disable-algif.confecho "[$(date)] Configuration restored"fi# Check if module is loaded (should not be)if chroot /host lsmod | grep -q algif_aead; thenecho "[$(date)] WARNING: algif_aead module is loaded on $(cat /host/etc/hostname), attempting to unload..."chroot /host rmmod algif_aead 2>/dev/null || echo "[$(date)] Could not unload module"fidonesecurityContext:privileged: truevolumeMounts:- name: host-rootmountPath: /hostresources:limits:cpu: 50mmemory: 64Mivolumes:- name: host-roothostPath:path: /type: Directory
Примените конфигурацию из YAML-файла:
$ kubectl apply -f <filename>.yaml