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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
copyfail-deconstructed — CVE-2026-31431의 이해하기 쉬운 버전 | Kitploit
도구/GitHubGitHub/bootsareme/copyfail-deconstructed
Privilege EscalationExploitationShellcodeLearning & EducationPayload DevelopmentBinary Exploitation
GitHubbootsareme/copyfail-deconstructed

copyfail-deconstructed

CVE-2026-31431의 이해하기 쉬운 버전

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

copyfail-deconstructed

이해하기 쉬운 버전의 CVE-2026-31431입니다. 이는 누구나 root가 될 수 있게 하는 권한 상승 기법입니다. 원본 개념 증명 코드는 https://github.com/theori-io/copy-fail-CVE-2026-31431 에서 찾을 수 있지만, 가능한 한 작은 설치 공간(footprint)을 갖도록 고도로 압축되고 축소되어 있습니다. 이 저장소는 해당 코드가 수행하는 작업, 페이로드가 로드되는 방식, 다양한 아키텍처를 대상으로 지정하는 방법을 포함하여 그 코드를 보다 읽기 쉬운 방식으로 분석하려고 시도합니다. 보다 기술적인 내용은 https://xint.io/blog/copy-fail-linux-distributions 에서 확인하세요.

사용법

기본적으로 python3 copyfail.py를 실행하면 /usr/bin/su를 악용하는 x64 셸코드가 실행됩니다. python3 copyfail.py [path/to/custom/payload.elf]를 실행하여 자신만의 페이로드를 제공할 수 있습니다. 예를 들어, payloads/ 안에 ARM64 셸코드 어셈블리가 있습니다. 따라서 ARM64 기기에서 테스트하려면 먼저 커스텀 링커 스크립트로 최소화된 페이로드를 빌드해야 합니다:

root@kitploit:~
as -o shellcode_aarch64.o payloads/shellcode_aarch64.S
ld -nostdlib -static -o shellcode_aarch64.elf shellcode_aarch64.o
strip -s shellcode_aarch64.elf

그런 다음 python3 copyfail.py shellcode_aarch64.elf를 사용하여 메인 익스플로잇을 실행할 수 있습니다.

C로 실행하는 경우:

  1. 빌드 (아래 참조)
  2. ./c_copyfail — 위와 동일한 기본 셸코드를 실행합니다.
  • ./c_copyfail [path/to/custom/payload.elf]를 실행하여 자신만의 페이로드를 제공할 수도 있습니다.

C 버전 빌드:

root@kitploit:~
cd c_port
make

구체적으로, 대상 .S 파일을 원시 바이너리로 컴파일하고 이를 C unsigned char 배열로 출력합니다:

root@kitploit:~
gcc -c payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

또는 32비트 x86의 경우,

root@kitploit:~
gcc -c -m32 payloads/[shellcode].S
objcopy -O binary [shellcode].o [payload].raw
xxd -i [payload].raw > payload.txt

그런 다음 이 파일의 내용을 소스 코드에 복사하거나, as + ld로 생성된 payload.elf를 직접 ./c_copyfail.exe [path/to/payload.elf]로 실행할 수 있습니다 (gcc + objcopy가 아닙니다).

완화 방법

악용을 방지하려면 다음을 실행하세요:

root@kitploit:~
echo "install algif_aead /bin/false" > /etc/modprobe.d/disable-algif-aead.conf
rmmod algif_aead 2>/dev/null

이미 악용된 경우 시스템을 재시작하거나 다음을 실행할 수 있습니다: echo 3 | sudo tee /proc/sys/vm/drop_caches

설명

  1. 커널은 사용자가 AF_ALG 소켓 유형을 통해 crypto API와 통신할 수 있게 합니다.
  • 2017년에 crypto API의 algif_aead 부분에 "in-place 최적화"가 추가되었습니다.
  • splice() 시스템 호출을 사용하여 소켓을 통해 데이터를 보내면, 커널은 splice한 파일의 실제 page-cache 페이지를 crypto 작업 영역에 넣습니다.
  • crypto 알고리즘 authencsn은 출력 버퍼를 임시 공간(scratch space)으로 취급하고, 원래 위치보다 4바이트 뒤까지 씁니다.
  1. 가상의 공격자가 할 수 있는 일
  • 읽을 수 있는 파일을 선택합니다 (예: 이 경우 /usr/bin/su)
  • 파일 내에서 4바이트 쓰기가 발생할 오프셋을 선택합니다
  • 쓸 4바이트 값을 선택합니다 (AEAD 연산의 associated data 일부)
  • 셸 코드를 작성하여 파일을 메모리에서 덮어씁니다
  1. page-cache 덮어쓰기를 통한 root 권한 획득
  • 커널은 손상된 페이지를 dirty로 표시하지 않으므로 파일은 변경되지 않은 것처럼 보입니다
  • /usr/bin/su를 실행하면 커널은 page cache에서 읽어 수정된 바이트를 가져옵니다
  • 4바이트 쓰기를 반복(약 40회)하여 /usr/bin/su 내부의 UID 검사를 덮어써 UID를 0(root)으로 만들 수 있습니다
  • 모든 사용자에 대해 root 셸을 얻을 수 있습니다
  1. 해결 방법
  • 메모리의 수정된 파일을 제거하기 위해 page cache를 플러시하면 다음에 디스크에서 읽습니다
  • 커널 모듈 언로드
  • 로딩 차단(블랙리스트)
  • 내장 모듈이라면 seccomp 또는 eBPF를 사용하여 시스템 콜을 차단해야 합니다. 또는 초기화 항목에서 제거하고 시스템을 재부팅하세요.

su 바이너리는 메모리에서 손상되므로 파일 변경이 감지되지 않습니다. 디스크에서 복원하려면 page-cache를 플러시하면 됩니다.

도구 다운로드