Ubuntu 26.04 : une mise à jour du noyau casse les conteneurs
Un correctif de sécurité du noyau Ubuntu 26.04 modifie l'empilement des profils AppArmor : les conteneurs refusent les signaux et gosu, PostgreSQL ou Percona se bloquent.

Une récente mise à jour du noyau d'Ubuntu 26.04 peut interrompre sans prévenir des services conteneurisés. Un ingénieur confronté au problème en redimensionnant un groupe de nœuds Kubernetes explique comment un correctif de sécurité d'AppArmor pousse les conteneurs à rejeter des signaux, même entre processus du même utilisateur.
Les symptômes
Sont concernés Ubuntu 26.04 ou les noyaux intégrant le rétroportage à partir de 7.0.0-41, y compris les builds cloud comme linux-aws et linux-azure. Il faut aussi le paramètre kernel.apparmor_restrict_unprivileged_unconfined=1, activé par défaut en 26.04, et containerd ou Docker avec le profil AppArmor standard : autrement dit presque tout hôte Kubernetes, k3s, RKE2 ou Docker.
On observe un Permission denied sur kill dans le conteneur malgré un uid identique et sans seccomp ; gosu et les binaires Go appelant setuid tournent à 100 % de CPU sans journaux ni démarrage du service ; PostgreSQL signale « could not signal for checkpoint: Permission denied ». Le journal du noyau affiche apparmor="DENIED" operation="signal" avec le pair cri-containerd.apparmor.d//&unconfined.
L'auteur l'a découvert quand plusieurs pods Percona Operator for MySQL (PXC) ne redémarraient pas après le redémarrage des nœuds. Une solution rapide consiste à désactiver AppArmor dans la ressource personnalisée, ou à envoyer le signal depuis le nœud en root. Les pods applicatifs sont ensuite restés bloqués à cause de gosu, ce qui a imposé de modifier un chart Helm.
Le mécanisme
Depuis février 2025, Ubuntu empêche un processus unconfined sans CAP_MAC_OVERRIDE de simplement changer de profil : le nouveau profil est empilé au-dessus d'unconfined. Le commit 08c2f7c8d4b1 (CVE-2026-90231) a corrigé un contournement et impose désormais cet empilement aussi lors de l'exec. Comme runc abandonne les capabilities avant l'exec, tout conteneur au profil standard s'exécute sous l'étiquette composite cri-containerd.apparmor.d//&unconfined (docker-default//&unconfined avec Docker).
Le modèle de profil de containerd n'autorise signaux et ptrace que depuis le nom exact cri-containerd.apparmor.d. L'étiquette composite n'y correspond pas : le noyau refuse donc les signaux, même entre threads d'un même conteneur.
Chronologie et état
Le dernier noyau épargné est le 7.0.0-38.38. La version 7.0.0-42.42 est arrivée dans resolute-updates, avec l'ouverture le même jour de rapports de bogue et de containerd#14485 ; un correctif de profil est proposé dans la PR containerd #14487. Lorsque la 7.0.0-42.42 est passée dans resolute-security, unattended-upgrades l'a installée, d'où des pannes après redémarrage des nœuds. La 7.0.0-43.43 conserve les symptômes ; la 7.0.0-44.44 est en proposed. Les rapports divergent : la première version fautive serait la 7.0.0-41 ou seulement la -42.
Des apps à découvrir
Touche les bonnes cases, additionne, atteins l'objectif. Facile à apprendre, difficile à maîtriser. Gratuit, pour tous les âges.
Discutez avec un partenaire IA ; chaque phrase revient corrigée et expliquée dans votre langue. 9 langues, de A1 à C2.
Ouvrez des messages EDIFACT et X12, chaque segment expliqué, conversion JSON/XML, export PDF et Excel. Fonctionne en local, sans envoi.
Choisissez pour qui, l'occasion et la personnalité. Le moteur lit les descriptions de produits de boutiques locales et classe ce qui convient. Gratuit, sans inscription.
Plus d'actus de ce jour
Tout voir →
LINE lance les messages programmés jusqu'à un an à l'avance

Flipper One : le lancement Kickstarter approche, dès 379 dollars

Dezhurka : astreintes sur Telegram face à la fin d'Opsgenie



