본문으로 건너뛰기
← 뉴스 목록으로
CRITICAL취약점

Copy Fail(CVE-2026-31431): 732바이트로 모든 Linux에서 root를 얻는 커널 취약점

5분 읽기
#CVE-2026-31431#Linux#커널취약점#권한상승#AF_ALG#Kubernetes#클라우드보안

2017년부터 숨어있던 결함, 이제 실전 무기가 됐다

2026년 4월 29일, Linux 커널 암호화 모듈에서 치명적인 논리 결함이 공개됐습니다. CVE-2026-31431, 별명 Copy Fail. 발견한 건 보안 연구팀 Xint. 이들이 공개한 개념 증명(PoC) 코드는 단 732바이트짜리 Python 스크립트입니다.

이 스크립트를 실행하면 비권한 로컬 사용자가 Ubuntu, RHEL, Amazon Linux, SUSE 등 주요 Linux 배포판에서 수 초 안에 root 권한을 획득합니다. 버그가 처음 도입된 건 2017년. 약 9년간 수억 대의 서버에 잠복해 있었습니다.

항목세부 내용
CVECVE-2026-31431
별명Copy Fail
CVSS 점수7.8 (High)
유형로컬 권한 상승(LPE)
PoC 공개예 (732바이트 Python 스크립트)
CISA KEV등재됨, 패치 기한 2026-05-12

어떻게 동작하는가

Linux 커널에는 AF_ALG라는 인터페이스가 있습니다. 사용자 공간 애플리케이션이 커널의 하드웨어 가속 암호화 기능을 직접 사용할 수 있게 해주는 통로입니다. 이 중에서도 algif_aead 모듈이 문제였습니다.

2017년, 커널 개발자는 AEAD(인증된 암호화) 연산을 빠르게 처리하기 위해 인플레이스(in-place) 메모리 최적화를 도입했습니다. 처리 결과를 별도의 버퍼에 복사하는 대신 원본 메모리를 그대로 수정하는 방식이었습니다. 성능 개선을 위한 선의의 수정이 9년 뒤 치명적인 결함으로 드러났습니다.

공격은 이 최적화를 splice() 시스템 콜과 조합하는 방식입니다. 공격자는 AF_ALG 소켓과 splice()를 체이닝해서 커널이 페이지 캐시에 4바이트를 쓰도록 유도합니다. 페이지 캐시는 디스크 파일을 메모리에 올려둔 복사본입니다. 마치 도서관 책의 메모리 내 사본을 몰래 수정하는 것과 같습니다.

공격자가 노리는 건 /usr/bin/su 같은 setuid 바이너리입니다. setuid 비트가 설정된 실행 파일은 어떤 사용자가 실행해도 파일 소유자(보통 root)의 권한으로 실행됩니다. 페이지 캐시에서 이 바이너리의 핵심 코드 4바이트를 덮어쓰면 디스크에는 흔적이 남지 않고 메모리 내에서만 조작이 이루어집니다.

Dirty Pipe(CVE-2022-0847)와 비교하면 Copy Fail은 타이밍 의존 없이 결정론적으로 작동합니다. 레이스 컨디션도, 까다로운 타이밍 창도 없습니다. 스크립트를 실행하면 됩니다.

내 서버, 클라우드, 컨테이너가 위험한가

2017년 이후에 배포된 Linux 커널이라면 기본적으로 취약합니다.

배포판취약 버전패치 상태
Ubuntu14.04~25.10 (26.04 제외)2026-04-30 패치 출시
RHEL10.1패치 배포 중
Amazon Linux2023패치 배포 중
SUSE16패치 배포 중
Debian, Fedora, Arch2017년 이후 커널배포판별 확인 필요

단순한 서버 하나의 root 문제가 아닙니다. Kubernetes 환경에서는 컨테이너 탈출 벡터가 됩니다. 페이지 캐시는 같은 호스트의 모든 프로세스가 공유합니다. 컨테이너 경계도 예외가 아닙니다. 컨테이너 내부에서 호스트 노드 전체를 장악할 수 있다는 의미입니다.

CERT-EU는 Kubernetes 노드와 CI/CD 러너를 우선 패치 대상으로 지목했습니다. CI/CD 러너에 외부 코드가 실행될 수 있는 환경이라면 단순 권한 상승을 넘어 공급망 공격으로 이어질 수 있습니다.

지금 할 수 있는 대응법

  1. 즉시 커널 업데이트 — Ubuntu는 sudo apt-get update && sudo apt-get upgrade로 즉시 적용합니다. RHEL, Amazon Linux, SUSE는 각 배포판 보안 권고문에서 패치 커널을 확인합니다. CISA는 연방 기관에 2026년 5월 12일까지 패치를 명령했습니다.

  2. 임시 조치: algif_aead 모듈 비활성화 — 패치 커널을 즉시 적용하기 어렵다면 재부팅 없이 모듈을 비활성화할 수 있습니다.

sudo modprobe -r algif_aead
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf

algif_aead를 실제로 사용하는 암호화 라이브러리가 있다면 영향을 받을 수 있지만 대부분의 시스템에서는 드문 경우입니다.

  1. Kubernetes 노드 우선 패치 — 클러스터 환경에서는 노드 단위로 롤링 업데이트를 적용합니다. 패치 전에는 네트워크 정책으로 컨테이너 간 접근을 최소화합니다.

  2. 탐지 설정 — auditd나 Falco로 AF_ALG 소켓과 splice()를 조합하는 비정상적인 시스템 콜 패턴을 모니터링합니다.

  3. Ubuntu 자동 업데이트 확인unattended-upgrades가 이미 패치를 적용했을 수 있습니다. uname -r로 현재 커널 버전을 확인하고 Ubuntu 보안 권고문과 비교합니다.

참고

공유

보안 뉴스 알림 받기

새로운 보안 뉴스를 이메일로 전달합니다.