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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
COPY-FAIL-Detection-with-Wazuh-4.14.4 — Wazuh 4.14.4 CVE-2026-31431 (Copy Fail) 탐지 규칙 - authencesn 페이지 캐시 쓰기를 통한 Linux 로컬 권한 상승 | Kitploit
도구/GitHubGitHub/mym0us3r/copy-fail-detection-with-wazuh-4.14.4
Privilege EscalationVulnerability AnalysisConfiguration AuditingThreat IntelligenceIntrusion Detection
GitHubmym0us3r/copy-fail-detection-with-wazuh-4.14.4

COPY-FAIL-Detection-with-Wazuh-4.14.4

Wazuh 4.14.4 CVE-2026-31431 (Copy Fail) 탐지 규칙 - authencesn 페이지 캐시 쓰기를 통한 Linux 로컬 권한 상승

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
93개월 전아직 검토되지 않음

Wazuh 4.14.4를 이용한 COPY FAIL 탐지 - CVE-2026-31431

Copy Fail 커널 LPE(로컬 권한 상승)용 탐지 엔지니어링 · Ubuntu / RHEL / SUSE / Amazon Linux 2023 / Kali

rules sca status mitre cve


Copy Fail이란 무엇인가?

CVE-2026-31431은 Linux 커널의 authencesn 암호화 템플릿에 존재하는 로직 버그입니다. 이 취약점을 통해 권한이 없는 로컬 사용자는 경쟁 조건(race condition), 커널 오프셋, 또는 상승된 권한 없이도 시스템의 읽기 가능한 모든 파일의 페이지 캐시에 결정적이고 통제된 4바이트 쓰기를 수행할 수 있습니다.

표준 라이브러리 모듈(os, socket, zlib)만 사용하는 732바이트 Python 3.10+ 스크립트는 2017년 이후 출시된 모든 주요 Linux 배포판에서 루트 권한을 획득하는 데 악용됩니다.

디스크의 파일은 변경되지 않은 상태로 유지되므로 기존의 파일 무결성 모니터링(FIM)은 완전히 탐지할 수 없습니다.

Taeyang Lee(Theori / Xint) 가 Xint Code AI 도구의 지원을 받아 발견했습니다.


공식 참고 자료


FIM이 실패하는 이유 - 이 저장소가 존재하는 이유

이 쓰기는 메모리 내 페이지 캐시만을 대상으로 합니다. 커널은 페이지를 더티(dirty)로 표시하지 않으므로 writeback 메커니즘이 디스크에 영구 저장하지 않습니다. 디스크의 바이너리는 원본과 바이트 단위로 동일하게 유지됩니다.

root@kitploit:~
기존 FIM 방식:
  디스크에서 파일 읽기 -> 해시 계산 -> 비교 -> 이상 없음 보고

Copy Fail 현실:
  디스크의 파일 = 변경 없음
  페이지 캐시   = 손상됨
  FIM 결과      = 탐지 불가

유일하게 효과적인 탐지는 syscall 모니터링을 통한 행동 기반 탐지입니다. 이 저장소는 커널 syscall 수준에서 공격 체인을 탐지하는 프로덕션 검증된 Wazuh 규칙을 제공합니다.


공격 체인

root@kitploit:~
1단계: socket(38, 5, 0)       AF_ALG 소켓 - 권한 불필요
2단계: bind()                  authencesn에 바인딩 - 취약 코드 활성화
3단계: sendmsg()               AAD 페이로드 제작 - 4~7번째 바이트 = 쓸 값
4단계: splice()          [!]   트리거 - 페이지 캐시 페이지가 쓰기 가능한 SGL에 진입
5단계: recv()                  authencesn이 seqno_lo를 페이지 캐시에 기록
6단계: execve(/usr/bin/su)     손상된 setuid 바이너리가 UID 0으로 셸코드 실행

CVE-2026-31431 공격 체인

splice()가 핵심 단계입니다. 이 함수는 복사 없이 페이지 캐시 페이지를 AF_ALG 소켓의 쓰기 가능한 scatterlist로 전달합니다. 이는 2017년 algif_aead.c에 도입된 제자리(in-place) 최적화로, 파이프 버퍼의 페이지를 대상 SGL에서 재사용할 수 있게 만든 것입니다. authencesn.decrypt()가 실행되면 해당 페이지에 쓰기가 발생하며, 이 페이지가 바로 대상 파일의 페이지 캐시입니다.


영향을 받는 배포판

커밋 72548b093ee3(2017년) 이후 커널을 탑재한 모든 Linux 배포판이 영향을 받습니다.

컨테이너 탈출: Copy Fail은 컨테이너 탈출 벡터이기도 합니다. 페이지 캐시는 컨테이너 경계를 포함하여 호스트의 모든 프로세스 간에 공유됩니다. Xint의 2부 문서에서 Kubernetes 악용에 대해 다룹니다.


저장소 구조

root@kitploit:~
COPY-FAIL-Detection-with-Wazuh-4.14.4/
│
├── rules/
│   └── local_rules.xml              # Wazuh 탐지 규칙 8개 (199600-199607)
│
├── auditd/
│   └── cve-2026-31431.rules         # auditd syscall 센서 규칙
│
├── sca/
│   └── cve_2026_31431.yml           # SCA 정책 - 커널 버전 무관
│
└── docs/
    ├── pentlab_uid.png               # PoC 실행 - Kali에서 루트 권한 획득
    ├── Rule-199604-TRIGs.png         # 규칙 199604 - pentlab에서 80회 적중
    ├── Rule_199604_Wazuh_Server_only.png  # 규칙 199604 - 첫 검증
    ├── Splice_-_Non-root_process.png # 규칙 199600/199601/199604 발동
    ├── Modprobe_-_Possible_Algif_aed_load_attempt.png  # 규칙 199603
    ├── Pentlab-PoC.png               # pentlab 에이전트의 규칙 199603
    ├── exploit_chain_timeline.svg    # 공격 체인
    └── SCA_CVE-2026-31431.png        # SCA 정책 점수 75%

탐지 아키텍처

두 개의 독립적인 계층 — 어느 것도 커널 버전에 의존하지 않습니다.

계층 1 - 행동 기반 탐지 (auditd + Wazuh)

uid!=0 필터는 대화형 계정 외에도 서비스 계정(www-data, postgres, jenkins), 컨테이너, 로그인 세션이 없는 웹 셸까지 포함합니다.

Auditd 센서 규칙 (auditd/cve-2026-31431.rules):

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -k copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -k copy_fail_splice
-w /usr/bin/su    -p x -k copy_fail_execve_su
-w /usr/bin/kmod  -p x -k copy_fail_modload

계층 2 - 취약점 표면 (SCA 정책)

sca/cve_2026_31431.yml을 통해 12시간마다 자동 구성 검사를 수행합니다. 커널 버전이 필요하지 않습니다.

규칙 체인 아키텍처

엔지니어링 참고: 규칙 199600과 199601은 80700이 아닌 규칙 92600(Python 프로세스, 깊이 1)의 자식이어야 합니다. Wazuh 규칙 엔진은 이벤트당 하나의 체인 경로만 따릅니다. 탐지 규칙을 92600 아래 깊이 2에 배치하면 형제 규칙(예: 0850-audit_rules.xml의 92603-92606, if_group=audit + exe=python도 일치)보다 체인 평가에서 우선적으로 승리합니다.


배포

1단계 - auditd 설치

root@kitploit:~
# Ubuntu / Debian / Kali
apt install auditd audispd-plugins -y
systemctl enable --now auditd
auditctl -s | grep enabled
root@kitploit:~
# RHEL / Amazon Linux
yum install audit -y
systemctl enable --now auditd
root@kitploit:~
# SUSE
zypper install audit -y
systemctl enable --now auditd

2단계 - auditd 센서 규칙 배포

root@kitploit:~
cp auditd/cve-2026-31431.rules /etc/audit/rules.d/
augenrules --load
auditctl -l | grep copy_fail

예상 출력:

root@kitploit:~
-a always,exit -F arch=b64 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b32 -S socket -F a0=0x26 -F uid!=0 -F key=copy_fail_af_alg
-a always,exit -F arch=b64 -S splice -F uid!=0 -F key=copy_fail_splice
-w /usr/bin/su -p x -k copy_fail_execve_su
-w /usr/bin/kmod -p x -k copy_fail_modload

3단계 - Wazuh 탐지 규칙 배포

규칙은 rules/local_rules.xml에 제공됩니다. 기존 /var/ossec/etc/rules/local_rules.xml에 내용을 병합하거나 독립 파일로 배포할 수 있습니다:

root@kitploit:~
# 옵션 A - 독립 파일
cp rules/local_rules.xml /var/ossec/etc/rules/cve-2026-31431_rules.xml

# 옵션 B - local_rules.xml에 추가
cat rules/local_rules.xml >> /var/ossec/etc/rules/local_rules.xml
root@kitploit:~
# 구문 검증 - 경고 0건으로 종료 코드 0이어야 함
/var/ossec/bin/wazuh-analysisd -t 2>&1 | tail -5

# 매니저 재시작
systemctl restart wazuh-manager

4단계 - SCA 정책 배포

root@kitploit:~
cp sca/cve_2026_31431.yml /var/ossec/etc/shared/default/

ossec.conf의 <sca> 블록 안에 추가:

root@kitploit:~
<policies>
  <policy>/var/ossec/etc/shared/default/cve_2026_31431.yml</policy>
</policies>
root@kitploit:~
systemctl restart wazuh-manager

5단계 - ossec.conf localfile 구성

Wazuh가 auditd 로그를 수집하는지 확인:

root@kitploit:~
<!-- <ossec_config> 안에 추가 -->
<localfile>
  <log_format>audit</log_format>
  <location>/var/log/audit/audit.log</location>
</localfile>

검증

빠른 테스트 (익스플로잇 없음 - syscall만)

root@kitploit:~
# 필요한 경우 테스트 사용자 생성
useradd -m testuser 2>/dev/null || true

# 신호 1 생성 - AF_ALG 소켓
su - testuser -c "python3 -c \"import socket; socket.socket(38, 5, 0); print('AF_ALG OK')\""

# 신호 3 생성 - /usr/bin/su 실행
su - testuser -c "/usr/bin/su --help 2>/dev/null || true"

# auditd가 이벤트를 캡처했는지 확인
ausearch -k copy_fail_af_alg -ts recent 2>/dev/null | grep "key=\|exe=\|uid=" | head -5

# Wazuh가 알림을 생성했는지 확인
grep -E "199600|199602" /var/ossec/logs/alerts/alerts.log | tail -10

SCA 결과 검증

root@kitploit:~
grep -E "31431|cve_2026" /var/ossec/logs/alerts/alerts.log | tail -10

예상 SCA 점수 (미완화 시스템): 75% (3개 통과 / 1개 실패 - algif_aead가 블랙리스트에 없음)


프로덕션 검증 증거

PoC 실행 - Kali에서 루트 권한 획득 (pentlab)

testuser (uid=1001)가 732바이트 PoC를 실행하여 루트 셸을 획득했습니다:

PoC - Kali에서 루트 권한 획득


규칙 199604 - 공격 체인 탐지됨 (pentlab, 80회 적중)

동일한 python 프로세스의 AF_ALG 소켓 + splice() - pid=46784 - 즉시 조사 필요:

규칙 199604 - pentlab 80회 적중


규칙 199604 - 첫 검증 (Wazuh 서버, pid=53447)

규칙 199604 - Wazuh 서버


규칙 199600 / 199601 / 199604 - splice() 및 AF_ALG 발동

Splice 및 AF_ALG - 비루트 프로세스


규칙 199603 - modprobe 실행 탐지됨 (93회 적중)

Modprobe - algif_aead 로드 시도 가능성


규칙 199603 - pentlab 에이전트 (35회 적중)

Pentlab - 규칙 199603


SCA 정책 - 점수 75% (3개 통과 / 1개 실패)

SCA CVE-2026-31431


Wazuh 대시보드 Discover 결과 (에이전트=pentlab, 오늘):

wazuh-analysisd -t: 종료 코드 0 - 경고 0건 - 규칙 8개 모두 로드됨.


완화 조치

즉시 완화 (패치 적용 전)

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

이 조치는 dm-crypt/LUKS, kTLS, IPsec, OpenSSL, GnuTLS 또는 SSH에는 영향을 주지 않습니다.

영구 수정

배포판의 커널 업데이트를 통해 커널 커밋 a664bf3d603d를 적용하세요. 이 커밋은 algif_aead.c의 2017년 제자리 최적화를 되돌려 req->src(splice가 페이지를 전달하는 TX SGL)와 req->dst(사용자 버퍼인 RX SGL)를 분리합니다. 모든 주요 배포판에서 이 수정 사항을 제공하고 있습니다.

root@kitploit:~
# Ubuntu / Debian
apt update && apt upgrade linux-generic

# RHEL / Amazon Linux
dnf update kernel

# SUSE
zypper update kernel-default

공개 타임라인


유사 취약점과의 비교


SCA 정책 요약


작성자

Kislley Rodrigues (m0us3r) Wazuh 앰배서더 | 탐지 엔지니어링 | 블루 팀


감사의 말

  • Taeyang Lee (Theori / Xint) - CVE-2026-31431의 발견, 분석 문서 작성 및 조율된 공개
  • Wazuh 팀 - 오픈 SIEM/XDR 플랫폼 및 앰배서더 프로그램
  • Xint Research - https://xint.io/blog/copy-fail-linux-distributions 의 기술적 깊이

탐지 규칙, auditd 센서 구성 및 SCA 정책은 Wazuh 4.14.4, Ubuntu 24.04.2 LTS (커널 6.8.0-106-generic) 및 Kali GNU/Linux 2026.1 (커널 6.18.12+kali-amd64)에서 검증되었습니다.


2026-05-03 업데이트

출처링크
CISA, 적극적으로 악용되는 Linux 루트 접근 버그 CVE-2026-31431을 KEV에 추가https://thehackernews.com/2026/05/cisa-adds-actively-exploited-linux-root.html


Wazuh

이 프로젝트는 Wazuh 앰배서더 프로그램의 일환으로 개발되었습니다.

Wazuh는 통합 XDR 및 SIEM 보호를 제공하는 무료 오픈소스 보안 플랫폼입니다. 자세한 내용은 wazuh.com에서 확인하세요.

도구 다운로드
리소스링크
공식 CVE 사이트https://copy.fail/
기술 분석 문서 - Xint Researchhttps://xint.io/blog/copy-fail-linux-distributions
PoC - copy_fail_exp.pyhttps://github.com/theori-io/copy-fail-CVE-2026-31431/blob/main/copy_fail_exp.py
커널 패치 - a664bf3d603dhttps://github.com/torvalds/linux/commit/a664bf3d603d
취약 커밋 - 72548b093ee3https://github.com/torvalds/linux/commit/72548b093ee3
MITRE ATT&CK T1068https://attack.mitre.org/techniques/T1068/
배포판커널상태
Ubuntu 24.04 LTS6.17.0-1007-aws루트 권한 확인됨
Amazon Linux 20236.18.8-9.213.amzn2023루트 권한 확인됨
RHEL 10.16.12.0-124.45.1.el10_1루트 권한 확인됨
SUSE 166.12.0-160000.9-default루트 권한 확인됨
Kali GNU/Linux 2026.16.18.12+kali-amd64루트 권한 확인됨
규칙부모신호깊이수준
80700decoded_as=auditdauditd 앵커 (Wazuh 내장)00
9260080700Python 프로세스 실행 (Wazuh 내장)10
19960092600AF_ALG 소켓 - python 체인210
19960192600splice() syscall - python 체인210
199604199601 + if_matched=199600공격 체인 - python (동일 pid/120초)315
19960280700/usr/bin/su 실행16
19960380700modprobe/kmod 실행112
19960580700AF_ALG 소켓 - 비-python110
19960680700splice() syscall - 비-python110
199607199606 + if_matched=199605공격 체인 - 비-python (동일 pid/120초)215
규칙
적중 수
설명
19960480공격 체인 탐지됨 - pid=46784 exe=/usr/bin/python3.13
19960040비루트 프로세스가 AF_ALG 소켓 생성
19960328modprobe 실행 탐지됨
19960212/usr/bin/su 실행됨
날짜이벤트
2026-03-23Linux 커널 보안 팀에 취약점 보고
2026-03-24초기 확인 접수
2026-03-25패치 제안 및 검토
2026-04-01메인라인 커널에 패치 커밋 (a664bf3d603d)
2026-04-22CVE-2026-31431 지정
2026-04-29공개 공개 - Xint 분석 문서 + PoC 게시
Dirty Cow (2016-5195)Dirty Pipe (2022-0847)Copy Fail (2026-31431)
경쟁 조건예 - 여러 번 시도 필요아니요아니요 - 결정적 로직
시스템 충돌 가능예아니요아니요
이식성제한적버전별 상이2017년 이후 모든 배포판
익스플로잇 크기킬로바이트 (C)수백 바이트732바이트 (Python 표준 라이브러리)
FIM 탐지가능가능불가능
검사
제목
위험도
31431001algif_aead가 메모리에 로드되지 않음치명적
31431002modprobe.d를 통해 algif_aead 비활성화높음
31431003auditd 활성 및 실행 중높음
31431004CVE-2026-31431 센서 규칙 배포됨높음
알려진 악용 취약점 카탈로그https://www.cisa.gov/known-exploited-vulnerabilities-catalog
CVE-2026-31431 - crypto: algif_aead - 제자리(out-of-place) 운영으로 되돌림https://www.cve.org/CVERecord?id=CVE-2026-31431