
Python exploit for CVE-2026-31431, a Linux kernel local privilege escalation via AF_ALG and splice() to write to page cache, gaining root on arm64 and x86.
| 항목 | 내용 |
|---|---|
| CVE 번호 | CVE-2026-31431 |
| 취약점 이름 | Copy Fail |
| 취약점 유형 | Linux 커널 로컬 권한 상승 (LPE) |
| CVSS 3.1 점수 | 7.8 (HIGH) |
| CWE | CWE-669: Incorrect Resource Transfer Between Spheres |
| 영향 범위 | 2017년부터 2026년 4월까지 빌드된 모든 Linux 커널 |
| CISA KEV | 등재됨, 수정 기한 2026-05-15 |
| 공개 시간 | 2026-04-29 |
2017년 커널은 algif_aead 암호화 모듈에 제자리 암호화 최적화(in-place optimization)를 도입했습니다. 이 최적화로 인해 page-cache 페이지가 잘못하여 쓰기 가능한 대상 scatterlist에 포함됩니다. 공격자는 AF_ALG 소켓과 splice() 시스템 콜을 조합하여 임의 파일(root 소유의 읽기 전용 파일 포함)의 page cache에 데이터를 쓸 수 있습니다.
공격 체인: AF_ALG socket → splice() → page-cache 쓰기 프리미티브 → setuid 바이너리 page cache 변조 → 해당 파일 실행으로 root 권한 획득
공격 특징:
| 배포판 | 영향 커널 버전 |
|---|---|
| Ubuntu 24.04 LTS | 6.17.0-1007-aws |
| Amazon Linux 2023 | 6.18.8-9.213.amzn2023 |
| RHEL 10.1 | 6.12.0-124.45.1.el10_1 |
| SUSE 16 | 6.12.0-160000.9-default |
Debian, Arch, Fedora, Rocky, Alma, Oracle 등의 배포판에서도 동일한 커널 범위가 영향을 받습니다.
커널 버전이 아래 수정 버전보다 낮은 경우 모두 영향 범위에 해당합니다:
uname -r
출력 결과를 위 표의 수정 버전과 비교하여, 수정 버전보다 낮으면 영향 범위에 해당합니다.
# 현재 AF_ALG 연결이 있는지 확인
lsof | grep AF_ALG
# AF_ALG socket 상태 확인
ss -xa | grep alg
lsmod | grep algif_aead
출력이 있으면 모듈이 로드된 것이며, 악용 위험이 존재합니다.
# PoC 저장소 클론
git clone https://github.com/cx330zer0/CVE-2026-31431-Copy-Fail-add-arm64.git
cd CVE-2026-31431-Copy-Fail-add-arm64
# PoC 실행(비특권 사용자 권한 필요)
python3 copy-fail-dual-arch.py
PoC가 성공적으로 root 셸을 획득하면 시스템에 해당 취약점이 존재함을 의미합니다.
| 안정 브랜치 | 최소 수정 버전 |
|---|
| 5.10.x | ≥ 5.10.254 |
| 5.15.x | ≥ 5.15.204 |
| 6.1.x | ≥ 6.1.170 |
| 6.6.x | ≥ 6.6.137 |
| 6.12.x | ≥ 6.12.85 |
| 6.18.x | ≥ 6.18.22 |
| 6.19.x | ≥ 6.19.12 |
| 7.0.x | ≥ 7.0-rc7 |