
리눅스 커널 로컬 권한 상승 익스플로잇으로, CVE-2026-31431에 대한 신뢰할 수 있는 단발성 PoC를 제공하며, 여러 언어 구현, 취약점 스캐너, 그리고 완화 스크립트를 포함합니다.
2017년 이후 모든 주류 배포판에 영향을 미치는 100% 신뢰할 수 있는 Linux 로컬 권한 상승 취약점.
authencesn의 단일 로직 버그가AF_ALG와splice()를 통해 4바이트 페이지 캐시 쓰기로 이어짐 — 거의 10년 동안 조용히 악용 가능.
이 저장소의 모든 코드와 문서는 승인된 보안 연구 및 교육 목적으로만 제공됩니다.
소유하지 않았거나 명시적인 서면 승인을 받지 않은 시스템에서 익스플로잇 코드를 실행하는 것은 불법입니다. 이 저장소를 사용함으로써 귀하는 모든 행동에 대한 전적인 책임을 수락합니다.
| 필드 | 세부 사항 |
|---|---|
| CVE | CVE-2026-31431 |
| 별칭 | Copy Fail |
| 유형 | Linux 커널 로컬 권한 상승(LPE) / 페이지 캐시 임의 쓰기 |
| CVSS v3.1 | 7.8 HIGH — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-669 (영역 간 잘못된 리소스 전송) |
| 구성 요소 | crypto/algif_aead — authencesn 암호화 템플릿 |
| 도입 시점 | 2017 (커밋 72548b093ee3) |
| 수정 시점 | 메인라인 커밋 a664bf3d603d (2026-04-01) |
| 패치된 커널 | v6.18.22+, v6.19.12+, v7.0+ |
| 발견자 | Xint / Theori (Taeyang Lee + Xint Code AI 지원 감사) |
| 공개 | 2026-04-29 — copy.fail |
| 일반적인 Linux LPE | Copy Fail | |
|---|---|---|
| 경쟁 조건 | 필요 | 없음 |
| 배포판별 오프셋 | 필요 | 없음 |
| 신뢰성 | 30–80% | 100%, 단일 시도 |
| 영향 범위 | 좁음 | 2017 → 2026 (9년) |
| 디스크 수정 | 가능 | 없음 (은밀함) |
| 컨테이너 간 전파 | 불가 | 가능 |
.
├── README.md ← 현재 위치
├── LICENSE ← MIT
├── .gitignore
├── docs/
│ ├── analysis-report.md ← 종합 보안 분석
│ ├── analysis-report.html ← 스타일 적용 HTML 버전
│ ├── exploit-walkthrough.md ← 줄 단위 PoC 분석
│ └── exploit-walkthrough.html ← 스타일 적용 HTML 버전
└── poc/
├── README.md ← PoC 사용 가이드
├── copy_fail_exp.py ← 공식 PoC (732바이트, 난독화됨)
├── copy_fail_exp_readable.py ← 난독화 해제 + 주석 버전
├── copy_fail_exp_compat.py ← Python 3.6+ 호환 (ctypes splice)
├── copy_fail_exp_alpine.py ← Alpine Linux 변형
├── copy_fail_exp.c ← C 구현 (의존성 없음)
├── copy_fail_exp.go ← Go 구현 (의존성 없음)
├── copy_fail_rust/ ← Rust 구현
│ ├── Cargo.toml
│ └── src/main.rs
├── check_vulnerable.py ← 취약점 스캐너
└── mitigate.sh ← 원클릭 완화 스크립트
# GitHub Releases에서 — 사전 빌드된 바이너리 (Linux amd64/arm64) + 모든 Python 스크립트
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-go-linux.tar.gz
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-c-linux.tar.gz
wget https://github.com/nisec-eric/cve-2026-31431/releases/latest/download/copy-fail-python.tar.gz
tar xzf copy-fail-go-linux.tar.gz
tar xzf copy-fail-c-linux.tar.gz
tar xzf copy-fail-python.tar.gz
# Go 정적 바이너리 (Python 불필요)
chmod +x copy-fail-exp-amd64
./copy-fail-exp-amd64
# C 정적 바이너리
chmod +x copy-fail-exp-c-amd64
./copy-fail-exp-c-amd64
# 또는 Python 스크립트 직접 사용
python3 check_vulnerable.py
📦 릴리스는
v*태그 푸시 시 GitHub Actions를 통해 자동 빌드됩니다. Go 및 C 바이너리는 linux/amd64 및 linux/arm64용 정적 바이너리로 빌드됩니다.
python3 poc/check_vulnerable.py
sudo bash poc/mitigate.sh
이 스크립트는 algif_aead 커널 모듈을 블랙리스트에 추가합니다 — 99%의 시스템에서 아무것도 깨지지 않습니다.
# Debian/Ubuntu
sudo apt update && sudo apt upgrade linux-image-*
# RHEL/CentOS/Fedora
sudo dnf update kernel
# 패치된 커널로 재부팅
sudo reboot
python3 poc/check_vulnerable.py
# 종료 코드 1 = 보호됨 ✓
경고: 소유했거나 테스트 승인을 받은 시스템에서만 실행하세요.
| 파일 | 언어 | 요구 사항 | 참고 |
|---|---|---|---|
copy_fail_exp.py | Python 3.10+ | 표준 라이브러리만 | 공식 732바이트 PoC |
copy_fail_exp_compat.py | Python 3.6+ | 표준 라이브러리 + ctypes | CentOS 7, AL2 등에서 동작 |
copy_fail_exp_alpine.py | Python 3.10+ | 표준 라이브러리만 | Alpine의 /bin/ping 대상 |
copy_fail_exp.c | C | gcc + Linux 헤더 | 정적 바이너리, 의존성 없음 |
copy_fail_exp.go | Go 1.21+ | 표준 라이브러리만 | 정적 바이너리, 의존성 없음 |
copy_fail_rust/ | Rust 1.70+ | libc + flate2 크레이트 | 정적 바이너리 |
# C
gcc -static -o exp ./poc/copy_fail_exp.c && ./exp
# Python
python3 poc/copy_fail_exp.py
python3 poc/copy_fail_exp_compat.py # Python < 3.10
# Go
go build -o exp ./poc/copy_fail_exp.go && ./exp
# Rust
cd poc/copy_fail_rust && cargo run --release
모든 버전은 선택적 인수를 받아 다른 SUID 바이너리를 대상으로 지정할 수 있습니다:
python3 poc/copy_fail_exp.py /usr/bin/passwd
./exp /usr/bin/sudo
다음을 포함한 전체 취약점 평가:
authencesn 스크래치 쓰기)줄 단위 PoC 분석:
AF_ALG 소켓 흐름, splice() 페이지 캐시 전달, sg_chain() 메커니즘authencesn ESN 스크래치 쓰기/etc/passwd 주입, 공유 라이브러리 대상 지정, 컨테이너 탈출| 환경 | 위험 | 이유 |
|---|---|---|
| 멀티 테넌트 Linux 호스트 | 🔴 높음 | 모든 사용자 → root |
| Kubernetes / 컨테이너 | 🔴 높음 | 공유 페이지 캐시 → 컨테이너 탈출 |
| CI 러너 (자체 호스팅) | 🔴 높음 | 악성 PR → 러너 root |
| 클라우드 SaaS (사용자 코드) | 🔴 높음 | 테넌트 → 호스트 root |
| 표준 서버 | 🟡 중간 | 웹 RCE / 도난 자격 증명과 연계 |
| 단일 사용자 노트북 | 🟢 낮음 | 이미 유일한 사용자 |
기여를 환영합니다:
이슈를 열거나 풀 리퀘스트를 제출해 주세요.
MIT — 책임감 있게 사용하세요.