Linux 커널 Copy Fail 취약점: CVE-2026-31431 대응과 방어 설계
CVE-2026-31431 Copy Fail의 AF_ALG 취약점 원리와 CISA KEV 기반 패치, Linux 커널 방어 운영 방안을 정리한다.
2026-08-14 · 최초 발행 2026-05-14
페이지 캐시를 겨냥한 Copy Fail의 공격 경로
2026년 4월 29일 보안 연구 기업 Theori가 Linux 커널 제로데이 CVE-2026-31431, 별칭 “Copy Fail”을 공개했다. CISA는 5월 1일 이 취약점을 KEV(Known Exploited Vulnerabilities) 목록에 등재했고, 연방 기관에는 5월 15일까지 패치를 적용하도록 요구했다. 2017년 이후 출시된 거의 모든 주요 Linux 배포판이 영향을 받으며, 732바이트짜리 파이썬 스크립트 한 줄로 루트 셸을 획득할 수 있다는 점이 알려졌다.
CVE-2026-31431은 Linux 커널 사용자 공간 암호화 API(AF_ALG)의 AEAD 소켓 인터페이스인 algif_aead 모듈에 존재하는 로컬 권한 상승(LPE, Local Privilege Escalation) 취약점이다. CVSS 점수는 7.8(High)이고 CWE 분류는 CWE-699(Incorrect Resource Transfer Between Spheres)다.
문제의 출발점은 2017년 커밋 72548b093ee3이다. 이 변경은 인-플레이스(in-place) 최적화를 도입하면서 페이지 캐시 페이지를 쓰기 가능한 목적지 스캐터리스트(scatterlist)에 직접 둘 수 있게 했다. 이 설계 결함은 9년 동안 잠복해 있었다.
공격자는 AF_ALG 소켓 연산과 splice() 시스템 콜을 조합해 페이지 캐시 기반 페이지에 통제된 4바이트 쓰기를 수행한다. /usr/bin/su처럼 setuid 비트가 설정된 바이너리가 표적이 될 수 있다.
┌───────────────────────────────────────────────────────┐
│ 공격 흐름 (Copy Fail Exploit Chain) │
│ │
│ 1. AF_ALG 소켓 생성 (algif_aead) │
│ 2. splice()로 페이지 캐시 참조 획득 │
│ 3. in-place 최적화 경로 트리거 │
│ 4. setuid 바이너리 페이지 캐시에 4바이트 패치 │
│ 5. 조작된 /usr/bin/su 실행 → root shell 획득 │
└───────────────────────────────────────────────────────┘
이 경로는 레이스 컨디션에 기대지 않는다. 타이밍 윈도우나 충돌 가능성 없이 결정론적(deterministic)으로 동작하므로 신뢰도 높은 익스플로잇이 가능해진다. DirtyPipe(CVE-2022-0847)와 기술적 계보는 유사하지만, 안정성 측면에서는 훨씬 우수한 익스플로잇 특성을 보인다.
CoW 보호를 비켜가는 in-place 경로
Linux 커널은 파일 I/O 성능을 위해 페이지 캐시를 사용한다. 일반 사용자가 파일에 쓰기를 시도할 때는 카피-온-라이트(CoW)가 기존 페이지를 복사하고 복사본을 수정하므로 원본 페이지 캐시는 보호된다.
algif_aead의 in-place 최적화는 이 보호 경로를 우회한다. AEAD 암호화 연산에서 입력과 출력 버퍼가 같은 물리 페이지를 가리키도록 허용해 복사 비용을 줄이려 했지만, 페이지 캐시 페이지가 쓰기 가능한 상태로 노출되는 부작용을 만들었다.
SMEP(Supervisor Mode Execution Prevention), SMAP(Supervisor Mode Access Prevention), KASLR(Kernel Address Space Layout Randomization)은 커널 익스플로잇 대응에 쓰이는 하드웨어 및 주소 공간 보호 장치다.
- SMEP: 커널 컨텍스트에서 사용자 공간 메모리의 코드 실행을 차단한다.
- SMAP: 커널 컨텍스트에서 사용자 공간 메모리 읽기와 쓰기를 차단한다.
- KASLR: 커널 메모리 주소를 무작위화해 주소 예측을 어렵게 한다.
Copy Fail은 커널 메모리를 직접 조작하거나 사용자 공간 코드를 커널에서 실행하지 않는다. 정상적인 페이지 캐시 메커니즘을 악용해 디스크상의 파일을 바꾸지 않고 메모리에 올라온 setuid 바이너리의 내용을 변조한다. 이 때문에 위 보호 장치만으로는 막을 수 없다.
KEV 신호를 패치 우선순위에 반영하는 법
CISA KEV 목록은 실제 악용이 확인된 취약점만 등재한다. 따라서 단순한 취약점 데이터베이스가 아니라 패치 순서를 결정하는 핵심 근거가 된다. CVE-2026-31431은 2026년 5월 1일 KEV에 추가됐고, 연방 민간 기관(FCEB)에는 5월 15일까지인 14일의 의무 패치 기한이 주어졌다.
엔터프라이즈에서 Copy Fail의 우선순위를 판단할 때는 CVSS, KEV 등재 여부, 공개 PoC, 영향 자산, 공급사 패치 가용성을 함께 봐야 한다.
| 분류 기준 | 설명 | Copy Fail 해당 여부 |
|---|---|---|
| CVSS 점수 | 7.0 이상 High/Critical | 7.8 (High) 해당 |
| KEV 등재 | 실제 악용 증거 | 등재됨 |
| 공개 PoC | 익스플로잇 코드 공개 | 732바이트 Python PoC 공개 |
| 영향 범위 | 자산 범위 및 비즈니스 영향 | 전체 Linux 서버 |
| 패치 가용성 | 공급사 패치 제공 여부 | 커널 6.18.22/6.19.12/7.0 패치 |
패치가 가능한 자산은 스테이징 검증 뒤 자동 배포하고, 아직 패치가 준비되지 않은 자산에는 임시 완화를 적용하는 흐름이 필요하다.
서비스를 멈출 수 없는 환경에서는 커널 라이브 패치가 대응 속도를 높인다. 배포판별로 RHEL/CentOS는 Red Hat의 kpatch, Ubuntu는 Canonical의 Livepatch Service, SUSE는 SUSE의 Live Patching, CloudLinux는 KernelCare(상용)를 제공한다. 라이브 패치는 재부팅 없이 실행 중인 커널에 패치를 적용하므로 SLA가 엄격한 프로덕션 환경에서도 즉각적인 대응이 가능하다.
커널 보호 계층을 겹쳐 두기
Copy Fail이 SMEP와 SMAP를 우회한다는 사실은 단일 방어 장치에 의존할 수 없음을 보여준다. 하드웨어 보호, 커널 보안 모듈, 런타임 탐지, 운영 통제를 연결해야 한다.
AF_ALG 소켓 생성을 제한하는 정책은 공격 표면을 줄이는 완화 수단이다. SELinux 또는 AppArmor 정책에서 CAP_NET_RAW 없이 AF_ALG 소켓 바인딩을 차단할 수 있으며, Seccomp 프로파일로도 AF_ALG 소켓 생성을 제한할 수 있다.
# Seccomp 프로파일을 통한 AF_ALG 소켓 생성 제한
# /etc/seccomp/af_alg_block.json 예시
{
"defaultAction": "SCMP_ACT_ALLOW",
"syscalls": [
{
"names": ["socket"],
"action": "SCMP_ACT_ERRNO",
"args": [
{
"index": 0,
"value": 38, // AF_ALG = 38
"op": "SCMP_CMP_EQ"
}
]
}
]
}
Cloudflare는 Copy Fail 공개 직후 커널 패치 없이 eBPF LSM을 활용한 대응 사례를 공개했다. BPF LSM의 socket_bind 훅으로 정당한 사용자에게만 AF_ALG 모듈을 허용하고, 다른 프로세스의 소켓 바인딩은 거부하는 정책을 배포했다.
# 즉각적인 완화 조치: algif_aead 모듈 비활성화
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo modprobe -r algif_aead
# 영구 적용 (재부팅 후에도 유지)
sudo update-initramfs -u # Debian/Ubuntu
sudo dracut --force # RHEL/Fedora
IMA(Integrity Measurement Architecture)와 EVM(Extended Verification Module)은 Linux 커널에 내장된 파일 시스템 무결성 보호 메커니즘이다. setuid 바이너리를 노리는 Copy Fail 같은 공격에서 IMA는 페이지 캐시 조작을 감지하는 보조 수단이 될 수 있다.
IMA 정책 예시 (setuid 바이너리 측정):
measure func=FILE_CHECK mask=MAY_EXEC uid=0 \
appraise_type=imasig
수백 대의 Linux 서버를 운영한다면 커널 버전 추적도 대응 체계의 일부다. 자동화된 인벤토리가 없으면 취약한 커널을 식별하는 데만 수일이 걸릴 수 있다.
# 영향받는 커널 버전 확인 (Copy Fail 패치 버전: 6.18.22+)
uname -r
# 엔터프라이즈 스케일 스캔 (Ansible)
ansible all -m command -a "uname -r" | grep -v "6.18.2[2-9]\|6.19.1[2-9]\|7\."
배포판 패치 상태와 적용 명령
공식 패치가 제공된 배포판에서는 즉각적인 업데이트가 권고된다.
| 배포판 | 영향 버전 | 패치 버전 | 업데이트 명령 |
|---|---|---|---|
| Ubuntu 24.04 LTS | 6.8 kernel | linux-image-6.8.0-xx | apt update && apt upgrade |
| RHEL 10.1 | kernel-6.x | 패치 제공됨 | dnf update kernel |
| Amazon Linux 2023 | kernel-6.x | 패치 제공됨 | dnf update kernel |
| SUSE 16 | kernel-default | 패치 제공됨 | zypper update kernel-default |
| Debian | kernel 6.x | 패치 제공됨 | apt update && apt upgrade |
| Fedora | kernel 6.x | kernel 6.19.12+ | dnf update kernel |
업스트림 수정은 mainline 커밋 a664bf3d603d에서 2017년 최적화를 되돌리는 방식으로 반영됐다. 패치된 커널 버전은 6.18.22, 6.19.12, 7.0이다.
의심 신호가 포착됐을 때의 대응
Copy Fail 익스플로잇 실행이 의심되면 다음 포렌식 지표를 확인한다.
setuid바이너리(su, sudo, passwd 등)의 예기치 않은 프로세스 실행/proc/*/maps에서 페이지 캐시 이상 매핑 감지- AF_ALG 소켓을 생성한 비정상 프로세스 (Falco/Sysdig 알림)
- 일반 사용자 컨텍스트에서
uid=0프로세스 생성 이벤트
CVE-2026-31431은 9년 만에 드러난 커널 설계 결함이 어떤 결과를 낳을 수 있는지 보여준다. 우선순위는 커널 패치지만, algif_aead 모듈 비활성화와 eBPF LSM 정책 배포를 병행해야 한다. KEV 기반 우선순위 관리와 커널 라이브 패치를 결합하면 서비스 중단 없이 신속하게 취약점에 대응할 수 있다.
Sources
- CVE-2026-31431: Copy Fail vulnerability enables Linux root privilege escalation | Microsoft Security Blog
- CISA Adds One Known Exploited Vulnerability to Catalog | CISA
- Copy Fail: What You Need to Know About the Most Severe Linux Threat in Years | Palo Alto Unit 42
- Fixes available for CVE-2026-31431 (Copy Fail) | Ubuntu
- Nine-year-old Linux kernel flaw enables reliable local privilege escalation | Help Net Security
- Copy Fail (CVE-2026-31431): Linux Kernel Privilege Escalation FAQ | Tenable
- How Cloudflare responded to the "Copy Fail" Linux vulnerability | Cloudflare Blog
- CERT-EU Security Advisory 2026-005: High Vulnerability in the Linux Kernel
- CVE-2026-31431 Detail | NVD
- oss-security - CVE-2026-31431: CopyFail Linux local privilege escalation | Openwall