Linux 커널 Copy Fail 취약점: CVE-2026-31431 대응과 방어 설계

CVE-2026-31431 Copy Fail의 AF_ALG 취약점 원리와 CISA KEV 기반 패치, Linux 커널 방어 운영 방안을 정리한다.

2026-08-14 · 최초 발행 2026-05-14

페이지 캐시를 겨냥한 Copy Fail의 공격 경로

2026년 4월 29일 보안 연구 기업 Theori가 Linux 커널 제로데이 CVE-2026-31431, 별칭 “Copy Fail”을 공개했다. CISA는 5월 1일 이 취약점을 KEV(Known Exploited Vulnerabilities) 목록에 등재했고, 연방 기관에는 5월 15일까지 패치를 적용하도록 요구했다. 2017년 이후 출시된 거의 모든 주요 Linux 배포판이 영향을 받으며, 732바이트짜리 파이썬 스크립트 한 줄로 루트 셸을 획득할 수 있다는 점이 알려졌다.

CVE-2026-31431은 Linux 커널 사용자 공간 암호화 API(AF_ALG)의 AEAD 소켓 인터페이스인 algif_aead 모듈에 존재하는 로컬 권한 상승(LPE, Local Privilege Escalation) 취약점이다. CVSS 점수는 7.8(High)이고 CWE 분류는 CWE-699(Incorrect Resource Transfer Between Spheres)다.

문제의 출발점은 2017년 커밋 72548b093ee3이다. 이 변경은 인-플레이스(in-place) 최적화를 도입하면서 페이지 캐시 페이지를 쓰기 가능한 목적지 스캐터리스트(scatterlist)에 직접 둘 수 있게 했다. 이 설계 결함은 9년 동안 잠복해 있었다.

공격자는 AF_ALG 소켓 연산과 splice() 시스템 콜을 조합해 페이지 캐시 기반 페이지에 통제된 4바이트 쓰기를 수행한다. /usr/bin/su처럼 setuid 비트가 설정된 바이너리가 표적이 될 수 있다.

┌───────────────────────────────────────────────────────┐
│  공격 흐름 (Copy Fail Exploit Chain)                  │
│                                                       │
│  1. AF_ALG 소켓 생성 (algif_aead)                    │
│  2. splice()로 페이지 캐시 참조 획득                  │
│  3. in-place 최적화 경로 트리거                       │
│  4. setuid 바이너리 페이지 캐시에 4바이트 패치        │
│  5. 조작된 /usr/bin/su 실행 → root shell 획득        │
└───────────────────────────────────────────────────────┘

이 경로는 레이스 컨디션에 기대지 않는다. 타이밍 윈도우나 충돌 가능성 없이 결정론적(deterministic)으로 동작하므로 신뢰도 높은 익스플로잇이 가능해진다. DirtyPipe(CVE-2022-0847)와 기술적 계보는 유사하지만, 안정성 측면에서는 훨씬 우수한 익스플로잇 특성을 보인다.

CoW 보호를 비켜가는 in-place 경로

Linux 커널은 파일 I/O 성능을 위해 페이지 캐시를 사용한다. 일반 사용자가 파일에 쓰기를 시도할 때는 카피-온-라이트(CoW)가 기존 페이지를 복사하고 복사본을 수정하므로 원본 페이지 캐시는 보호된다.

algif_aead의 in-place 최적화는 이 보호 경로를 우회한다. AEAD 암호화 연산에서 입력과 출력 버퍼가 같은 물리 페이지를 가리키도록 허용해 복사 비용을 줄이려 했지만, 페이지 캐시 페이지가 쓰기 가능한 상태로 노출되는 부작용을 만들었다.

SMEP(Supervisor Mode Execution Prevention), SMAP(Supervisor Mode Access Prevention), KASLR(Kernel Address Space Layout Randomization)은 커널 익스플로잇 대응에 쓰이는 하드웨어 및 주소 공간 보호 장치다.

  • SMEP: 커널 컨텍스트에서 사용자 공간 메모리의 코드 실행을 차단한다.
  • SMAP: 커널 컨텍스트에서 사용자 공간 메모리 읽기와 쓰기를 차단한다.
  • KASLR: 커널 메모리 주소를 무작위화해 주소 예측을 어렵게 한다.

Copy Fail은 커널 메모리를 직접 조작하거나 사용자 공간 코드를 커널에서 실행하지 않는다. 정상적인 페이지 캐시 메커니즘을 악용해 디스크상의 파일을 바꾸지 않고 메모리에 올라온 setuid 바이너리의 내용을 변조한다. 이 때문에 위 보호 장치만으로는 막을 수 없다.

공격자 (일반 사용자)AF_ALG 소켓 + splice()algif_aeadin-place 최적화페이지 캐시 쓰기 허용(CoW 우회)setuid 바이너리페이지 캐시 패치SMEP/SMAP 우회(커널 메모리 미접촉)루트 획득정상 보호 경로CoW 메커니즘페이지 캐시 보호setuid 바이너리 안전

KEV 신호를 패치 우선순위에 반영하는 법

CISA KEV 목록은 실제 악용이 확인된 취약점만 등재한다. 따라서 단순한 취약점 데이터베이스가 아니라 패치 순서를 결정하는 핵심 근거가 된다. CVE-2026-31431은 2026년 5월 1일 KEV에 추가됐고, 연방 민간 기관(FCEB)에는 5월 15일까지인 14일의 의무 패치 기한이 주어졌다.

엔터프라이즈에서 Copy Fail의 우선순위를 판단할 때는 CVSS, KEV 등재 여부, 공개 PoC, 영향 자산, 공급사 패치 가용성을 함께 봐야 한다.

분류 기준 설명 Copy Fail 해당 여부
CVSS 점수 7.0 이상 High/Critical 7.8 (High) 해당
KEV 등재 실제 악용 증거 등재됨
공개 PoC 익스플로잇 코드 공개 732바이트 Python PoC 공개
영향 범위 자산 범위 및 비즈니스 영향 전체 Linux 서버
패치 가용성 공급사 패치 제공 여부 커널 6.18.22/6.19.12/7.0 패치

패치가 가능한 자산은 스테이징 검증 뒤 자동 배포하고, 아직 패치가 준비되지 않은 자산에는 임시 완화를 적용하는 흐름이 필요하다.

가용미가용KEV 신규 등재CVE-2026-31431자산 인벤토리스캔영향 자산식별패치 가용여부?스테이징 환경패치 검증임시 완화조치 적용프로덕션자동 배포패치 완료검증ITSM/GRC시스템 기록

서비스를 멈출 수 없는 환경에서는 커널 라이브 패치가 대응 속도를 높인다. 배포판별로 RHEL/CentOS는 Red Hat의 kpatch, Ubuntu는 Canonical의 Livepatch Service, SUSE는 SUSE의 Live Patching, CloudLinux는 KernelCare(상용)를 제공한다. 라이브 패치는 재부팅 없이 실행 중인 커널에 패치를 적용하므로 SLA가 엄격한 프로덕션 환경에서도 즉각적인 대응이 가능하다.

커널 보호 계층을 겹쳐 두기

Copy Fail이 SMEP와 SMAP를 우회한다는 사실은 단일 방어 장치에 의존할 수 없음을 보여준다. 하드웨어 보호, 커널 보안 모듈, 런타임 탐지, 운영 통제를 연결해야 한다.

운영 보안 계층커널 버전 추적(CVE 모니터링)무결성 검증(IMA/EVM)최소 권한(Non-root 서비스)eBPF 기반 동적 탐지 계층eBPF LSM(BPF Linux Security Module)Falco / Sysdig(런타임 이상 탐지)BPF-LSMsocket_bind커널 보안 모듈 계층SELinux(강제 접근 제어)AppArmor(경로 기반 프로파일)Seccomp(시스템 필터링)하드웨어 보호 계층SMEP(사용자 공간 코드 실행 차단)SMAP(사용자 공간 메모리 접근 차단)KASLR(커널 주소 무작위화)

AF_ALG 소켓 생성을 제한하는 정책은 공격 표면을 줄이는 완화 수단이다. SELinux 또는 AppArmor 정책에서 CAP_NET_RAW 없이 AF_ALG 소켓 바인딩을 차단할 수 있으며, Seccomp 프로파일로도 AF_ALG 소켓 생성을 제한할 수 있다.

# Seccomp 프로파일을 통한 AF_ALG 소켓 생성 제한
# /etc/seccomp/af_alg_block.json 예시
{
  "defaultAction": "SCMP_ACT_ALLOW",
  "syscalls": [
    {
      "names": ["socket"],
      "action": "SCMP_ACT_ERRNO",
      "args": [
        {
          "index": 0,
          "value": 38,  // AF_ALG = 38
          "op": "SCMP_CMP_EQ"
        }
      ]
    }
  ]
}

Cloudflare는 Copy Fail 공개 직후 커널 패치 없이 eBPF LSM을 활용한 대응 사례를 공개했다. BPF LSM의 socket_bind 훅으로 정당한 사용자에게만 AF_ALG 모듈을 허용하고, 다른 프로세스의 소켓 바인딩은 거부하는 정책을 배포했다.

# 즉각적인 완화 조치: algif_aead 모듈 비활성화
echo "install algif_aead /bin/false" | sudo tee /etc/modprobe.d/disable-algif-aead.conf
sudo modprobe -r algif_aead

# 영구 적용 (재부팅 후에도 유지)
sudo update-initramfs -u  # Debian/Ubuntu
sudo dracut --force        # RHEL/Fedora

IMA(Integrity Measurement Architecture)와 EVM(Extended Verification Module)은 Linux 커널에 내장된 파일 시스템 무결성 보호 메커니즘이다. setuid 바이너리를 노리는 Copy Fail 같은 공격에서 IMA는 페이지 캐시 조작을 감지하는 보조 수단이 될 수 있다.

IMA 정책 예시 (setuid 바이너리 측정):
measure func=FILE_CHECK mask=MAY_EXEC uid=0 \
  appraise_type=imasig

수백 대의 Linux 서버를 운영한다면 커널 버전 추적도 대응 체계의 일부다. 자동화된 인벤토리가 없으면 취약한 커널을 식별하는 데만 수일이 걸릴 수 있다.

# 영향받는 커널 버전 확인 (Copy Fail 패치 버전: 6.18.22+)
uname -r

# 엔터프라이즈 스케일 스캔 (Ansible)
ansible all -m command -a "uname -r" | grep -v "6.18.2[2-9]\|6.19.1[2-9]\|7\."

배포판 패치 상태와 적용 명령

공식 패치가 제공된 배포판에서는 즉각적인 업데이트가 권고된다.

배포판 영향 버전 패치 버전 업데이트 명령
Ubuntu 24.04 LTS 6.8 kernel linux-image-6.8.0-xx apt update && apt upgrade
RHEL 10.1 kernel-6.x 패치 제공됨 dnf update kernel
Amazon Linux 2023 kernel-6.x 패치 제공됨 dnf update kernel
SUSE 16 kernel-default 패치 제공됨 zypper update kernel-default
Debian kernel 6.x 패치 제공됨 apt update && apt upgrade
Fedora kernel 6.x kernel 6.19.12+ dnf update kernel

업스트림 수정은 mainline 커밋 a664bf3d603d에서 2017년 최적화를 되돌리는 방식으로 반영됐다. 패치된 커널 버전은 6.18.22, 6.19.12, 7.0이다.

의심 신호가 포착됐을 때의 대응

Copy Fail 익스플로잇 실행이 의심되면 다음 포렌식 지표를 확인한다.

  • setuid 바이너리(su, sudo, passwd 등)의 예기치 않은 프로세스 실행
  • /proc/*/maps에서 페이지 캐시 이상 매핑 감지
  • AF_ALG 소켓을 생성한 비정상 프로세스 (Falco/Sysdig 알림)
  • 일반 사용자 컨텍스트에서 uid=0 프로세스 생성 이벤트
아니오아니오의심 활동 감지(Falco 알림)AF_ALG 소켓생성 여부?프로세스 트리분석다른 공격 벡터조사uid=0 프로세스비정상 생성?격리 조치(네트워크 차단)추가 모니터링지속포렌식 이미지수집패치시스템 재구축재발 방지eSIEM 갱신

CVE-2026-31431은 9년 만에 드러난 커널 설계 결함이 어떤 결과를 낳을 수 있는지 보여준다. 우선순위는 커널 패치지만, algif_aead 모듈 비활성화와 eBPF LSM 정책 배포를 병행해야 한다. KEV 기반 우선순위 관리와 커널 라이브 패치를 결합하면 서비스 중단 없이 신속하게 취약점에 대응할 수 있다.

Sources

리눅스 커널CVE-2026-31431취약점 대응CISA KEVeBPF