[공격] 분석 — CVE-2025-21655
A memory corruption vulnerability in the Linux kernel's io_uring/eventfd component allows for potential Denial-of-Service, requiring restricted access to unprivileged io_uring.
📋 요약
- 심각도 medium · CVSS 4.7 · EPSS 0.00219 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: io_uring과 eventfd를 연동하여 사용 중, io_eventfd_do_signal()이 RCU callback 내에서 호출될 때 발생함. io_ev_fd의 reference count가 0이 되는 시점에 io_eventfd_free()를 직접 호출함으로써, 필요한 RCU grace period 유예 없이 메모리가 해제되는 Use-After-Free(UAF) 혹은 Race Condition 상황을 유발함.
(2) 공격 단계:
- 정찰: 타겟 커널 버전이 6.1~6.12 범위 내인지 확인 및
io_uring사용 가능 여부 체크. - 초기 접근: 로컬 사용자 권한으로 시스템에 접속 (AV:L, PR:L).
- 실행/영향: 특정 패턴의
io_uring요청을 통해eventfd시그널링을 유도하고, RCU callback과 메모리 해제 타이밍을 정교하게 맞추어 커널 패닉(Panic) 또는 비정상 종료 유발. (AC:H로 인해 매우 정밀한 타이밍 제어 필요). - 전제 조건:
io_uring인터페이스에 접근 가능한 권한이 있어야 함.
(3) 공격 표면:
- 엔드포인트: Linux Kernel System Call (
io_uring_setup,io_uring_enter). - 함수/컴포넌트:
io_uring/eventfd모듈, 특히io_eventfd_do_signal()및io_eventfd_free().
(4) CVSS 벡터 분석:
- AV:L / PR:L: 로컬 계정 권한이 필수적임. 원격 공격은 불가능함.
- AC:H: RCU grace period와 메모리 해제 타이밍을 맞춰야 하므로 공격 난이도가 매우 높음.
- C:N / I:N / A:H: 데이터 유출이나 변조보다는 커널 크래시를 통한 가용성 파괴(DoS)가 주 목적임.
악용 가능성: 본 취약점은 AV:L/AC:H/PR:L 벡터가 보여주듯, 공격자가 이미 시스템에 로컬 계정 권한으로 접근해 있어야 하며 매우 까다로운 실행 조건을 충족해야 하므로 공격 난이도는 Hard로 판정됩니다. 구체적인 공격 표면은 Linux 커널의 io_uring 인터페이스와 eventfd 메커니즘이며, 특히 io_eventfd_do_signal() 함수가 RCU 콜백 내에서 io_ev_fd 참조 횟수를 처리하는 과정에서의 Race Condition을 트리거해야 합니다. EPSS 수치가 0.00219로 매우 낮고 KEV에 등재되지 않은 점은, 이론적인 Use-After-Free(UAF) 가능성에도 불구하고 실제 야생(In-the-wild)에서 무기화된 사례가 극히 드물다는 것을 의미합니다. 공격자는 RCU grace period의 타이밍을 정밀하게 제어하여 객체가 조기에 해제되도록 유도해야 하며, 이는 단순한 파라미터 조작이 아닌 커널 메모리 레이아웃과 스케줄링에 대한 깊은 이해가 필요합니다. 결과적으로 본 취약점은 단독으로 외부에서 침투 경로를 제공하지는 않으나, 로컬 권한 상승(LPE)을 노리는 정교한 체이닝 공격의 일환으로 악용될 가능성이 존재합니다.
💥 영향 분석
(1) 기술적 위험: Memory Corruption으로 인한 Kernel Panic 발생. 이는 시스템 전체의 즉각적인 중단(Denial-of-Service)으로 이어짐. 추정: 메모리 레이아웃을 정교하게 조작할 수 있다면 권한 상승(LPE) 가능성을 배제할 수 없으나, 현재 벡터상으로는 DoS 위험이 지배적임.
(2) 비즈니스 영향: 서버 가용성 상실로 인한 서비스 중단. 특히 io_uring을 사용하는 고성능 I/O 애플리케이션(DB, 웹서버 등)이 구동되는 환경에서 치명적일 수 있음.
🔗 관련 취약점·체이닝
- 체이닝 경로: [추정] 정보 유출(KASLR 우회) $\rightarrow$ 본 CVE를 이용한 메모리 오염 $\rightarrow$ 커널 권한 획득(LPE).
- 유형 수준 분석: 본 결함은 RCU grace period 관리 미흡으로 인한 Memory Corruption 유형임. 일반적으로 이러한 UAF 패턴은 다른 Heap Spraying 기법과 체이닝되어 단순 DoS를 넘어 임의 코드 실행이나 권한 상승으로 확장되는 경로를 가짐.
🔎 탐지
(1) 로그 지표: dmesg 또는 /var/log/syslog 내 KASAN: use-after-free in io_eventfd_do_signal 혹은 Kernel panic - not syncing 메시지와 함께 io_uring 관련 함수 스택 트레이스 확인.
(2) 탐지 규칙 예시:
- 로직: 단시간 내에 특정 사용자가 비정상적으로 많은 수의
io_uring컨텍스트를 생성하고 삭제하는 패턴 감시. - SIEM 쿼리(의사코드):
SELECT user, count(*) FROM syscall_logs WHERE syscall IN ('io_uring_setup', 'io_uring_enter') GROUP BY user HAVING count > [Threshold] WITHIN 1s
(3) 오탐 시나리오: 고성능 I/O를 수행하는 정상적인 애플리케이션이io_uring을 빈번하게 사용할 때 발생 가능. 애플리케이션의 화이트리스트 기반 필터링으로 튜닝 필요.
🛡️ 완화 방안
- 즉시(긴급 차단): 비특권 사용자의
io_uring접근 제한.- 방법:
sysctl -w kernel.io_uring_disabled=2(지원 버전인 경우). - 영향:
io_uring을 사용하는 일부 최신 앱의 성능 저하 또는 동작 불가 가능성 / 난이도: 낮음.
- 방법:
- 단기(완화): Seccomp 필터를 통해
io_uring_*시스템 콜을 차단하거나, 신뢰할 수 없는 사용자의 쉘 접근 제한.- 영향: 애플리케이션 호환성 검토 필요 / 난이도: 중간.
- 근본(해결): Linux 커널 업데이트. (6.1.126+, 6.2
6.6.73+, 6.76.12.11+ 버전으로 업그레이드).io_eventfd_put()을 사용하여 RCU grace period를 올바르게 유예하도록 수정된 패치 적용.- 영향: 시스템 재부팅 필요 / 난이도: 중간 / 검증:
uname -r로 커널 버전 확인 및io_uring기능 테스트.
- 영향: 시스템 재부팅 필요 / 난이도: 중간 / 검증:
[파이프라인 근거] 본 분석은 다중 소스 데이터의 일관성이 확인된(신뢰도 1.0) 사실을 바탕으로 작성되었습니다. EPSS 실측값 0.00219와 AV:L/AC:H 조건을 고려할 때 실제 악용 가능성은 낮으나, 커널 레벨의 메모리 오염이라는 점에서 'monitor' 우선순위로 결정되었으며 이를 기반으로 방어 전략을 수립하였습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=4.7 · non-KEV · EPSS=0.00219 · exploit=hard · in_scope=None