Osegi
소프트웨어·3 분 소요

Ubuntu 26.04 커널 업데이트, AppArmor 변경으로 컨테이너 장애

Ubuntu 26.04 커널의 보안 패치가 AppArmor 스택 방식을 바꿔 컨테이너 내 시그널이 거부됩니다. gosu, PostgreSQL, Percona 파드가 멈춥니다.

Server rack with terminal output showing AppArmor denied signal errors from a container running on an Ubuntu host.
이미지: Хабр

Ubuntu 26.04 커널 업데이트에 포함된 AppArmor 보안 패치(CVE-2026-90231)가 컨테이너 환경에서 장애를 일으키고 있습니다. 컨테이너 안에서 시그널을 보내면 "Permission denied"로 거부되어 gosu, PostgreSQL, Percona Operator for MySQL(PXC) 파드 등이 정상적으로 시작되지 않습니다.

영향 범위

대상은 Ubuntu 26.04 또는 7.0.0-41 이상의 백포트가 적용된 커널이며, linux-aws와 linux-azure 같은 클라우드 빌드도 포함됩니다. kernel.apparmor_restrict_unprivileged_unconfined=1(26.04 기본값) 설정에서 containerd나 Docker가 표준 AppArmor 프로파일을 쓰는 경우여서, 사실상 거의 모든 Kubernetes, k3s, RKE2, Docker 호스트가 해당됩니다.

증상은 uid가 같고 seccomp가 꺼져 있어도 kill 작업이 거부되는 것입니다. gosu는 CPU 100%로 돌지만 서비스는 시작되지 않고 로그도 남지 않습니다. PostgreSQL은 "could not signal for checkpoint: Permission denied" 오류를 내며, 커널 로그에는 peer="cri-containerd.apparmor.d//&unconfined"가 포함된 DENIED 메시지가 기록됩니다.

원인

이 매개변수는 2025년 2월부터 Ubuntu에서 켜져 있으며, CAP_MAC_OVERRIDE가 없는 unconfined 프로세스가 프로파일을 바꾸는 대신 unconfined 위에 새 프로파일을 스택하도록 합니다. 커밋 08c2f7c8d4b1은 이 제한을 우회하는 경로를 막으면서 exec 시에도 강제 스택을 적용했습니다. runc는 capabilities를 먼저 제거한 뒤 exec하므로, 표준 프로파일을 쓰는 모든 컨테이너가 cri-containerd.apparmor.d//&unconfined(Docker는 docker-default//&unconfined) 아래에서 실행됩니다.

containerd 프로파일 템플릿에는 정확한 이름 peer=cri-containerd.apparmor.d에 대한 signal (receive)와 ptrace 규칙만 있어 복합 레이블이 맞지 않습니다. 그 결과 같은 컨테이너 안의 프로세스와 스레드 사이 시그널까지 거부됩니다. Go에서는 setuid가 sched_yield 루프에 빠져 멈춥니다.

경과와 대응

영향이 없는 마지막 커널은 7.0.0-38.38로 알려져 있습니다. 7.0.0-42.42가 resolute-updates에 올라온 날 LP #2172422와 containerd#14485가 등록되었고, 이후 resolute-security에 들어가 unattended-upgrades로 자동 설치되면서 노드 재부팅 뒤 장애가 나타났습니다. 7.0.0-43.43에서도 증상은 계속되며 7.0.0-44.44는 proposed 단계입니다. 첫 문제 버전을 -41로 보는 보고와 -42만 확인한 보고가 엇갈립니다.

임시 방편으로는 PerconaXtraDBCluster CR에서 AppArmor를 해제하거나, 노드에서 root로 호스트 PID에 시그널을 보내는 방법이 있습니다. containerd 프로파일 수정은 PR #14487로 제안되었습니다.

주목할 만한 앱

SUMO: 숫자 퍼즐

올바른 칸을 고르고 더해 목표 숫자를 맞추세요. 배우긴 쉽고 마스터하긴 어렵습니다. 무료, 전 연령.

태그:ubuntuapparmorkubernetescontainerdlinux kerneldocker

같은 날의 다른 뉴스

전체 보기 →

관련 카테고리: 소프트웨어

전체 보기 →