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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
copy-fail-CVE-2026-31431 — # CVE-2026-31431 로컬 권한 상승 익스플로잇 Linux 커널 AF_ALG + splice 페이지 캐시 덮어쓰기 취약점에 대한 로컬 권한 상승 익스플로잇입니다. PoC, BPFtrace 탐지 스크립트, 그리고 승인된 보안 연구를 위한 QEMU 테스트 환경을 포함합니다. | Kitploit
도구/GitHubGitHub/astounds/copy-fail-cve-2026-31431
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationLearning & EducationBinary ExploitationLabs & Practice
GitHubastounds/copy-fail-cve-2026-31431

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

copy-fail-CVE-2026-31431

# CVE-2026-31431 로컬 권한 상승 익스플로잇 Linux 커널 AF_ALG + splice 페이지 캐시 덮어쓰기 취약점에 대한 로컬 권한 상승 익스플로잇입니다. PoC, BPFtrace 탐지 스크립트, 그리고 승인된 보안 연구를 위한 QEMU 테스트 환경을 포함합니다.

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

CVE-2026-31431 — Copy Fail

AF_ALG + splice 페이지 캐시 덮어쓰기를 통한 Linux 커널 로컬 권한 상승

CVE CVSS License

승인된 보안 연구, 침투 테스트 및 교육 목적으로만 사용하십시오. 소유하지 않았거나 명시적인 서면 허가를 받지 않은 시스템에는 사용하지 마십시오.

기술 문서


목차

  • 설명
  • 취약점 세부 정보
  • 저장소 구조
  • 빠른 시작
  • 탐지
  • 요구 사항
  • 완화 조치
  • 테스트 환경 (선택 사항)
  • 참고 자료
  • 라이선스

설명

CVE-2026-31431은 Linux 커널의 로컬 권한 상승(LPE) 취약점입니다. 권한이 없는 로컬 사용자가 AF_ALG 소켓 인터페이스와 splice()를 결합하여 setuid 바이너리에 속한 페이지 캐시 페이지에 직접 인증된 쓰기를 수행함으로써 루트 액세스 권한을 얻을 수 있습니다.

이 익스플로잇은 디스크의 inode를 수정하지 않고 페이지 캐시의 su 바이너리를 덮어써서 파일 메타데이터나 블록 수준 체크섬에만 의존하는 무결성 메커니즘을 우회합니다.


취약점 세부 정보

영향을 받는 환경


저장소 구조

root@kitploit:~
.
├── exploit.py    # PoC — 페이지 캐시 덮어쓰기 및 권한 상승
├── detect.bt     # 실시간 탐지를 위한 BPFtrace 스크립트
├── run-vm.sh     # QEMU 테스트 환경 자동화 (선택 사항)
├── PAYLOAD.md    # 페이로드 인코딩 분석 (hex → zlib → ELF → shellcode)
└── LICENSE

빠른 시작

취약한 시스템에서 exploit.py를 권한이 없는 로컬 사용자로 실행하십시오 — sudo는 필요 없습니다:

root@kitploit:~
python3 exploit.py

이 스크립트는 다음 단계를 수행합니다:

  1. AF_ALG(algif_aead)에 대한 커널 지원을 확인하고 su 바이너리를 찾습니다.
  2. 아키텍처에 적합한 페이로드를 선택하고 압축을 해제합니다.
  3. su 바이너리를 원시 파일 디스크립터로 열고 AF_ALG + sendfile을 통해 페이지 캐시 페이지를 덮어씁니다.
  4. 권한 상승을 테스트합니다. 성공하면 루트 셸로 전환됩니다.

지원 아키텍처:


탐지

detect.bt로 익스플로잇 시도를 실시간으로 모니터링하십시오. 루트 권한이 필요합니다:

root@kitploit:~
sudo bpftrace detect.bt
# 또는
doas bpftrace detect.bt

이 스크립트는 @suspect[pid]의 비트마스크를 사용하여 PID당 세 가지 지표를 추적합니다:

동일한 PID에서 세 비트가 모두 설정되면(@suspect[pid] == 0x7) 경고가 발생합니다.


요구 사항

exploit.py

  • Python 3.6+
  • AF_ALG/algif_aead 모듈이 로드된 Linux 커널
  • 로컬 권한 없는 사용자 계정 (루트는 필요하지 않음)

detect.bt

  • bpftrace ≥ 0.12
  • 루트 권한 (BPF 추적에 필요)
root@kitploit:~
# Ubuntu/Debian
sudo apt install bpftrace

# RHEL/CentOS/Fedora
sudo dnf install bpftrace

# Amazon Linux
sudo yum install bpftrace

# SUSE
sudo zypper install bpftrace

# Alpine
sudo apk add bpftrace

완화 조치

1. 패치 (권장)

메인라인 커밋 a664bf3d603d을 포함하는 배포판 커널 패키지로 업데이트하십시오. 이 커밋은 2017년 algif_aead 인플레이스 최적화를 되돌려 페이지 캐시 페이지가 더 이상 쓰기 가능한 대상 scatterlist에 포함될 수 없도록 합니다. 대부분의 주요 배포판에서 현재 이 수정 사항을 제공하고 있습니다.

2. algif_aead 비활성화 (패치를 기다리는 동안)

blacklist는 명시적인 modprobe algif_aead로 우회할 수 있습니다. install .../bin/false 지시문은 설치 명령을 완전히 재정의하여 모든 로드 시도를 실패하게 만듭니다:

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

이로 인해 중단되는 것 — 거의 없음

"아니요" 행의 서브시스템은 커널 내부 암호화 API를 직접 사용합니다 — AF_ALG를 거치지 않습니다. 성능은 일반 사용자 공간 암호화 라이브러리로 대체되며, 이는 다른 거의 모든 것이 이미 사용하는 방식입니다.

비활성화하기 전에 시스템에서 AF_ALG를 적극적으로 사용하는 항목이 있는지 확인하려면:

root@kitploit:~
lsof | grep AF_ALG
ss -xa | grep alg

3. seccomp로 차단 (컨테이너, 샌드박스, CI)

패치 상태와 관계없이 신뢰할 수 없는 워크로드에 대해 socket(AF_ALG, ...) 생성을 거부하십시오. seccomp 거부 목록에 AF_ALG(패밀리 38)를 추가하거나, 권한 없는 프로세스의 socket 호출을 제한하는 AppArmor/SELinux 정책을 사용하십시오.

4. detect.bt로 모니터링

즉시 패치하거나 잠글 수 없는 모든 호스트에 포함된 탐지 스크립트를 배포하십시오. 전체 3단계 익스플로잇 프리미티브를 실행하는 모든 프로세스에 대해 경고합니다.


테스트 환경 (선택 사항)

run-vm.sh는 통제된 환경에서 테스트하기 위한 Ubuntu 24.04 QEMU VM 생성을 자동화합니다. exploit.py와 detect.bt는 취약한 호스트에서 직접 실행됩니다 — QEMU는 필요하지 않습니다.

호스트 요구 사항

종속성참고 사항
qemu-system-x86_64 + KVM아래 설치 명령 참조
wget 또는 curl클라우드 이미지 다운로드
cloud-image-utils시드 이미지 생성 (비 Debian 호스트에서는 Docker로 대체 가능)

QEMU 설치

root@kitploit:~
# Ubuntu/Debian
sudo apt install qemu-system-x86 cloud-image-utils wget

# Fedora/RHEL
sudo dnf install qemu-system-x86 wget

# Arch
sudo pacman -Sy qemu

# Alpine
sudo apk add qemu-system-x86 qemu-ui-gtk wget

실행

root@kitploit:~
sh run-vm.sh

대화형 메뉴

root@kitploit:~
1. VM 시작/생성
2. SSH로 연결
3. VM에 파일 업로드  (exploit.py, detect.bt)
4. VM 내부에서 익스플로잇 실행
5. VM 내부에서 detect.bt 실행
6. VM 상태 확인
7. VM 중지
8. VM 파일 정리
0. 종료

VM 자격 증명

필드값
사용자ubuntu
비밀번호cve123
SSH 포트2222

참고 자료

  • 기술 문서 — xint.io
  • 페이로드 인코딩 분석 — hex → zlib → ELF → shellcode 분석
  • crypto/af_alg.c — 커널 소스
  • mm/splice.c — 커널 소스

라이선스

이 프로젝트는 GNU General Public License v3.0 이상에 따라 라이선스가 부여됩니다. 전체 텍스트는 LICENSE를 참조하십시오.

면책 조항: 이 저장소는 승인된 보안 연구, 침투 테스트 및 교육 목적으로만 제공됩니다. 저자는 이 소프트웨어의 오용이나 손상에 대해 어떠한 책임도 지지 않습니다.

도구 다운로드
필드값
CVE IDCVE-2026-31431
유형로컬 권한 상승 (LPE)
CVSS v3.1 점수7.8 High — AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (출처: kernel.org)
커널 서브시스템crypto/af_alg.c, mm/splice.c
공격 벡터로컬 — 권한이 없는 사용자 계정 필요
근본 원인algif_aead가 splice()가 전송을 완료하기 전에 매핑된 페이지 캐시 페이지에 대해 copy-on-write 의미를 강제하지 않고 AEAD 소켓을 통해 sendfile()을 허용함
배포판커널 버전아키텍처
Ubuntu 24.04 LTS6.17.0-1007-awsx86_64
Amazon Linux 20236.18.8-9.213.amzn2023x86_64
RHEL 10.16.12.0-124.45.1.el10_1x86_64
SUSE 166.12.0-160000.9-defaultx86_64
Raspberry Pi OS (Pi 5)6.12.75+rpt-rpi-2712aarch64
아키텍처변형
x86_64—
aarch64—
riscv64—
ppc64le—
armarmv5l, armv6l, armv7l
x86 32-biti386, i486, i586, i686
MIPS 64-bitmips64, mips64el
LoongArchloong64, loongarch64
s390x—
비트시스템 콜지표
0x1socket(AF_ALG, SOCK_SEQPACKET)AF_ALG 소켓 생성
0x2setsockopt(SOL_ALG, ...)암호화 작업 구성
0x4sendmsg(MSG_MORE) + splice()페이지 캐시 덮어쓰기 시도
영향?서브시스템/사용 사례
아니요dm-crypt/LUKS, kTLS, IPsec/XFRM, 커널 내부 TLS
아니요OpenSSL, GnuTLS, NSS 기본 빌드
아니요SSH, 커널 키링 암호화
아마도afalg 엔진이 명시적으로 활성화된 OpenSSL
아마도임베디드 암호화 오프로드 경로 또는 aead/skcipher/hash 소켓을 직접 바인딩하는 앱