[방어] 분석 — CVE-2025-68814
CVE-2025-68814 is a kernel‑level memory leak in io_uring’s __io_openat_prep() that can be leveraged for DoS or heap‑grooming attacks, and the fastest mitigation today is to disable io_uring usage system‑wide.
📋 요약
- 심각도 미상 · CVSS 미상 · EPSS 0.00176 · 악용난이도 hard
🔍 공격 기법
- __io_openat_prep()에서 getname() 호출 후 REQ_F_NEED_CLEANUP 플래그를 설정하지 않아 struct filename이 해제되지 않음.
- 파일을 O_CLOEXEC 플래그와 함께 열 때 조기 반환하여 메모리 누수가 발생, 반복적인 io_uring 요청으로 커널 슬랩 풀을 고갈시킴.
- 공격자는 악의적으로 많은 io_uring 작업을 생성·제출해 누적된 누수량을 급증시켜 DoS(서비스 거부) 상태를 유도할 수 있음.
악용 가능성: 이 취약점은 AV = Local, AC = High, PR = Low, UI = None 로 해석할 수 있습니다. 즉, 공격자는 로컬에서 io_uring 인터페이스를 이용해 파일을 열어야 하며, O_CLOEXEC 플래그와 고정 파일 테이블 조건을 동시에 만족시켜야 하기 때문에 복잡한 호출 흐름을 구성해야 합니다. 권한은 일반 사용자 수준에서도 가능하지만, 성공적인 트리거에는 다수의 io_uring 요청을 연속으로 발생시켜 메모리 할당‑해제 경로를 조작해야 하므로 실질적 난이도가 높게 평가됩니다. EPSS = 0.00176(≈0.176 %)이라는 수치는 현재까지 관측된 악용 가능성이 낮지만 완전히 무시할 수 없으며, KEV 목록에 등재되지 않은 점은 아직 대규모 공격으로 전환되지 않았음을 의미합니다. 트리거 조건은 io_uring 를 통해 __io_openat_prep() 가 호출될 때 파일명이 getname() 로 할당되고, O_CLOEXEC 플래그가 설정된 경우에만 발생합니다. 따라서 노출되는 공격 표면은 Linux 커널의 io_uring 시스템 콜, 해당 **파일 열기 요청 파
💥 영향 분석
- 메모리 누수 → 커널 힙 사용량 지속 증가 → OOM 발생 시 시스템 전체 다운 또는 서비스 중단.
- 직접적인 권한 상승·코드 실행은 없지만, 가용성 손실이 주요 위험이며 클라우드/컨테이너 환경에서 노드 재시작을 강제할 수 있음.
🔗 관련 취약점·체이닝
- 동일 코드 경로에서 리소스 정리를 놓친 다른 io_uring 내부 버그와 연계될 경우, 복합적인 메모리·핸들 누수 공격이 가능함(예: CVE‑2024‑xxxx 계열).
- 메모리 압박 상황에서 OOM killer가 비정상적인 프로세스를 종료하면, 서비스 복구 지연 및 데이터 손실 위험이 추가될 수 있음.
🔎 탐지
-
로그 지표
dmesg또는 커널 로그에 “out‑of‑memory”·“oom_kill_process” 메시지가 급증하는 패턴./proc/<pid>/fd개수가 비정상적으로 증가하고, 해당 프로세스가 io_uring 시스템 콜(io_uring_setup,io_uring_enter)을 반복 호출한 경우.
-
SIEM 쿼리 예시 (Elastic Kibana)
text1event.module:"kernel" and (2 (process.name:"*io_uring*" and metricset.name:"memory") or3 (event.action:"oom_kill")4) and system.memory.used.pct > 80 -
Auditd 규칙 (io_uring 사용 감시)
text1-a always,exit -F arch=b64 -S io_uring_setup -k io_uring_monitor2-a always,exit -F arch=b64 -S io_uring_enter -k io_uring_monitor -
오탐 튜닝
- 정상적인 고성능 파일 서버 등에서 일시적 메모리 사용량 급증은 오탐 가능성이 있음.
system.memory.used.pct임계값을 85 %로 상향하고, 동일 프로세스가 5분 이내에 1000회 이상 io_uring 호출 시 알림하도록 추가 조건(process.event.count > 1000)을 적용하면 오탐 감소.
🛡️ 완화 방안
-
즉시(긴급 차단) –
sysctl -w kernel.io_uring_max_entries=0혹은echo 1 > /proc/sys/kernel/io_uring_disabled로 io_uring 전체 사용을 비활성화하고, 필요 시 seccomp 프로파일에io_uring_setup·io_uring_enter차단 규칙을 추가한다.- 구현 난이도: 낮음 (한 줄 명령).
- 운영 영향: io_uring 기반 애플리케이션(고성능 네트워크 서버, 데이터베이스 등) 전부 중단 → 서비스 가용성에 직접적 영향.
- 검증 방법:
syscall=io_uring_setup로그가 차단되는지 확인하고,cat /proc/sys/kernel/io_uring_max_entries값이 0인지 검증.
-
단기(완화) – 커널 최신 패치백포트 적용: 배포 중인 배포판의 보안 업데이트 리포지터리에서 “io_uring filename leak” 수정 커밋을 포함한 커널 버전을 백포트(patch‑apply)하고, livepatch(예: ksplice, kpatch) 사용이 가능하면 즉시 적용.
- 구현 난이도: 중간 (패키지 관리·커널 재빌드 필요).
- 운영 영향: 재부팅 시 약간의 다운타임 발생; 패치 적용 전후
uname -r확인으로 버전 차이를 검증.
-
근본(해결) – 공식 Linux 커널 6.x 이상(패치가 포함된 릴리즈)으로 업그레이드하고, 시스템 재부팅 후
grep __io_openat_prep /proc/kallsyms로 해당 함수 주소가 최신 심볼 테이블에 존재하는지 확인.- 구현 난이도: 높음 (커널 교체·테스트 절차 필요).
- 운영 영향: 전체 시스템 재부팅 및 호환성 테스트 필수; 성능 변화는 미미하나 서비스 창출 시점에 맞춰 진행 권고.
-
잔여 리스크 – 패치가 적용돼도 동일 코드 경로에서 다른 자원 정리 누수가 존재할 가능성이 있음(다중 소스 교차검증 결과, 아직 확인되지 않은 변형이 있을 수 있음). 따라서 위 탐지 규칙을 지속 운영하고, 메모리 사용량 모니터링을 강화한다.
-
인시던트 대응 플레이북
- 알림 발생 →
dmesg와 OOM 로그 검토. - 해당 PID 확인 →
/proc/<pid>/fd·io_uring_enter호출 빈도 파악. - 즉시
sysctl kernel.io_uring_max_entries=0적용 후 서비스 영향 평가. - 패치 적용 여부 확인, 필요 시 백포트 또는 커널 업그레이드 수행.
- 사후 분석 보고서 작성 및 재발 방지 정책에 탐지 규칙 추가.
- 알림 발생 →
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=미상 · non-KEV · EPSS=0.00176 · exploit=hard · in_scope=None