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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-31431 — Linux 커널 로컬 권한 상승(CVE-2026-31431)을 위한 익스플로잇 및 탐지 도구로, 페이지 캐시를 손상시켜 루트 권한을 획득하며 완화 지침을 포함합니다. | Kitploit
도구/GitHubGitHub/kaleth4/cve-2026-31431
Privilege EscalationExploit FrameworksVulnerability AnalysisExploitationPenetration Testing
GitHubkaleth4/cve-2026-31431

CVE-2026-31431

Linux 커널 로컬 권한 상승(CVE-2026-31431)을 위한 익스플로잇 및 탐지 도구로, 페이지 캐시를 손상시켜 루트 권한을 획득하며 완화 지침을 포함합니다.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🚨 CVE-2026-31431: Copy Fail

리눅스 커널의 9년 된 치명적 취약점, 몇 초 만에 root 권한 획득 가능


📋 요약

속성세부 정보
CVECVE-2026-31431
별칭Copy Fail
유형로컬 권한 상승 (LPE)
CVSS7.8 (High)
발견자Theori (Xint Code)
공개일2026년 4월 29일
구성 요소리눅스 커널 algif_aead 서브시스템

⚡ 왜 이렇게 위험한가?

🎯 속도

  • 즉각적인 익스플로잇: root 획득까지 1초 미만
  • 단 732바이트 크기의 Python 스크립트

👻 완벽한 은닉

  • RAM(페이지 캐시)만 수정하며 디스크는 건드리지 않음
  • 파일 무결성 도구가 탐지하지 못함
  • 재부팅 시 흔적이 사라짐 (포렌식 분석 무력화)

🌍 광범위한 영향

  • 사실상 모든 최신 배포판에 영향
  • v4.14(2017)부터 v7.0-rc까지의 커널
  • 9년간 탐지되지 않은 채 취약

☁️ Cloud/Kubernetes 위험

  • 컨테이너에서 호스트 노드로의 탈출 가능
  • 페이지 캐시는 호스트와 컨테이너 간 공유됨
  • 멀티 테넌트 환경에서 심각한 영향

🔍 기술적 세부 사항

근본 원인

2017년에 도입된 "제자리(in-place) 연산" 최적화(커밋 72548b093ee3)의 결함. 로컬 사용자가 커널 페이지 캐시에 4바이트 제어된 쓰기를 직접 수행할 수 있게 함.

익스플로잇 메커니즘

  1. 공격자는 AF_ALG 인터페이스를 사용하여 커널 암호화 알고리즘에 접근
  2. setuid 바이너리(/usr/bin/su) 또는 민감한 파일(/etc/passwd)의 메모리 내 버전을 손상시킴
  3. 손상된 바이너리를 실행하면 root 셸을 획득

왜 발견되지 않았나

메모리 오버플로우가 아닌 설계상의 논리 버그이기 때문. 탐지하려면 암호화 서브시스템에 대한 심층 분석이 필요했음.


📊 영향받는 시스템

✅ 확인됨

  • Ubuntu: 20.04, 22.04, 24.04 LTS
  • RHEL/AlmaLinux/Rocky Linux: 모든 최신 버전
  • Debian: 커널 v4.14+를 사용하는 모든 버전
  • Amazon Linux 2023
  • SUSE: 최신 버전

🛡️ 대응 계획

1️⃣ 최종 해결책: 커널 업데이트

root@kitploit:~
# Ubuntu/Debian
sudo apt update
sudo apt upgrade
sudo reboot

# RHEL/AlmaLinux/Rocky
sudo dnf update kernel
sudo reboot

# 커널 버전 확인
uname -r

⚠️ 재부팅은 필수입니다. 새 커널을 활성화하려면 필요합니다.


2️⃣ 긴급 완화 조치 (즉시 재부팅 불가 시)

Ubuntu/Debian:

root@kitploit:~
# 취약 모듈 로드 비활성화
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/copyfail_mitigation.conf

# 이미 사용 중이면 모듈 언로드
sudo rmmod algif_aead

RHEL/AlmaLinux:

root@kitploit:~
# 모듈이 보통 커널에 내장되어 있음
# 부팅 파라미터를 추가하여 비활성화
sudo grubby --update-kernel=ALL --args="initcall_blacklist=algif_aead_init"

# 변경 사항 적용을 위해 재부팅
sudo reboot

3️⃣ 캐시 정리 (이전 익스플로잇 의심 시)

root@kitploit:~
# 페이지 캐시 핫 플러시
sudo sysctl -w vm.drop_caches=3

⚠️ 참고: 이는 패치를 대체하지 않습니다. 보조 조치일 뿐입니다.


📅 이벤트 타임라인

날짜이벤트
4월 29일Theori의 공개 공개
5월 1일최초의 활성 익스플로잇 시도 탐지
5월 2일CISA, 미국 연방 기관에 5월 15일까지 패치 명령

📦 패치 현황


🔐 시스템 확인

커널이 취약한가?

root@kitploit:~
# 커널 버전 확인
uname -r

# 다음 경우 취약:
# - v4.14 ~ v7.0-rc (2017년 ~ 2026년 4월 사이 출시)
# - 커밋 72548b093ee3 포함

# algif_aead 모듈 로드 여부 확인
lsmod | grep algif_aead

# 목록에 나타나면 시스템이 취약함

🧬 보안 분석: AI 요소

가장 파괴적인 점: AI가 1시간 만에 발견

개발자들이 9년간 놓친 이 결함을 AI가 식별했습니다. 이는 전환점을 의미합니다:

  • 🤖 머신이 인간보다 더 빠르게 커널 코드를 감사할 수 있음
  • 🔍 복잡한 논리적 결함을 자동으로 발견
  • ⚠️ 0-day 연구의 미래에 대한 시사점

빠른 시작

root@kitploit:~
# 1. 탐지
python3 prueba.py
#   exit 0 = 취약하지 않음, 2 = 취약함, 1 = 테스트 오류

# 2. 익스플로잇 (대화형 — su가 사용자 암호를 요청함)
python3 exploit.py --shell

탐지기 사용법

root@kitploit:~
python3 prueba.py

기능:

  1. AF_ALG와 authencesn(hmac(sha256),cbc(aes)) 알고리즘이 권한 없는 프로세스에서 접근 가능한지 확인.

  2. 임시 디렉토리에 4KiB 센티널 파일을 생성하고 페이지 캐시를 채움.

  3. sendmsg+cmsg를 통해 8바이트 AAD를 인라인으로 전송하고 seqno_lo를 PWND 마커로 설정한 다음, os.splice()를 사용하여 센티널 페이지 캐시 페이지에서 AF_ALG 연산 소켓으로 32바이트를 복사.

  4. recv()를 호출하여 복호화를 시작. 인증 검사는 EBADMSG로 실패하지만 임시 쓰기는 계속 실행됨.

  5. 파일(디스크가 아닌 페이지 캐시)을 다시 읽고 마커를 찾음.

출력 클래스:

  • 전제 조건 충족 안 됨: AF_ALG 또는 authencesn을 사용할 수 없음. 종료 코드 0.
  • CVE-2026-31431에 취약: PWND 마커가 수정된 페이지에 삽입됨.

종료 코드 2.

  • 페이지 캐시가 제자리 AEAD 삽입 경로를 통해 수정됨: 페이지에 쓰기가 발생했지만 마커가 예상 위치에 삽입되지 않음. 취약한 것으로 간주. 종료 코드 2.
  • 페이지 캐시 손상 없음: 패치됨. 종료 코드 0.

탐지기는 /usr/bin/su, /etc/passwd 또는 생성한 임시 디렉토리 외부의 다른 파일을 절대 수정하지 않으며, 해당 파일은 종료 시 삭제됩니다.

LPE 사용법

root@kitploit:~
python3 exploit_cve_2026_31431.py # 패치만 적용, 다음 단계 출력
python3 exploit_cve_2026_31431.py --shell # 패치 적용 후 `su <사용자>` 실행

기능:

  1. /etc/passwd에서 실행 중인 사용자의 UID 라인을 찾고 4자리 UID 필드의

바이트 오프셋을 확인.

  1. 해당 오프셋에 write4를 실행하여 UID를 0000으로 교체.

  2. pwd.getpwnam(사용자)를 호출하여 libc가 이제 UID 0을 보고하는지 확인.

  3. --shell 사용 시 execvp("su", ["su", 사용자])를 실행. 자신의 암호를 입력. PAM은 /etc/shadow(수정되지 않음)를 기준으로 검증한 후

setuid(getpwnam(user).pw_uid)가 0으로 설정됨.

요구 사항

  • 실행 중인 사용자의 UID가 4자리(1000–9999)여야 함. 1~3자리 UID는

다중 쓰기가 필요하므로 write4를 적절히 확장해야 함.

  • NSS 캐시 데몬(nscd, sssd, systemd-userdbd)이 /etc/passwd 읽기를 가리고 있지 않아야 함. 패치 적용 후에도 getpwnam이 실제 UID를 반환하면 캐시를 재시작하거나 무시하거나 다른 사용자를 선택.

  • /etc/passwd 페이지는 패치 적용과 su 실행 사이에 캐시에 남아 있어야 함. 실제로는 일반적인 메모리 압력이 있는 모든 시스템에서 안정적으로 동작.

되돌리기

디스크의 /etc/passwd 파일은 변경되지 않은 상태로 유지됨.

드라이 런(--shell 없는 exploit_cve_2026_31431.py)은 종료 시 POSIX_FADV_DONTNEED를 통해 손상된 페이지를 자동으로 제거하므로 UID → 이름 조회가 즉시 정상으로 돌아옴.

--shell 사용 후에는 페이지가 제거될 때까지 손상된 상태로 유지됨. 손상된 동안 UID 1000 → 이름을 확인하는 모든 작업(예: ls, 파일 관리자, scp/sftp 소유권 확인)이 실패하거나 숫자 식별자를 표시함. 제거하려면:

root@kitploit:~
# 권한 없이: /etc/passwd의 페이지 캐시 제거 요청:
python3 -c "import os; fd=os.open('/etc/passwd', os.O_RDONLY); \
os.posix_fadvise(fd, 0, 0, os.POSIX_FADV_DONTNEED); os.close(fd)"

# root 콘솔에서:
echo 3 > /proc/sys/vm/drop_caches

재부팅해도 제거됩니다.

write4 작동 방식

root@kitploit:~
sendmsg([8바이트 AAD], cmsg=[ALG_SET_OP=DECRYPT, ALG_SET_IV, ALG_SET_AEAD_ASSOCLEN=8],
flags=MSG_MORE)
splice(target_fd, pipe_w, 32, offset_src=file_offset)
splice(pipe_r, op_fd, 32)
recv(op_fd) # EBADMSG; 임시 쓰기는 이미 수행됨

AAD의 4~7번째 위치의 4바이트(seqno_lo)는 authencesn에 의해 대상 scatterlist에 기록되며, 이 코드 경로에서 대상은 target_fd에서 추출한 페이지 캐시 페이지입니다. 페이지 내 착지 오프셋은 splice()에 전달한 offset_src에 해당합니다.

완화 조치

패치된 커널이 배포판에 도착할 때까지:

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

패치 적용 후 test_cve_2026_31431.py는 "전제 조건 충족 안 됨" 메시지를 표시하고 종료 코드 0으로 종료해야 합니다.

원래 수정은 제자리 AEAD 연산을 제자리가 아닌 연산으로 되돌려 페이지 캐시 페이지가 수정 가능한 scatterlist에 포함되지 않도록 합니다.

📚 공식 참조

  • CVE-2026-31431 - NVD
  • Copy Fail Patches - AlmaLinux
  • Sysdig Security Research
  • CISA Alert

⚠️ 최종 권장 사항

  1. 최우선 순위: 2026년 5월 15일 이전에 커널 업데이트 (CISA 명령)
  2. 재부팅이 불가한 경우: algif_aead를 비활성화하는 임시 완화 조치 적용
  3. Cloud/Kubernetes: 노드가 즉시 패치되었는지 확인
  4. 모니터링: 감사 로그에서 algif_aead 모듈 로드 시도 탐색

최종 업데이트: 2026년 5월 3일
상태: 🔴 CRITICAL - 즉각적인 조치 필요

도구 다운로드
5월 3일Ubuntu, RHEL, AlmaLinux, Debian에서 패치 제공
배포판상태참조
Ubuntu✅ 패치됨USN-8226-1 (20.04, 22.04, 24.04)
RHEL/AlmaLinux/Rocky✅ 제공됨5월 1일부터
Debian✅ 보안 저장소에 있음업데이트 가능
Android⏳ 곧 제공 예정2026년 6월 보안 게시판