Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
copy-fail-go — Go 포트로 작성된 CVE-2026-31431 (copy-fail) Linux 커널 권한 상승 PoC로, 자동 SUID 바이너리 열거 및 대화형 대상 선택 기능을 포함합니다. | Kitploit
도구/GitHubGitHub/3jee/copy-fail-go
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationCTFPenetration TestingRed TeamingBinary Exploitation
GitHub3jee/copy-fail-go

copy-fail-go

Go 포트로 작성된 CVE-2026-31431 (copy-fail) Linux 커널 권한 상승 PoC로, 자동 SUID 바이너리 열거 및 대화형 대상 선택 기능을 포함합니다.

저장소 보기
13개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

copy-fail-go

grenkoca의 Python PoC를 Go로 포팅한 CVE-2026-31431 (copy-fail) 도구입니다.

이 버전은 런타임 의존성이 전혀 없는 완전한 정적 바이너리로 컴파일됩니다. Python, pip, libc 버전 제약이 없습니다. 아무 Linux 대상에 복사해서 실행하기만 하면 됩니다. 또한 대상 시스템의 모든 SUID world-readable 바이너리를 자동으로 열거하고, 대화형 메뉴에서 공격할 대상을 선택할 수 있습니다.

승인된 보안 연구 및 CTF 용도로만 사용하세요.


CVE-2026-31431 (copy-fail)이란?

Theori가 발견하고 2026년 4월 29일에 공개적으로 알려진 Copy.Fail은 2017년 최적화를 통해 도입된 Linux 커널 algif_aead 암호화 모듈의 논리적 결함입니다. 2017년 이후의 모든 주요 Linux 배포판에 영향을 미칩니다.

커널의 AF_ALG 암호화 인터페이스를 조작함으로써, 권한이 없는 공격자는 제어된 데이터를 Linux 페이지 캐시(신뢰되는 시스템 바이너리의 메모리 내 표현)에 직접 쓸 수 있습니다. 이를 통해 /usr/bin/su와 같은 바이너리를 디스크의 파일을 수정하지 않고 일시적으로 하이재킹할 수 있어, 디스크 기반 포렌식으로는 공격을 감지할 수 없습니다.

경쟁 조건이나 커널 주소 누출에 의존하는 많은 LPE 결함과 달리, Copy.Fail은 매우 안정적이며 일반 사용자 계정만으로도 일관되게 동작합니다.

영향:

  • 일반 사용자 → 영향을 받는 모든 시스템에서 root 권한 획득
  • 컨테이너 탈출로 호스트 권한 획득
  • CI/CD 작업이 러너를 root 권한으로 장악
  • 공유/멀티 테넌트 인프라가 테넌트 간에 손상됨
  • 디스크의 파일 수정 없음 (무결성 검사 우회)

영향을 받는 커널: 2017년 이후의 모든 배포판. 특정 버전 범위는 grenkoca의 원본 PoC를 참조하세요.


원본 Python PoC와의 차이점


요구 사항

  • 영향을 받는 버전 범위의 Linux 커널
  • 대상에 SUID world-readable 바이너리가 존재해야 함 (도구가 자동으로 찾음)
  • 실행에 특별한 권한 불필요

빌드 의존성 (빌드 머신에서)

도구버전
Go1.21+

빌드

네이티브 Linux 빌드

root@kitploit:~
git clone https://github.com/3jee/copy-fail-go
cd copy-fail-go
go build -o copy-fail .

macOS 또는 Windows에서 크로스 컴파일 (Linux x86-64 대상)

root@kitploit:~
GOOS=linux GOARCH=amd64 CGO_ENABLED=0 go build -ldflags="-s -w" -o copy-fail .

-s -w 플래그는 디버그 정보를 제거하여 바이너리 크기를 줄입니다. CGO_ENABLED=0은 libc 의존성이 없는 완전한 정적 바이너리를 생성합니다. glibc 버전과 관계없이 모든 Linux 대상에 복사해서 사용할 수 있습니다.

기타 아키텍처

대상명령어
Linux ARM64GOOS=linux GOARCH=arm64 CGO_ENABLED=0 go build -o copy-fail .
Linux 32-bit x86GOOS=linux GOARCH=386 CGO_ENABLED=0 go build -o copy-fail .

사용법

바이너리를 대상에 전송하고 실행합니다 (root 권한 불필요):

root@kitploit:~
./copy-fail

세션 예시:

root@kitploit:~
CVE-2026-31431 (copy-fail) - Go PoC
Based on grenkoca's original PoC

Scanning for SUID world-readable binaries...

SUID world-readable binaries found:
------------------------------------
  [1] /usr/bin/su
  [2] /usr/bin/sudo
  [3] /usr/bin/passwd
  [4] /usr/bin/newgrp

Select target [1-4]: 1

[*] Targeting: /usr/bin/su
[*] Writing 48 bytes to /usr/bin/su...
[+] Write complete. Executing target...
# whoami
root

동작 원리

  1. 대상 SUID 바이너리를 O_RDONLY로 엽니다. 쓰기 권한이 필요 없습니다.
  2. authencesn(hmac(sha256),cbc(aes)) AEAD 변환에 바인딩된 AF_ALG (SOCK_SEQPACKET) 소켓을 생성합니다.
  3. MSG_MORE 및 SOL_ALG 제어 메시지가 포함된 조작된 sendmsg를 전송하여 대상 파일의 페이지 캐시 항목에 대한 암호화 작업을 큐에 넣습니다.
  4. splice(2)를 사용하여 파일의 페이지를 ALG 소켓으로 이동시켜, 파일 권한을 다시 확인하지 않고 수정된 페이지 캐시 페이지를 다시 쓰는 취약한 커널 경로를 트리거합니다.
  5. 페이로드의 각 4바이트 청크에 대해 반복합니다.
  6. 패치된 바이너리를 실행합니다.

크레딧

  • grenkoca - 원본 Python PoC
  • Theori - 취약점 발견
  • 이 저장소는 자동 대상 열거 기능이 포함된 축약되지 않은 Go 포팅입니다.

참고 자료

  • OVHcloud: Copy.Fail - How to Rapidly Protect MKS Clusters from the Linux Kernel Zero-Day
  • grenkoca의 원본 Python PoC (gist)
도구 다운로드
원본 (Python)이 저장소 (Go)
언어Python 3Go 1.21+
대상하드코딩된 /usr/bin/su라이브 파일시스템 스캔에서 자동 감지
대상 선택없음대화형 번호 메뉴
배포스크립트단일 정적 바이너리 (런타임 의존성 없음)