Ubuntu 26.04: una actualización del kernel rompe los contenedores
Un parche de seguridad del kernel de Ubuntu 26.04 cambia cómo AppArmor apila perfiles: los contenedores rechazan señales y gosu, PostgreSQL y Percona se bloquean.

Una reciente actualización del kernel de Ubuntu 26.04 puede dejar fuera de servicio cargas de trabajo en contenedores sin previo aviso. Un ingeniero que se topó con el fallo al redimensionar un grupo de nodos de Kubernetes explica cómo una corrección de seguridad de AppArmor hace que los contenedores rechacen señales, incluso entre procesos del mismo usuario.
Qué ocurre
El problema afecta a Ubuntu 26.04 o a kernels con el backport desde 7.0.0-41, incluidas compilaciones en la nube como linux-aws y linux-azure. Requiere el parámetro kernel.apparmor_restrict_unprivileged_unconfined=1, que es el valor por defecto en 26.04, y containerd o Docker con el perfil AppArmor estándar. Eso abarca casi cualquier host con Kubernetes, k3s, RKE2 o Docker.
Los síntomas: Permission denied en kill dentro del contenedor pese a coincidir el uid y sin seccomp; gosu y otros binarios de Go que llaman a setuid consumen el 100 % de CPU sin registros ni arranque del servicio; PostgreSQL muestra «could not signal for checkpoint: Permission denied». El registro del kernel incluye apparmor="DENIED" operation="signal" con el peer cri-containerd.apparmor.d//&unconfined.
El autor lo detectó cuando varios pods de Percona Operator for MySQL (PXC) no arrancaban tras reiniciar los nodos. Como solución rápida, desactivó AppArmor en el recurso personalizado o envió la señal desde el nodo como root. Después, los pods de la aplicación quedaron bloqueados por gosu, lo que obligó a modificar un chart de Helm.
El mecanismo
Desde febrero de 2025 Ubuntu impide que un proceso unconfined sin CAP_MAC_OVERRIDE cambie de perfil sin más: el nuevo perfil se apila sobre unconfined. El commit 08c2f7c8d4b1 (CVE-2026-90231) cerró una vía de evasión y ahora fuerza ese apilado también en exec. Como runc elimina las capabilities antes del exec, cada contenedor con el perfil estándar se ejecuta bajo la etiqueta compuesta cri-containerd.apparmor.d//&unconfined (docker-default//&unconfined en Docker).
La plantilla de perfil de containerd solo permite señales y ptrace desde el nombre exacto cri-containerd.apparmor.d. La etiqueta compuesta no coincide, así que el kernel deniega señales incluso entre hilos del mismo contenedor.
Cronología y estado
El último kernel no afectado es el 7.0.0-38.38. La versión 7.0.0-42.42 llegó a resolute-updates y ese mismo día se abrieron informes de error y containerd#14485; hay una corrección del perfil propuesta en la PR #14487 de containerd. Al pasar a resolute-security, unattended-upgrades empezó a instalarla y surgieron caídas tras reiniciar nodos. La 7.0.0-43.43 mantiene los síntomas y la 7.0.0-44.44 está en proposed. Los informes difieren sobre si la primera versión defectuosa es la 7.0.0-41 o solo la -42.
Apps que merecen la pena
Toca las casillas correctas, suma y alcanza el objetivo. Fácil de aprender, difícil de dominar. Gratis, para todas las edades.
Conversa con un compañero de IA; cada frase vuelve corregida y explicada en tu idioma. 9 idiomas, de A1 a C2.
Abre mensajes EDIFACT y X12, cada segmento explicado, conversión a JSON/XML, exportación a PDF y Excel. Funciona en local, sin subir nada.
Elige para quién es, la ocasión y su personalidad. El buscador lee las descripciones de tiendas locales y ordena lo que encaja. Gratis, sin registro.
Más de este día
Ver todas →
LINE permite programar mensajes hasta con un año de antelación

Flipper One, listo para Kickstarter: desde 379 dólares

Dezhurka: guardias en Telegram ante el cierre de Opsgenie



