
Copy-Fail-CVE-2026-31431-Lab — Updated!
파일리스 LPE CVE-2026-31431(“Copy Fail”)을 Kali Linux에서 재현한 후, 디스크에 흔적을 남기지 않는 이 은밀한 커널 익스플로잇을 탐지하기 위해 auditd, Sigma 및 YARA 탐지 규칙을 구축했습니다.
Copy Fail (CVE-2026-31431) — 익스플로잇 재현 및 탐지 실험실
이 저장소는 커널 4.14부터 7.0-rc까지 영향을 주는 심각한 Linux 커널 로컬 권한 상승 취약점인 **CVE-2026-31431("Copy Fail")**에 대한 종단 간 재현, 탐지 엔지니어링, 그리고 침해 대응을 문서화합니다.
주요 발견 사항
- ✅ Kali Linux 2026.1(커널 6.18.12+kali-amd64)에서 CVE-2026-31431 익스플로잇 성공
- ✅ auditd 시스템 콜 수준 탐지 규칙 배포
- ✅ 크로스 플랫폼 탐지를 위한 Sigma 및 YARA 규칙 작성
- ✅ 완전한 침해 대응 플레이북 개발
중요성
Copy Fail은 메모리 손상이 아닌 로직 결함입니다. 결정적으로 발생하며, 2017년 이후 출시된 사실상 모든 Linux 배포판에 영향을 주고, 완전히 파일리스(fileless) 방식입니다—기존 파일 무결성 모니터링(AIDE, Tripwire)으로는 이를 감지할 수 없습니다. 동작하는 개념 증명(PoC)은 단 732바이트의 Python 코드로 구현됩니다.
실습 환경
| 구성 요소 | 세부 정보 |
|---|---|
| 하이퍼바이저 | VirtualBox |
| 대상 VM | Kali Linux 2026.1 |
| 커널 | 6.18.12+kali-amd64 |
| 익스플로잇 PoC | theori-io/copy-fail-CVE-2026-31431 |
| 탐지 | auditd, Sigma, YARA |
재현 단계
1. Kali 버전 및 커널 확인
이 실습은 대상이 취약한 커널을 실행 중인지 확인하는 것으로 시작합니다.
Kali Linux 2026.1 릴리스 및 커널 세부 정보.
취약한 커널 6.18.12+kali-amd64를 보여주는 uname -r 출력.
2. 취약한 모듈 확인
이 익스플로잇은 algif_aead 커널 모듈과 authencesn 암호화 템플릿을 필요로 합니다.
모듈 로드됨
lsmod 및 modinfo가 algif_aead 사용 가능 여부를 확인하며, /proc/crypto는 취약한 authencesn 템플릿을 보여줍니다.
3. Python 버전
PoC는 Python 3.10 이상이 필요한 os.splice를 사용합니다. 인터프리터를 확인합니다.
Python 버전 Python 3.12가 설치되어 준비되었습니다.
4. 취약점 확인 도구(비파괴적)
전체 익스플로잇을 실행하기 전에, 안전한 확인 도구가 시스템이 취약한지 확인합니다.
체커는 "potentially vulnerable"을 보고하여 익스플로잇을 진행할 수 있게 합니다.
5. 권한 없는 사용자 생성
특별한 권한이 없는 공격자를 시뮬레이션하기 위해 권한 없는 testuser 계정을 생성합니다.
id 출력은 UID 1001을 보여주며, 루트가 아닌 접근임을 확인합니다.
6. 익스플로잇 클론 및 실행
공식 Theori PoC를 클론하고 권한 없는 계정에서 실행합니다.
익스플로잇 저장소를 성공적으로 클론했습니다.
익스플로잇 실행
Python 익스플로잇이 페이지 캐시를 덮어쓰고 손상된 /usr/bin/su 바이너리를 트리거합니다.
whoami 및 id 출력이 완전한 루트 권한 상승을 입증합니다.
7. 파일리스 특성 확인(디스크 수정 없음)
이 익스플로잇은 메모리 내 페이지 캐시만 손상시킵니다. 디스크의 /usr/bin/su는 원래 체크섬을 유지합니다.
SHA256 일치
익스플로잇 이후에도 sha256sum이 원래 패키지 해시와 일치하여 디스크 수정이 없음을 확인합니다.
탐지 엔지니어링
Copy Fail은 파일 무결성 모니터링으로 탐지할 수 없습니다. 대신 익스플로잇이 사용하는 시스템 콜 수준 프리미티브에 초점을 맞춥니다.
auditd 규칙
다음 이벤트에서 트리거되는 사용자 정의 auditd 규칙을 배포합니다:
AF_ALG소켓 생성(패밀리 38)splice()시스템 콜 사용- 권한 없는 프로세스의 setuid 바이너리 읽기 접근
모든 사용자 정의 규칙이 활성화되어 있으며, auditctl -l로 확인했습니다.
익스플로잇을 두 번째로 실행한 후, 사용된 정확한 시스템 콜에 대한 알림을 확인합니다:
ausearch는 testuser 프로세스의 AF_ALG 소켓 생성 이벤트를 보여줍니다.
ausearch는 동일한 PID의 splice() 이벤트를 보여주며, 강한 상관관계를 나타냅니다.
Sigma 규칙
Sigma 규칙은 auditd 발견 사항을 벤더 중립적인 SIEM 형식으로 변환합니다.
AF_ALG 소켓 생성 및 splice() 호출을 탐지하는 Sigma YAML 규칙.
YARA 규칙
YARA 규칙은 디스크에서 Copy Fail 익스플로잇 코드를 식별하는 데 도움을 줍니다.
PoC에서 발견된 authencesn 문자열, 소켓 상수 및 splice() 참조를 매칭하는 YARA 규칙.
탐지 범위 요약
| 계층 | 감지 대상 | 상태 |
|---|---|---|
| auditd | AF_ALG 소켓 + splice 시스템 콜 | ✅ 배포됨 |
| Sigma | SIEM을 통한 시스템 콜 패턴 | ✅ 규칙 준비됨 |
| YARA | 디스크의 PoC 코드 | ✅ 규칙 준비됨 |
| FIM (AIDE/Tripwire) | 파일 변경 | ❌ 탐지 불가 – 디스크 쓰기 없음 |
침해 대응 플레이북
전체 침해 대응 보고서는 reports/incident-copy-fail.md에서 확인할 수 있습니다. 다음을 포함합니다:
- 경영진 요약
- 침해 지표(IoC)
- MITRE ATT&CK 매핑(T1068, T1611)
- 격리 및 근절 절차
- 파일리스 공격에 대한 교훈
완화 조치
즉시 완화 조치(재부팅 불필요):
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif.conf
sudo rmmod algif_aead