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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script — CVE-2026-31431(Copy Fail) 탐지 스크립트로, Linux 시스템에서 커널 버전, 패치 존재 여부, 커널 구성, AF_ALG 소켓 사용 가능 여부, setuid 바이너리 및 완화 조치를 확인하여 취약점 상태를 판단합니다. | Kitploit
도구/GitHubGitHub/liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script
Cloud Infrastructure SecurityVulnerability ScannersContainer SecurityVulnerability AnalysisConfiguration AuditingDevSecOpsIntrusion DetectionIncident Response

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
GitHub
liamromanis101/cve-2026-31431-copy-fail---vulnerability-detection-script

CVE-2026-31431-Copy-Fail---Vulnerability-Detection-Script

CVE-2026-31431(Copy Fail) 탐지 스크립트로, Linux 시스템에서 커널 버전, 패치 존재 여부, 커널 구성, AF_ALG 소켓 사용 가능 여부, setuid 바이너리 및 완화 조치를 확인하여 취약점 상태를 판단합니다.

저장소 보기
2523개월 전Kitploit 검토 완료
공유

CVE-2026-31431 — Copy Fail — 취약점 탐지 스크립트

탐지 전용입니다. 작동하는 PoC는 이미 copy.fail/#exploit에 존재합니다. 이 스크립트는 시스템 관리자와 보안 팀이 취약한 위치를 파악하거나 — 패치 적용 후에도 여전히 취약한지 확인하기 위한 것입니다.


이게 뭔가요?

2026년 4월 29일, Copy Fail(CVE-2026-31431)이라는 취약점이 Xint Code Research Team에 의해 공개적으로 공개되었습니다. 이는 대략 2017년부터 — 거의 10년 동안 — Linux 커널에 조용히 존재해 온 로직 버그로, 권한이 없는 모든 로컬 사용자가 root 권한을 얻을 수 있게 합니다.

"특정 조건과 약간의 운, 좋은 바람이 있을 때 root 권한을 얻는" 것이 아닙니다. 그냥... 안정적으로 root 권한을 얻습니다. 사실상 모든 주요 Linux 배포판에서 말이죠.

Ubuntu, Amazon Linux, RHEL, SUSE 및 지난 약 8년간의 메인스트림 커널을 실행하는 모든 것에 영향을 미칩니다. 동일한 스크립트, 재컴파일 불필요, 배포판별 조정 불필요.

네, 소문난 것만큼 심각합니다.

작동 방식의 간단한 버전

Linux 커널에는 AF_ALG 소켓을 통해 권한이 없는 사용자가 접근할 수 있는 암호화 하위 시스템이 있습니다. splice()라는 메커니즘이 있는데, 파일 데이터를 복사하지 않고 해당 하위 시스템에 직접 공급할 수 있습니다 — 즉, 파일의 커널 메모리 내 캐시 복사본("페이지 캐시")이 암호화 작업 내부에 들어가게 됩니다.

특정 알고리즘 — IPsec 확장 시퀀스 번호에 사용되는 authencesn — 은 출력 버퍼를 스크래치 공간으로 사용하고 의도된 위치보다 약간 지나서 4바이트를 쓰는 특성이 있습니다. 일반적으로는 무해합니다. 그러나 /usr/bin/su와 같은 setuid 바이너리의 페이지 캐시 페이지가 (2017년 의 "최적화" 덕분에) 해당 출력 버퍼에 연결되면, 그 4바이트가 커널의 바이너리 캐시 복사본에 직접 기록됩니다.

algif_aead.c

작업은 오류와 함께 실패합니다. 커널은 해당 페이지를 dirty로 표시하지 않습니다. 디스크의 파일은 변경되지 않습니다. 디스크 체크섬을 확인하는 파일 무결성 도구는 아무 문제도 발견하지 못합니다.

하지만 실행되는 것은 페이지 캐시입니다. 그리고 su는 setuid root입니다.

전체 기술 문서는 xint.io에 있으며 읽을 가치가 충분히 있습니다.


스크립트가 확인하는 항목

Python 스크립트 — 13개 검사

원래 릴리스의 7개와 탐지 공백을 메우기 위해 추가된 6개의 새 검사:

#검사확인 내용
1커널 버전이 커널이 영향 범위(4.10–6.14)에 있습니까?
2패치 존재 여부수정 커밋이 실제로 실행 중인 커널에 있습니까?
3algif_aead 모듈취약한 모듈이 로드되었거나 로드 가능합니까?
4CONFIG_CRYPTO_AUTHENC (신규)CONFIG_CRYPTO_AUTHENC이 내장(=y) 또는 모듈(=m)입니까? 이 단일 옵션은 authenc와 authencesn을 모두 빌드합니다. 내장이면 modprobe 블랙리스트 완화 조치가 효과가 없습니다.
5CONFIG_CRYPTO_USER_API_AEAD (신규)AF_ALG AEAD 사용자 공간 인터페이스가 컴파일되어 있습니까? 그렇지 않으면 전체 익스플로잇 경로가 컴파일 시점에 차단됩니다.
6AF_ALG 소켓권한이 없는 사용자가 지금 하나를 열 수 있습니까?
7Python os.splice순수 Python 익스플로잇 경로를 사용할 수 있습니까?
8Setuid 바이너리시스템에 존재하는 읽기 가능한 setuid-root 대상의 확장 목록.
9완화 조치AppArmor, SELinux, seccomp — 무엇이 적용되어 있습니까?
10사용자 네임스페이스 (신규)권한이 없는 사용자 네임스페이스가 활성화되어 있습니까? (Copy Fail을 직접 차단하지는 않지만, 더 넓은 로컬 권한 상승 표면에 영향을 미칩니다.)
11투명 대용량 페이지 (신규)THP 상태 — 페이지 캐시 정렬 및 익스플로잇 신뢰성에 영향을 줄 수 있습니다.
12환경 탐지 (신규)Docker/컨테이너/VM 컨텍스트 — 컨테이너는 호스트 커널을 공유합니다; 패치가 필요한 것은 호스트입니다.
13Root 사용자 경고 (신규)root로 실행 중이면 경고합니다. 여러 검사가 권한 없는 제한과 관계없이 root에 대해 오탐을 주기 때문입니다.

셸 스크립트 — 10개 검사

Bash 스크립트는 동일한 핵심 탐지 로직을 다루지만 Python 특정 항목 3개는 생략합니다:

#검사비고
1커널 버전
2패치 존재 여부
3algif_aead 모듈
4AF_ALG 소켓가능하면 Python을 헬퍼로 사용; 그렇지 않으면 커널 구성 추론으로 대체
5Setuid 바이너리확장 목록, Python 버전과 동일
6완화 조치AppArmor, SELinux, seccomp
7CONFIG_CRYPTO_AUTHENC
8사용자 네임스페이스
9투명 대용량 페이지
10환경 탐지

셸 스크립트에 없는 항목 (Python 대비):

누락된 검사이유
CONFIG_CRYPTO_USER_API_AEAD아직 구현되지 않음 — 계획됨
Python os.splice 가용성셸 스크립트에는 해당 없음
Root 사용자 경고아직 구현되지 않음 — 계획됨

어느 스크립트도 아무것도 수정하거나 익스플로잇하지 않습니다. 시스템에 대한 진실을 알려주어 조치를 취할 수 있게 합니다.


요구 사항

  • Python 3.6+
  • 외부 종속성 없음 — 표준 라이브러리만
  • root 권한 불필요 (의도적 — 권한 없는 공격자가 볼 수 있는 것을 확인합니다)
  • 권장: root가 아닌 사용자로 실행 — 일부 검사(AF_ALG 소켓, setuid stat)는 root에게 항상 성공하며 오탐을 보고합니다

사용법

root@kitploit:~
# 스크립트를 클론하거나 다운로드한 후:
python3 cve-2026-31431-detect.py

그게 전부입니다. 끝에 요약이 있는 색상 코드 보고서가 출력됩니다.

종료 코드

스크립트는 취약한 결과가 발견되면 0이 아닌 코드로 종료되어 파이프라인 사용에 적합합니다:

코드의미
0취약한 조건 없음
1하나 이상의 취약한 조건 발견
root@kitploit:~
# 예: 호스트가 취약하면 CI 단계 실패
python3 cve-2026-31431-detect.py
rc=$?
if [ $rc -eq 1 ]; then
  echo "VULNERABLE — 배포 차단"
elif [ $rc -ne 0 ]; then
  echo "ERROR — 스크립트 완료 실패 (exit $rc)"
fi

출력 예시

root@kitploit:~
CVE-2026-31431 'Copy Fail' — 취약점 탐지
authencesn 페이지 캐시 손상 / 로컬 권한 상승
uid=1001, euid=1001로 실행 중

=== 커널 버전 ===
  [취약] 커널 버전
          이유 : 커널이 취약 범위(4.10 – 6.14)에 있음
          세부 : 릴리스: 6.12.0-124.45.1.el10_1 — 패치 상태 확인 필요

=== CONFIG_CRYPTO_AUTHENC (커널 구성) ===
  [취약] CONFIG_CRYPTO_AUTHENC
          이유 : 모듈로 빌드됨(=m): AF_ALG bind() 시 자동 로드; modprobe 블랙리스트가 올바른 완화 조치

=== CONFIG_CRYPTO_USER_API_AEAD (커널 구성) ===
  [취약] CONFIG_CRYPTO_USER_API_AEAD
          이유 : AF_ALG AEAD 인터페이스가 로드 가능한 모듈 — 권한 없는 사용자가 AF_ALG 소켓을 통해 암호화 하위 시스템에 접근 가능

...

  시스템이 CVE-2026-31431에 취약할 가능성이 높음

  권장 조치:
    1. 배포판의 CVE-2026-31431 커널 업데이트 적용
    2. 패치 전까지 모듈 블랙리스트:
         echo 'install algif_aead /bin/false' > /etc/modprobe.d/disable-algif-aead.conf
         rmmod algif_aead 2>/dev/null
       참고: CONFIG_CRYPTO_AUTHENC=m(모듈)일 때만 효과적입니다.
       CONFIG_CRYPTO_AUTHENC=y(내장)인 경우 패치가 유일한 해결책입니다.

셸 버전 (DevSecOps 파이프라인용)

Python이 없거나 셸 네이티브 도구를 선호하는 환경을 위한 동반 Bash 스크립트(cve-2026-31431-detect.sh)가 제공됩니다. 13개 검사 중 10개를 수행합니다 — 차이점에 대한 자세한 내용은 위의 검사 비교 표를 참조하세요.

root@kitploit:~
# 기본 실행
bash cve-2026-31431-detect.sh

# JSON 출력 — SIEM 수집, Ansible facts, 로그 집계에 적합
bash cve-2026-31431-detect.sh --json > scan-results.json

# 조용한 모드 — 요약만 출력 (CI 로그에 유용)
bash cve-2026-31431-detect.sh --quiet

# ANSI 색상 비활성화 (로그 파일용)
bash cve-2026-31431-detect.sh --no-colour

셸 스크립트는 동일한 종료 코드(0 = OK, 1 = 취약)를 사용하며 파이프라인 소비를 위한 동등한 JSON 출력을 생성합니다. 시스템에 Python 3이 있으면 셸 스크립트가 이를 사용하여 실시간 AF_ALG 소켓 테스트를 수행하고, 그렇지 않으면 커널 구성 추론으로 대체합니다.


수정 방법

진짜 해결책은 커널 패치입니다. 배포판의 보안 권고를 확인하세요.

배포판확인 위치
Ubuntuubuntu.com/security/CVE-2026-31431
RHEL / Amazon Linuxdnf update kernel
SUSEzypper update kernel-default
Debianapt update && apt upgrade

임시 완화 조치 (모듈 빌드 전용)

CONFIG_CRYPTO_AUTHENC 검사가 =m(내장이 아닌 모듈로 빌드)을 보고하면 블랙리스트에 등록할 수 있습니다:

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

중요: 이 완화 조치는 CONFIG_CRYPTO_AUTHENC=y(내장)인 경우 효과가 없습니다. 그 경우 커널 패치가 유일한 해결책입니다. 스크립트의 CONFIG_CRYPTO_AUTHENC 검사가 어떤 상황인지 알려줍니다. CONFIG_CRYPTO_AUTHENC이 올바른 커널 구성 키입니다 — 단일 옵션에서 authenc와 authencesn 모듈을 모두 빌드합니다.

IPsec을 사용 중이라면 영향을 받을 수 있습니다 — 전체 배포 전에 확인하세요.

업스트림 수정

업스트림 수정은 이 커밋입니다 — algif_aead.c의 2017년 인플레이스 AEAD 최적화를 되돌려 소스와 대상 scatterlist를 분리하여 페이지 캐시 페이지가 더 이상 쓰기 가능한 대상에 들어갈 수 없게 합니다.


컨테이너 및 VM

Docker 컨테이너, Kubernetes 파드 또는 기타 컨테이너 환경 내에서 실행 중이면 스크립트가 경고합니다: 컨테이너는 호스트 커널을 공유합니다. 취약점은 컨테이너 이미지가 아닌 커널에 있습니다. 호스트를 평가하고 패치해야 합니다.


DevSecOps 통합 예시

root@kitploit:~
# GitHub Actions
# 스크립트가 1로 종료되면 단계가 자연스럽게 실패하고 파이프라인을 차단합니다.
# 추가 구성 불필요 — 0이 아닌 종료 코드는 기본적으로 단계를 실패시킵니다.
- name: CVE-2026-31431 확인
  run: |
    python3 cve-2026-31431-detect.py
    rc=$?
    if [ $rc -eq 1 ]; then
      echo "VULNERABLE — 파이프라인 차단"
      exit 1
    elif [ $rc -ne 0 ]; then
      echo "ERROR — 탐지 스크립트 완료 실패 (exit $rc)"
      exit $rc
    fi
root@kitploit:~
# Ansible
# playbook_dir을 사용하여 스크립트 경로가 올바르게 해석되도록 합니다.
# failed_when은 0이 아닌 모든 종료(취약점 또는 스크립트 오류)를 확인합니다.
- name: CVE-2026-31431 확인
  script: "{{ playbook_dir }}/cve-2026-31431-detect.py"
  register: cve_check
  failed_when: cve_check.rc != 0
root@kitploit:~
# Nagios / 모니터링 검사 (셸 스크립트 — 종료 코드 기본 지원)
bash cve-2026-31431-detect.sh --quiet
# exit 0 = OK, exit 1 = CRITICAL (취약)
root@kitploit:~
# SIEM / 로그 집계용 JSON 출력 (셸 스크립트)
bash cve-2026-31431-detect.sh --json --quiet > /var/log/cve-2026-31431-$(hostname)-$(date +%Y%m%d).json

공개 타임라인

날짜이벤트
2026-03-23Linux 커널 보안 팀에 보고
2026-03-24접수 확인
2026-03-25패치 제안 및 검토
2026-04-01메인라인 커널에 수정 커밋
2026-04-22CVE-2026-31431 지정
2026-04-29공개 공개

Theori의 Taeyang Lee의 원래 연구 통찰력과 전체 공개 문서를 작성한 Xint Code Research Team에게 감사를 표합니다.


기여

오탐을 발견했나요? 놓친 배포판이 있나요? 확인해야 할 커널 구성이 있나요? PR 환영합니다. 목표는 무서운 빨간 텍스트가 아닌 정확한 신호입니다.

면책 조항

이 도구는 방어적 보안 목적으로 있는 그대로 제공됩니다. 평가 권한이 있는 시스템에만 사용하세요. 이상하게 굴지 마세요.

도구 다운로드