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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Estudo-de-Caso-CVE-2026-31431-CopyFail — 🔐 CVE-2026-31431(CopyFail) 전체 사례 연구 — Linux 커널의 심각한 권한 상승 취약점. 기술 분석, 검증 스크립트, 하드닝 및 침해 대응 플레이북을 포함합니다. 교육 목적으로 제공됩니다. | Kitploit
도구/GitHubGitHub/pedro-lucas-melo/estudo-de-caso-cve-2026-31431-copyfail
Privilege EscalationVulnerability AnalysisExploitationLearning & EducationIncident ResponseCurated Resources
GitHubpedro-lucas-melo/estudo-de-caso-cve-2026-31431-copyfail

Estudo-de-Caso-CVE-2026-31431-CopyFail

🔐 CVE-2026-31431(CopyFail) 전체 사례 연구 — Linux 커널의 심각한 권한 상승 취약점. 기술 분석, 검증 스크립트, 하드닝 및 침해 대응 플레이북을 포함합니다. 교육 목적으로 제공됩니다.

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

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

🐧 CVE-2026-31431 — CopyFail: Linux 커널 권한 상승

완전한 사례 연구 — 2017년 이후 거의 모든 Linux 배포판에 영향을 미치는 치명적인 취약점이 어떻게 발견되었는지, 어떻게 작동하는지, 어떻게 테스트하는지, (안전한 환경에서) 어떻게 재현하는지, 그리고 어떻게 수정하는지.


🚨 법적 고지 / 면책 조항

이 저장소는 교육 목적으로만 제공됩니다. 여기에 포함된 정보는 보안 전문가, 연구원 및 사이버보안 학생을 대상으로 합니다. 명시적 승인 없이 여기에 설명된 어떤 기술도 시스템에 사용하지 마십시오. 이 정보의 오용은 브라질 법률 제12.737/2012호(캐롤라이나 디크만 법) 및 인터넷 민간 프레임워크(법률 제12.965/2014호)에 따른 범죄에 해당할 수 있습니다.


📋 목차

  • 개요
  • 발견 경위
  • 취약점 작동 방식
  • 영향을 받는 시스템
  • 악용 시나리오
  • 테스트 방법 (안전한 랩)
  • 익스플로잇 재현
  • 수정 방법
  • 침해 지표 (IOC)
  • 교훈
  • 참고 자료

📌 개요


🔍 발견 경위

CopyFail 취약점은 보안 기업 Theori 가 Linux 커널 코드, 특히 메모리 공간 간 데이터 복사를 담당하는 하위 시스템을 분석하던 중 발견했습니다.

타임라인

root@kitploit:~
2026년 3월      → Theori 연구원들이 커널에서 비정상적인 동작 식별
2026년 3월      → 커널 보안 팀에 책임 있는 공개 (Responsible Disclosure)
약 1주일 후 → kernel.org에서 업스트림 패치 제공
2026년 5월       → 익스플로잇 코드 (PoC) 공개
2026/05/01      → Microsoft 기술 분석 게시
2026/05/04      → CISA가 KEV 카탈로그 (Known Exploited Vulnerabilities)에 추가
2026/05/15      → 미국 연방 기관 수정 기한

"CopyFail"이라는 이름의 이유는?

Linux 커널에는 메모리의 서로 다른 영역(userspace ↔ kernelspace) 간에 데이터를 복사하는 내부 루틴이 있습니다. 이 결함은 영향을 받는 구성 요소가 복사해야 할 특정 데이터를 복사하지 않기 때문에 CopyFail이라는 이름이 붙었습니다. 이로 인해 커널 내부의 민감한 데이터 구조가 손상되어 권한 상승을 위한 악용 창구가 열립니다.


⚙️ 취약점 작동 방식

기술적 개념

Linux 커널은 두 개의 서로 다른 공간에서 메모리를 관리합니다:

  • Userspace: 일반(사용자) 프로세스가 작동하는 공간, 제한된 액세스
  • Kernelspace: 하드웨어 및 시스템 데이터에 대한 전체 액세스 권한이 있는 특권 공간
root@kitploit:~
┌─────────────────────────────────────┐
│           USERSPACE                 │
│   공격자 프로세스 (uid=1000)   │
│   → 악의적인 syscall 호출         │
└────────────────┬────────────────────┘
                 │ syscall
                 ▼
┌─────────────────────────────────────┐
│           KERNELSPACE               │
│   데이터 복사 루틴          │
│   → BUG: 메타데이터 복사 실패  │
│   → 제어 구조 손상  │
│   → 공격자가 포인터 조작      │
│   → root로 코드 실행        │
└─────────────────────────────────────┘

악용 메커니즘

  1. 트리거: 공격자(권한 없는 로컬 사용자)가 결함이 있는 복사 루틴을 작동시키는 특정 syscall을 호출합니다
  2. 손상: 데이터 복사 실패로 커널의 제어 구조(예: 자격 증명 struct 또는 함수 포인터)가 손상됩니다
  3. 제어 흐름 하이재킹: 공격자는 손상을 이용해 커널 실행을 리디렉션합니다
  4. 권한 상승: 공격자의 프로세스가 uid=0(root)으로 실행되어 시스템에 대한 전체 제어권을 얻습니다

버그의 단순화된 의사 코드

root@kitploit:~
// 취약한 버전 (단순화, 교육용)
int kernel_copy_data(struct user_request *req) {
    struct kernel_buffer kbuf;
    
    // BUG: 데이터의 일부만 복사하고 중요한 필드는 무시합니다
    // 보안 필드(security_context)가 복사되지 않습니다!
    memcpy(&kbuf.data, req->data, req->size);
    // → kbuf.security_context는 초기화되지 않은 상태로 유지됩니다 (메모리 쓰레기)
    
    process_buffer(&kbuf); // 손상된 데이터 사용
    return 0;
}

// 수정된 버전
int kernel_copy_data(struct user_request *req) {
    struct kernel_buffer kbuf;
    
    // FIX: 보안 필드를 포함한 전체 struct를 복사합니다
    if (copy_from_user(&kbuf, req, sizeof(struct kernel_buffer)))
        return -EFAULT;
    
    process_buffer(&kbuf);
    return 0;
}

🎯 영향을 받는 시스템

⚠️ 2017년 이후 배포된 커널 ≤ 7.0을 실행하는 모든 Linux 배포판은 잠재적으로 취약합니다.


💥 악용 시나리오

시나리오 1 — 직접 로컬 공격

공유 서버(예: 호스팅 환경, VPS)의 권한 없는 사용자가 익스플로잇을 실행하여 root를 얻습니다.

시나리오 2 — 원격 익스플로잇과의 체인 공격 (RCE → LPE)

root@kitploit:~
인터넷 → [웹 취약점을 통한 RCE] → 제한된 셸 → [CopyFail] → root

Microsoft 분석에 따르면: 이 결함은 인터넷을 통해 전달되는 익스플로잇(예: 웹 애플리케이션의 RCE)과 체인으로 연결되어 서버가 완전히 손상될 수 있습니다.

시나리오 3 — 사회 공학

Linux 사용자가 악성 링크나 첨부 파일을 열도록 속아 로컬에서 익스플로잇이 실행됩니다.

시나리오 4 — 공급망 공격

악의적인 행위자가 오픈 소스 개발자 계정을 손상시키고 널리 배포되는 코드에 익스플로잇을 주입합니다.

시나리오 5 — 데이터센터 손상

손상된 클라우드 서버는 동일한 인프라에 있는 모든 VM, 컨테이너, 애플리케이션 및 고객 데이터베이스를 노출할 수 있습니다.


🧪 테스트 방법 (안전한 랩)

⚠️ 통제되고 격리된 환경에서만 — 외부 네트워크 액세스가 없는 VM!

사전 요구 사항

root@kitploit:~
# 필요한 도구
sudo apt install -y git build-essential libssl-dev bc flex bison

# 현재 커널 버전 확인
uname -r

# 취약한 범위(≤ 7.0)에 있는지 확인
# 취약한 출력 예: 6.8.0-51-generic

테스트 환경 구성

root@kitploit:~
# 1. 격리된 VM 생성 (권장: VirtualBox 또는 QEMU)
# Ubuntu 24.04 또는 Debian Bookworm ISO 사용

# 2. VM이 프로덕션 인터넷에 액세스할 수 없는지 확인
# (host-only 네트워크 또는 격리된 NAT 사용)

# 3. 공격자를 시뮬레이션할 권한 없는 사용자 생성
sudo adduser testuser
su - testuser

# 4. testuser에게 sudo가 없는지 확인
sudo whoami  # 반환값: "testuser is not in the sudoers file"

시스템이 취약한지 확인

root@kitploit:~
# 확인 스크립트 (악용하지 않고 확인만)
#!/bin/bash

KERNEL_VERSION=$(uname -r | cut -d. -f1,2)
MAJOR=$(echo $KERNEL_VERSION | cut -d. -f1)
MINOR=$(echo $KERNEL_VERSION | cut -d. -f2)

echo "[*] 감지된 커널: $(uname -r)"

if [ "$MAJOR" -lt 7 ] || ([ "$MAJOR" -eq 7 ] && [ "$MINOR" -eq 0 ]); then
    echo "[!] CVE-2026-31431 (CopyFail)에 잠재적으로 취약"
    echo "[!] 배포판 공급업체가 패치를 적용했는지 확인하세요"
else
    echo "[+] 커널 버전이 영향을 받는 범위를 벗어남"
fi

# 패치가 적용되었는지 확인 (패키지 변경 로그를 통해)
apt changelog linux-image-$(uname -r) 2>/dev/null | grep -i "CVE-2026-31431" && \
    echo "[+] 변경 로그에서 CVE-2026-31431 패치 발견" || \
    echo "[?] 변경 로그에서 패치가 감지되지 않음 — 수동으로 확인하세요"

🔬 익스플로잇 재현 (통제된 환경)

🔒 이 섹션은 엄격히 교육용입니다. 아래 코드는 공격 벡터의 단순화된 교육용 표현입니다 — 실제 익스플로잇이 아닙니다(윤리적 이유로 여기에 공개되지 않음).

익스플로잇의 개념적 구조

root@kitploit:~
#!/usr/bin/env python3
"""
CVE-2026-31431 (CopyFail) — 교육용 표현
목적: 공격적/방어적 보안 교육
승인 없이 시스템에서 사용하지 마십시오
"""

import ctypes
import os
import sys

def check_environment():
    """랩 환경에 있는지 확인"""
    kernel = os.uname().release
    print(f"[*] 커널: {kernel}")
    print(f"[*] 현재 UID: {os.getuid()}")
    
    if os.getuid() == 0:
        print("[-] 이미 root입니다. 익스플로잇이 필요하지 않습니다.")
        sys.exit(0)

def demonstrate_concept():
    """
    공격 벡터의 개념적 데모:
    
    1. 취약한 syscall 식별
    2. 불완전한 복사를 트리거하는 페이로드 구성
    3. 메모리 손상 모니터링
    4. 권한 상승을 위해 흐름 리디렉션
    
    실제 익스플로잇에서:
    - 공격자는 힙 스프레이 또는 ROP 체인과 같은 기술을 사용합니다
    - 손상과 손상된 데이터 사용 사이의 창을 악용합니다
    - 프로세스 자격 증명을 덮어씁니다 (uid → 0)
    """
    print("[*] 개념: 결함이 있는 복사 루틴 트리거")
    print("[*] 개념: kernel_buffer struct 손상 모니터링")
    print("[*] 개념: 실행 흐름 리디렉션")
    print("[*] 참조: https://xint.io/blog/copy-fail-linux-distributions")

def main():
    check_environment()
    demonstrate_concept()
    print("\n[i] 전체 기술 분석은 다음을 참조하세요:")
    print("    → https://xint.io/blog/copy-fail-linux-distributions")
    print("    → https://www.microsoft.com/en-us/security/blog/2026/05/01/cve-2026-31431-copy-fail-vulnerability-enables-linux-root-privilege-escalation/")

if __name__ == "__main__":
    main()

테스트 중 모니터링

root@kitploit:~
# 별도 터미널에서 커널 로그 모니터링
sudo dmesg -w | grep -E "(oops|panic|null pointer|exploit|cve)"

# 시스템 호출 모니터링
sudo strace -e trace=all -p <PID_DO_PROCESSO>

# 실시간 UID 변경 확인
watch -n 0.5 'cat /proc/self/status | grep -E "^(Uid|Gid)"'

🛡️ 수정 방법

1. 커널 업데이트 (최종 수정)

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

# 재부팅 후 버전 확인
uname -r

# Red Hat / CentOS / Amazon Linux
sudo dnf update -y kernel
sudo reboot

# SUSE
sudo zypper update -t package kernel-default
sudo reboot

2. 패치 적용 여부 확인

root@kitploit:~
# 설치된 커널의 변경 로그 확인
apt changelog linux-image-$(uname -r) | grep CVE-2026-31431

# Ubuntu CVE 추적기를 통해
# https://ubuntu.com/security/CVE-2026-31431

# Red Hat CVE 데이터베이스를 통해
# https://access.redhat.com/security/cve/CVE-2026-31431

3. 임시 완화 조치 (즉시 업데이트가 불가능한 경우)

root@kitploit:~
# SUID 바이너리 실행 제한 (공격 표면 축소)
find / -perm -4000 -type f 2>/dev/null

# 의심스러운 syscall 감사 활성화
sudo auditctl -a always,exit -F arch=b64 -S all -k syscall_audit

# 권한 상승 시도 모니터링
sudo apt install -y auditd
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes

4. 패치 후 추가 하드닝

root@kitploit:~
# 커널 보호 활성화
# /etc/sysctl.conf — 다음 추가:
kernel.dmesg_restrict = 1
kernel.kptr_restrict = 2
kernel.perf_event_paranoid = 3
kernel.unprivileged_bpf_disabled = 1
net.core.bpf_jit_harden = 2

# 적용
sudo sysctl -p

5. 사고 대응 체크리스트

  • 커널 ≤ 7.0을 사용하는 모든 Linux 시스템 식별
  • 인터넷에 노출되거나 데이터센터에 있는 서버 우선 처리
  • 각 배포판의 패치 적용 (업스트림만이 아닌)
  • 의심스러운 권한 상승에 대한 인증 로그 검토
  • 승인되지 않은 SUID 바이너리 존재 확인
  • root로 실행되는 crontab 및 서비스 확인
  • 보안 팀 및 경영진에게 통보
  • 악용 증거가 있는 경우 문서화 및 보고

🔎 침해 지표 (IOC)

root@kitploit:~
# 가능한 악용 징후:

# 1. root로 실행되는 일반 사용자 프로세스
ps aux | awk '$1 != "root" && $2 == "0"'

# 2. 최근에 생성된 새 SUID 바이너리
find / -perm -4000 -newer /etc/passwd -type f 2>/dev/null

# 3. /etc/passwd의 의심스러운 항목
grep "uid=0" /etc/passwd

# 4. 손상 메시지가 있는 커널 로그
dmesg | grep -iE "(oops|BUG:|corruption|cve)"

# 5. 승인되지 않은 네트워크 연결
ss -tulnp | grep LISTEN

📚 교훈

보안 팀을 위한

  1. 패치 관리는 중요합니다 — 업스트림 패치는 약 1주일 내에 제공되었지만 배포판은 전달하는 데 더 오래 걸립니다. 공급업체를 적극적으로 모니터링하세요.

  2. 심층 방어 — LPE만으로는 충분하지 않습니다. 공격자는 초기 액세스가 필요합니다. 시스템에 액세스할 수 있는 사람을 통제하세요.

  3. 취약점 체인 공격 — "저위험" 개별 CVE는 결합되면 치명적일 수 있습니다. CVSS 점수만이 아닌 맥락에서 위험을 평가하세요.

  4. 공급망은 실제 벡터입니다 — 널리 사용되는 오픈 소스 코드는 공격 벡터가 될 수 있습니다. 패키지 무결성 검증을 구현하세요.

  5. Kubernetes와 컨테이너는 면역이 아닙니다 — 호스트 커널이 취약하면 그 위의 컨테이너도 영향을 받습니다.

개발자를 위한

  1. 항상 완전한 struct를 복사하세요 — 커널 제어 struct의 개별 필드를 복사할 때 모든 중요한 필드가 초기화되도록 보장하지 않고 복사하지 마십시오.

  2. copy_from_user()를 올바르게 사용하세요 — 커널 복사 함수에는 특정한 의미론이 있습니다. 사용 전에 문서를 읽으세요.

  3. 보안 코드 리뷰 — 커널 변경은 기능뿐만 아니라 보안에 초점을 맞춘 검토가 필요합니다.

관리자를 위한

  1. 커널 업데이트는 우선순위입니다 — 단순한 "일상 유지보수"가 아닙니다. 커널 취약점은 종종 치명적입니다.

  2. 자산 인벤토리는 필수입니다 — 보유하고 있는 것을 모르면 수정할 수 없습니다. Linux 시스템 및 커널 버전의 최신 인벤토리를 유지하세요.

  3. 사고 대응 계획 — CISA KEV와 같은 공격적인 기한이 있는 치명적인 취약점을 위한 플레이북을 준비하세요.


📖 참고 자료

  • CISA KEV 카탈로그 — CVE-2026-31431
  • Theori — CopyFail 기술 발견
  • Microsoft 보안 블로그 — 취약점 분석
  • CopyFail — 취약점 공식 웹사이트
  • Jorijn Schrijvershof — 상세 설명
  • Olhar Digital — 포르투갈어 보도
  • Ubuntu 보안 — CVE 추적기
  • Red Hat — CVE 데이터베이스

🤝 기여하기

오래된 내용을 발견했거나 테스트 시나리오를 추가하고 싶으신가요? 이슈 또는 PR을 열어주세요!

행동 강령을 준수해 주세요: 이 저장소는 교육과 방어를 위한 것입니다 — 악의적인 활동이 아닙니다.


📄 라이선스

MIT 라이선스 — 시스템을 배우고, 가르치고, 방어하는 데 사용하세요. 공격에는 절대 사용하지 마십시오.


"공격을 아는 것이 방어를 구축하는 첫걸음입니다."

⭐ 이 사례 연구가 유용했다면 저장소에 별표를 남겨주세요!

도구 다운로드
필드세부 사항
CVE IDCVE-2026-31431
별칭CopyFail
유형로컬 권한 상승 (LPE) — Privilege Escalation
CVSS 점수8.8 (High) / 체인 공격 시 잠재적으로 Critical
구성 요소Linux 커널 — 데이터 복사 메커니즘
버전Linux 커널 ≤ 7.0 (2017년 이후 배포판)
발견자Theori (보안 기업)
공개일2026년 3월
업스트림 패치책임 있는 공개 후 약 1주일 내 제공
CISA 상태적극적으로 악용됨으로 등록 — KEV 카탈로그
CISA 기한연방 기관은 2026/05/15까지 수정해야 함
배포판버전상태
Red Hat Enterprise Linux10.1✅ 취약
Ubuntu LTS24.04✅ 취약
Amazon Linux2023✅ 취약
SUSE Linux16✅ 취약
Debian최신 안정 버전✅ 취약
Fedora최신 버전✅ 취약
Kubernetes (노드)커널 ≤7.0을 사용하는 모든 노드✅ 취약