La vulnérabilité CVE-2026-31431 est une faille critique d'élévation de privilèges locale affectant le noyau Linux. Cette rubrique explique comment appliquer une atténuation provisoire en bloquant la création de sockets AF_ALG via un RPM livepatch, sans redémarrage. N'appliquez cette mesure que si vos services ne dépendent pas des sockets AF_ALG.
Une fois cette solution déployée, tout processus nécessitant des sockets
AF_ALGne peut plus les créer, ce qui risque d'indisponibiliser vos services. Ne procédez au déploiement que si vous avez la certitude que vos services n'utilisent pas les socketsAF_ALG.Cette solution comporte des risques pour la stabilité du système. Adoptez une approche progressive et évitez de l'appliquer simultanément à l'ensemble de votre environnement de production.
Pendant le déploiement progressif, surveillez attentivement la stabilité des services, les journaux d'erreurs et les métriques de performance. En cas d'anomalie, annulez immédiatement la modification.
Contexte
La vulnérabilité CVE-2026-31431 est une faille critique d'élévation de privilèges locale située dans le module algif_aead du noyau Linux.
En combinant une séquence spécifique d'appels de sockets AF_ALG avec l'appel système splice(), un attaquant peut contourner les vérifications de permissions standard. Il peut alors écrire 4 octets non autorisés dans le cache de pages d'un fichier arbitraire. Les attaquants exploitent cette faille pour altérer l'image en mémoire de programmes setuid tels que /usr/bin/su, passant ainsi d'un utilisateur standard à root sans modifier le contenu du fichier sur le disque.
Pour plus de détails, consultez [Avis de sécurité] Risque de vulnérabilité d'élévation de privilèges locale dans le noyau Linux (CVE-2026-31431).
Limitations
Cette atténuation désactive au niveau du noyau toutes les opérations de chiffrement et de déchiffrement utilisant des sockets AF_ALG. Les services dépendants de ces opérations cesseront de fonctionner. Vérifiez donc si vos services reposent sur les sockets AF_ALG avant d'appliquer cette mesure. En cas de doute concernant l'utilisation de la fonctionnalité de socket AF_ALG par vos services, ne poursuivez pas la procédure.
Pour déterminer si vos services utilisent des sockets AF_ALG pour des opérations cryptographiques au niveau du noyau, utilisez auditd ou eBPF (extended Berkeley Packet Filter) afin de surveiller la création de sockets AF_ALG. L'exemple suivant utilise auditd :
# First, ensure the auditd service is enabled.
systemctl start auditd
# If other audit rules are already configured on the system, back them up and assess the impact first.
# Add an audit rule for AF_ALG sockets.
auditctl -a always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
# After a period of time, check the audit results.
ausearch -k afalg_socket -ts recent -i
# Expected result: If any process created an AF_ALG socket during this period, audit records are displayed.
# When you are finished, delete the audit rule for AF_ALG sockets.
auditctl -d always,exit -F arch=b64 -S socket -F a0=38 -k afalg_socket
Ces vérifications sont fournies à titre indicatif uniquement et ne permettent pas d'exclure totalement une dépendance à AF_ALG. Examinez également le code source de votre application, la liste des dépendances ainsi que le comportement à l'exécution.
Application de l'atténuation
Avant de continuer, confirmez que vos services ne dépendent pas de la fonctionnalité de socket AF_ALG et que vous acceptez les limitations liées aux fonctionnalités AF_ALG.
Étape 1 : Vérification des prérequis
Avant le déploiement, vérifiez que votre système remplit les deux conditions suivantes :
La prise en charge de livepatch est activée dans le noyau.
Le paquet kernel-devel correspondant à la version actuelle du noyau est installé.
# 1. Check whether the kernel-devel package for the running kernel is installed.
test -d "/lib/modules/$(uname -r)/build" && echo "kernel-devel OK" || echo "Please install kernel-devel-$(uname -r)"
# If the package is missing, install it:
sudo yum install -y kernel-devel-$(uname -r)
# 2. Check whether livepatch support is enabled in the kernel.
test -d /sys/kernel/livepatch && echo "livepatch sysfs OK"
Étape 2 : Installation du paquet RPM
# 1. Download the RPM package for your operating system version. (The download links are protected by an allowlist. To get an authorized link, join DingTalk group 179525012975.)
# 2. Install the RPM package. For example, on Alibaba Cloud Linux 3:
sudo yum install disable-af-alg-livepatch-1.0.0-1.al8.noarch.rpm
Lors d'une mise à jour du noyau, réinstallez le paquet RPM correspondant pour maintenir l'atténuation active.
Étape 3 : Vérification de l'atténuation
Méthode 1 : Contrôle du statut livepatch
Cette méthode s'applique à Alibaba Cloud Linux 3 et Alibaba Cloud Linux 4 :
# Check the livepatch status.
kpatch list
# Expected output: "disable_af_alg [enabled]" appears in the "Loaded patch modules:" list.
Méthode 2 : Validation du blocage des sockets AF_ALG
Exécutez le script Python ci-dessous pour confirmer le blocage de la création de sockets AF_ALG :
python3 - <<'PY'
import socket, errno
try:
s = socket.socket(38, socket.SOCK_SEQPACKET, 0) # 38 = AF_ALG
print("AF_ALG socket create: SUCCESS (Mitigation is not effective)")
s.close()
except OSError as e:
if e.errno == errno.EAFNOSUPPORT:
print(f"AF_ALG socket create: FAILED (Mitigation is effective)")
else:
print(f"AF_ALG socket create: FAILED (Unexpected error),errno={e.errno}, msg={e.strerror}")
PY
Restauration
Si des problèmes de service surviennent après le déploiement, désinstallez l'atténuation :
sudo yum remove disable-af-alg-livepatch
Après la désinstallation, exécutez le script de vérification pour confirmer la suppression de l'interception des sockets AF_ALG.