Post

[Security] CVE-2026-31431 Copy Fail: 9년 묵은 리눅스 커널 버그로 로컬 루트 장악

[Security] CVE-2026-31431 Copy Fail: 9년 묵은 리눅스 커널 버그로 로컬 루트 장악

서론

2026년 5월 1일, CISA(미국 사이버보안·인프라보안국)는 리눅스 커널의 새로운 취약점을 ‘알려진 악용 취약점(Known Exploited Vulnerabilities, KEV)’ 목록에 추가하며 연방기관들에게 5월 15일까지 패치를 완료하도록 명령했다. 해당 취약점은 CVE-2026-31431, 보안 연구팀 Theori와 Xint가 붙인 별칭 “Copy Fail”로 더 널리 알려지기 시작했다.

Copy Fail은 2017년에 리눅스 커널에 도입된 암호화 서브시스템의 인플레이스(in-place) 최적화 코드에서 비롯됐다. 9년 동안 수억 대의 리눅스 시스템에 잠복해 있던 이 버그는 이제 비특권 로컬 사용자가 732바이트짜리 Python 스크립트 하나로 루트 권한을 얻을 수 있는 수준으로 익스플로잇됐다. 경쟁 조건(race condition)도 없고 결정론적(deterministic)으로 동작한다는 점에서 실전 공격 활용 가능성이 매우 높다.

5월 3일부터는 SecurityWeek와 CyberPress, GBHackers 등이 실제 익스플로잇 코드가 공개 저장소에 업로드됐음을 확인하면서 보안 커뮤니티의 경계 수위가 한층 높아졌다. Microsoft Security Blog, CERT-EU, 캐나다 사이버보안센터(CCCS) 모두 각각 독립적인 보안 권고문을 발행했다.

본론

버그의 기원: 2017년의 인플레이스 최적화

CVE-2026-31431의 뿌리는 리눅스 커널의 algif_aead 모듈에 있다. 이 모듈은 AF_ALG 소켓 인터페이스를 통해 사용자 공간(user space)에서 AEAD(Authenticated Encryption with Associated Data) 암호화를 수행할 때 사용된다.

2017년 커널 개발자는 성능 최적화를 위해 암호화 연산 시 소스 메모리를 대상 메모리로 재사용하는 인플레이스 최적화를 도입했다. 이 코드가 정상적인 시나리오에서는 문제없이 작동했지만, AF_ALG 소켓 인터페이스와 splice() 시스템 콜을 특정 방식으로 조합하면 의도치 않은 메모리 쓰기가 발생한다.

Microsoft Security Blog의 5월 1일 분석에 따르면, 공격자는 이 버그를 통해 커널 페이지 캐시에서 임의의 읽기 가능한 파일의 4바이트를 제어된 방식으로 덮어쓸 수 있다. 커널 페이지 캐시는 디스크 파일의 인메모리 복사본을 저장하는 공간이다. 즉, 디스크 상의 파일 자체를 수정하지 않고도 /usr/bin/su 같은 특권 바이너리의 메모리 내 표현을 오염시킬 수 있다.

익스플로잇 메커니즘: 4바이트 쓰기가 루트로

공격 절차는 다음과 같이 요약된다:

  1. AF_ALG 소켓과 AEAD 암호화 템플릿을 초기화한다.
  2. splice() 시스템 콜을 통해 인플레이스 최적화 경로를 트리거한다.
  3. 커널 페이지 캐시의 특정 위치에 4바이트 제어 쓰기를 수행한다.
  4. 특권 바이너리(/usr/bin/su 등)의 인메모리 복사본을 오염시킨다.
  5. 오염된 바이너리가 실행되면 프로세스가 UID 0(루트)로 상승한다.
1
2
3
4
5
6
7
8
9
10
[공격 흐름]
AF_ALG socket + AEAD template
     ↓
splice() 시스템 콜로 인플레이스 경로 트리거
     ↓
커널 페이지 캐시 4바이트 제어 쓰기
     ↓
/usr/bin/su 인메모리 복사본 오염
     ↓
su 실행 → UID 0 (root) 획득

Bugcrowd의 분석에 따르면, Theori팀이 공개한 원본 익스플로잇은 Python으로 작성된 732바이트짜리 스크립트로, 경쟁 조건 없이 결정론적으로 동작하며 단일 세션 내에서 루트로 상승하는 데 수 초밖에 걸리지 않는다. 이후 Go와 Rust 버전도 오픈소스 저장소에 올라왔다.

CVE-2026-31431의 CVSS 기본 점수는 7.8(High)로 “Critical”이 아닌 “High”에 해당하지만, 이는 로컬 공격 벡터라는 특성을 반영한 것이다. 원격에서 직접 실행되는 취약점은 아니지만, 일단 내부 접근이 가능한 공격자(내부자, 침해된 계정, 다른 취약점 연계)에게는 치명적이다.

영향 범위: 2017년 이후 모든 리눅스 배포판

이 취약점의 가장 큰 문제는 광범위한 영향 범위다. 리눅스 커널 4.14 이상을 사용하는 모든 시스템이 잠재적으로 취약하다.

배포판취약 버전
Ubuntu24.04 LTS 이하 다수
RHEL (Red Hat Enterprise Linux)10.1 이하
SUSE Linux Enterprise16 이하
Amazon Linux2023
Debian, Fedora, Arch Linux패치 전 버전

클라우드 환경에서는 컨테이너 탈출(container breakout)멀티테넌트 수평 이동(lateral movement) 시나리오가 특히 우려된다. 공유 컴퓨팅 환경에서 단일 테넌트가 루트를 획득하면 다른 테넌트의 데이터에도 접근할 가능성이 생기기 때문이다.

CERT-EU는 별도의 긴급 권고를 발행하며 “클라우드 서비스 제공자와 공유 호스팅 사업자는 서버 패치를 최우선으로 처리해야 한다”고 권고했다.

CISA KEV 등재와 패치 현황

CISA는 2026년 5월 1일 CVE-2026-31431을 KEV 카탈로그에 추가하며 연방 민간 행정부(FCEB) 기관에 5월 15일까지 패치 적용을 의무화했다. KEV 카탈로그 등재는 취약점이 이론적으로 존재하는 수준을 넘어 실제 공격자에 의해 악용되고 있음을 의미한다.

패치 버전:

  • 리눅스 커널 6.18.22
  • 리눅스 커널 6.19.12
  • 리눅스 커널 7.0

Ubuntu, RHEL, SUSE, Amazon Linux 등 주요 배포판들은 커널 보안 업데이트를 이미 출시한 상태다. 각 배포판 패키지 관리자를 통해 바로 적용할 수 있다.

1
2
3
4
5
6
7
8
9
10
# Ubuntu / Debian: 커널 패키지 업데이트
sudo apt update && sudo apt full-upgrade

# RHEL / CentOS / Amazon Linux: 커널 패키지 업데이트
sudo yum update kernel
# 또는
sudo dnf update kernel

# 커널 버전 확인
uname -r

패치 적용 후 재부팅이 필요하다. 재부팅이 즉시 불가능한 환경에서는 다음 임시 완화 조치를 고려할 수 있다.

1
2
3
# AF_ALG 소켓 권한 제한 (systemd 환경)
# /etc/sysctl.d/99-af-alg-mitigation.conf 생성
kernel.unprivileged_userns_clone=0

단, 이 설정은 다른 사용자 공간 기능에 영향을 줄 수 있으므로 프로덕션 적용 전 충분한 테스트가 필요하다. 캐나다 사이버보안센터의 “AL26-009 Update 1” 권고 역시 임시 완화보다 즉시 패치를 우선할 것을 권장하고 있다.

보안 연구 및 커뮤니티 반응

보안 연구 커뮤니티에서는 Theori와 Xint의 분석이 기술적으로 매우 정교하다는 평가가 나오고 있다. CVSS 7.8이라는 “High” 등급의 로컬 권한 상승 취약점을 이토록 신뢰성 있고 결정론적인 익스플로잇으로 발전시킨 것 자체가 새로운 연구 성과로 인정받는 분위기다.

반면 커뮤니티 일각에서는 “2017년부터 잠복해온 취약점이 이제야 발견됐다는 것은 커널 코드 리뷰 프로세스에 구조적 문제가 있음을 시사한다”는 비판도 제기됐다. 리눅스 커널의 암호화 서브시스템은 고성능 최적화와 보안 사이의 균형을 맞추기 어려운 영역으로 알려져 있으며, 유사한 최적화 버그가 추가로 발견될 가능성도 배제할 수 없다.

Microsoft의 보안 블로그 포스팅이 공개 직후 Hacker News에서 빠르게 확산되면서, 퇴근 후 시스템 패치를 진행했다는 인프라 엔지니어들의 후기가 다수 게재됐다. Go와 Rust 버전의 익스플로잇이 오픈소스 저장소에 공개된 만큼, 패치가 늦어질수록 자동화된 공격 도구화 위험이 높아진다.

정리

  • CVE-2026-31431 “Copy Fail”은 리눅스 커널 algif_aead 모듈의 2017년 인플레이스 최적화 버그로, CISA KEV에 등재된 실제 악용 중인 취약점이다.
  • CVSS 7.8(High), 비특권 로컬 사용자가 4바이트 커널 페이지 캐시 쓰기를 통해 root를 획득하며, 732바이트 Python 스크립트로 결정론적 재현이 가능하다.
  • 커널 4.14+(2017년 이후) 전체가 영향권이며, Ubuntu 24.04, RHEL 10.1, Amazon Linux 2023, SUSE 16 등이 포함된다.
  • 패치 버전: 커널 6.18.22, 6.19.12, 7.0 — 주요 배포판 패키지 업데이트로 즉시 적용 가능.
  • 연방기관 패치 기한 2026-05-15이나, 클라우드·멀티테넌트 환경은 더 이른 시일 내에 패치하는 것이 강력히 권고된다.

Reference

This post is licensed under CC BY 4.0 by the author.