
CVE-2026-31431 Copy Fail — MCP 기반 리눅스 커널 LPE 테스터
📖 설치 가이드 — 빠른 시작, 수동 설정, 문제 해결
CVE-2026-31431 — 지금까지 발견된 최악의 Linux 취약점. 이제 MCP로 제어 가능합니다.
732바이트의 Python 코드. 컴파일 불필요. 경쟁 조건 없음. 배포판별 오프셋 없음. 단 한 번의 공격으로 2017년 이후 빌드된 모든 Linux 커널에서 루트 권한을 얻습니다.
이 도구는 접근 가능한 모든 Linux 시스템에서 이 취약점을 테스트하는 MCP 서버 + 웹 대시보드입니다. 원본 PoC는 이미 사용하기 쉬우므로 이 도구는 여기에 UI, 네트워크 스캔, 플릿 추적을 추가한 것입니다.
경고: 이것은 실제 커널 LPE입니다. 소유한 시스템이나 명시적인 서면 허가를 받은 시스템에서만 사용하세요. 무단 사용은 대부분의 관할권에서 중범죄입니다.
1. AI가 한 시간 만에 발견했습니다.
Theori의 Xint Code 플랫폼은 단일 운영자 프롬프트로 Linux crypto/ 서브시스템을 스캔했습니다.
한 시간 후, 9년 동안 모든 인간 리뷰어, 정적 분석 도구, 퍼저를 피해 온 범용 LPE를 찾아냈습니다.
이 버그는 2017년부터 존재했으며 크로스 서브시스템 추론(AF_ALG 소켓 출처 + authencesn 스크래치
쓰기 동작)이 필요했습니다. LLM 기반 도구가 가장 잘하는 바로 그런 연결입니다. 발견 비용은
무시할 만한 수준이었습니다. 취약점 환경에 대한 함의는 실존적입니다.
2. 익스플로잇은 732바이트의 순수 Python이며 의존성이 없습니다. 컴파일 툴체인 불필요. 설치할 라이브러리 없음. 아키텍처별 오프셋 없음. x86_64 서버, aarch64 라우터, ARM NAS 기기, Python 3.10+를 실행하는 다른 모든 Linux 하드웨어에서 동일하게 작동합니다. 웹 셸에 붙여넣거나 netcat으로 파이프하거나 USB 스틱에서 실행할 수 있습니다. 무기화의 장벽은 사실상 0입니다.
3. 디스크에 흔적을 남기지 않습니다.
익스플로잇은 커널의 메모리 내 페이지 캐시만 손상시킵니다. /usr/bin/su의 디스크 상 바이너리는
절대 수정되지 않습니다. 디스크 체크섬 비교 방식으로 작동하는 모든 파일 무결성 도구(AIDE, Tripwire,
dm-verity)는 아무 문제도 감지하지 못합니다. 손상은 재부팅 시 사라집니다. 익스플로잇이 실행되었는지
감지하는 유일한 방법은 auditd나 eBPF로 실행 중에 포착하는 것입니다. 포렌식 관점에서 이 익스플로잇은
보이지 않습니다.
4. 수십억 대의 기기는 영원히 패치되지 않을 것입니다.
주요 배포판(Ubuntu, RHEL, Debian, SUSE)은 72시간 내에 패치를 배포했습니다.
하지만 이 커널 버그는 CONFIG_CRYPTO_USER_API_AEAD=y가 설정된 2017년 이후 빌드된 모든 Linux 기기에
내장되어 있습니다. 사실상 전부입니다. OpenWrt 라우터(2026-05-02 기준 패치 없음). 2019년 벤더 커널을
실행하는 IP 카메라. 펌웨어 브랜치가 동결된 스마트 TV. 모든 업데이트에 FDA 재인증이 필요한 의료용
주입 펌프. 10년 지원 수명 주기의 산업용 컨트롤러. Android 기기는 우연한 SELinux 정책 제한으로
보호됩니다. 커널 수정이 아닙니다. 루팅된 기기/커스텀 ROM 기기, 구형 Fire 태블릿, Android TV 스틱은
완전히 노출되어 있습니다. 총계는 수백만이 아닙니다. 수십억입니다. 그리고 대부분은 패치가
영영 오지 않습니다.
공개 PoC를 기반으로 한 보안 테스트 및 인식 도구입니다. 원래 732바이트 스크립트가 하는 일 외에 새로 추가된 것은 없습니다. 추가된 기능은 다음과 같습니다:
익스플로잇 자체는 공개되어 있고, 복사가 사소하며, 존재를 없앨 수 없습니다. 이 도구는 테스트 권한이 있는 사람들이 빠르고 안전하게 테스트할 수 있도록 만들어졌습니다.
git clone https://github.com/sandraschi/copy-fail-mcp
cd copy-fail-mcp
just
사용 가능한 모든 명령을 보여주는 대화형 대시보드가 열립니다. just bootstrap으로 의존성을 설치한 후 just serve 또는 just dev로 시작하세요.
just가 설치되어 있지 않은 경우:
pip install copy-fail-mcp
copy-fail check --host 192.168.1.100
copy-fail serve --http --port 10955
User → AF_ALG socket (authencesn) → splice() target file → HMAC fails
↓
4 bytes written past AEAD boundary
↓
Into page cache of /usr/bin/su
↓
su is now corrupted in memory
↓
Run su → root shell
이 버그의 핵심: 개별적으로는 무해한 두 서브시스템 동작이 결합되면 치명적이 됩니다. AF_ALG의 splice 경로는 페이지 캐시 페이지를 쓰기 가능한 출력으로 노출합니다. authencesn은 합법적인 AEAD 경계를 4바이트 넘어 스크래치 공간으로 씁니다. 이 둘을 합치면 정밀하게 제어된 데이터로 읽기 가능한 모든 파일의 메모리 내 표현을 손상시킬 수 있습니다. 익스플로잇은 /usr/bin/su의 권한 검사를 대상으로 합니다.
MIT. 익스플로잇 스크립트는 Taeyang Lee / Theori / Xint Code Research Team이 작성했습니다 (원본 PoC).
| 속성 | Copy Fail | Dirty COW (2016) | Dirty Pipe (2022) |
|---|
| 익스플로잇 크기 | 732바이트 (Python 표준 라이브러리) | 약 200줄 C | 약 100줄 C |
| 컴파일 필요 여부 | 아니요 — 순수 Python | 예 — C 컴파일 | 예 — C 컴파일 |
| 경쟁 조건 | 아니요 — 결정적 | 예 — 경쟁 윈도우 | 아니요 |
| 배포판별 오프셋 | 없음 — 모든 환경에서 동일한 스크립트 | 없음 | 없음 |
| 디스크 추적 흔적 | 아니요 — 페이지 캐시만, 체크섬 정상 | 아니요 | 아니요 |
| 컨테이너 탈출 | 예 — 공유 페이지 캐시 | 예 | 예 |
| 커널 버전 | >= 4.14 (2017–현재) | >= 2.6.22 (2007–2018) | >= 5.8 (2020–2022) |
| 영향 받는 기기 | 수십억 대 (계속 증가 중) | 2018년 패치됨 | 2022년 패치됨 |
| 영원히 패치되지 않을 기기 | 수십억 대의 IoT/임베디드/라우터 | 대부분 패치됨 | 대부분 패치됨 |
| 발견자 | AI (Xint Code, 1시간 스캔) | 인간 연구자 | 인간 연구자 |
| 발견 비용 | 약 $6 클라우드 컴퓨팅 | 수개월의 인간 노력 | 수개월의 인간 노력 |
| 도구 | 설명 | 진입 경로 |
|---|
cf_scan_network | /24 서브넷에서 SSH 호스트 탐색, Linux 식별 | 직접 (비동기 TCP) |
cf_check_target | 커널, AEAD 구성, 배포판 패치 상태 확인 | SSH 에이전트 |
cf_run_exploit | SSH로 PoC 배포, 실행, root 보고 | SSH 에이전트 |
cf_assess | 확인 + 익스플로잇을 한 단계로 | SSH 에이전트 |
cf_apply_mitigation | 모듈 블랙리스트 또는 initcall 블랙리스트 | SSH 에이전트 |
cf_get_exploit_script | 원본 732바이트 PoC를 텍스트로 반환 | 모든 채널 |
cf_exploit_local | 수동 배포를 위해 PoC를 로컬 경로에 작성 | 로컬 셸 |