Kestrel
CVE-2025-68814DGX_2· 2026년 7월 30일 AM 12:34

[공격] 분석 — CVE-2025-68814

A memory leak in the Linux kernel's io_uring subsystem can be leveraged for resource exhaustion (DoS), requiring restricted access to io_uring for unprivileged users until patched.

📋 요약

  • 심각도 미상 · CVSS 미상 · EPSS 0.00176 · 악용난이도 hard

🔍 공격 기법

본 취약점은 io_uring 인터페이스의 __io_openat_prep() 함수에서 발생하는 커널 메모리 누수(Memory Leak)이다.

  • 공격 표면 및 트리거:

    • 엔드포인트/함수: io_uring 시스템 콜 인터페이스 $\rightarrow$ __io_openat_prep().
    • 트리거 조건: 공격자가 O_CLOEXEC 플래그를 설정하고, 파일이 이미 고정 파일 테이블(fixed file table)에 설치된 상태로 openat 요청을 생성할 때 발생한다.
    • 결함 원리: getname()을 통해 struct filename 메모리를 할당했으나, 위 조건 충족 시 REQ_F_NEED_CLEANUP 플래그를 설정하지 않고 조기에 리턴(Early Return)한다. 이로 인해 요청이 종료되어도 할당된 메모리가 해제되지 않고 커널 슬랩(Slab)에 잔류한다.
  • 공격 체인 및 단계:

    1. 정찰/초기접근: io_uring 사용이 가능한 환경인지 확인 (unprivileged user의 io_uring_setup 가능 여부).
    2. 실행(Resource Exhaustion): 특정 조건을 만족하는 openat 요청을 루프를 통해 대량으로 생성 및 전송.
      • 전제: 커널 메모리 할당 제한 내에서 반복적으로 누수를 유발할 수 있는 권한 필요.
    3. 영향: 커널 메모리가 지속적으로 고갈되어 시스템 전체의 OOM(Out-of-Memory) Killer가 작동하거나, 핵심 프로세스가 킬(Kill)되는 서비스 거부(DoS) 상태 유도.
  • 실전 공격 관점 (CVSS 벡터 연결):

    • AV (Attack Vector): Local. 시스템 콜을 직접 호출해야 함.
    • AC (Attack Complexity): Low. 특정 플래그 조합만 맞추면 되므로 트리거가 매우 단순함.
    • PR (Privileges Required): Low/None. io_uring 접근 권한이 있는 일반 사용자 계정으로 가능.
    • UI (User Interaction): None.

악용 가능성: 본 취약점은 io_uring 인터페이스의 __io_openat_prep() 함수에서 특정 조건(Fixed file table 사용 및 O_CLOEXEC 플래그 설정) 충족 시 struct filename 메모리가 해제되지 않는 Memory Leak 결함입니다. 공격 난이도가 hard인 이유는 CVSS 벡터상 Local 권한(AV:L)과 낮은 특권 수준(PR:L)을 전제로 하며, 단순히 메모리를 누수시키는 것만으로는 즉각적인 RCE나 LPE를 달성할 수 없기 때문입니다. EPSS 수치가 0.00176으로 매우 낮고 KEV에 등재되지 않은 점은 현재 이 결함을 단독으로 악용한 실전 사례가 드물며, 이론적 심각도보다 실제 공격 효율성이 낮음을 시사합니다. 하지만 공격 표면이 Linux 커널의 최신 I/O 프레임워크인 io_uring 시스템 콜과 관련 파라미터에 노출되어 있어, 권한을 가진 로컬 사용자가 의도적으로 반복적인 요청을 생성해 커널 메모리를 고갈시키는 DoS(Denial of Service) 공격이 가능합니다. 결과적으로 이 취약점은 단독 실행보다는 커널의 메모리 레이아웃을 조작하거나 타 메모리 손상 취약점과 체이닝하여 힙 feng shui를 정밀하게 제어하기 위한 보조 수단으로 악용될 가능성이 높습니다.

💥 영향 분석

단일 요청의 누수량은 적으나, 반복적인 호출을 통해 커널 메모리를 점유함으로써 시스템 불안정성 및 서비스 거부(DoS)를 유발한다. 권한 상승이나 데이터 유출로 직접 이어지지는 않지만, 가용성을 완전히 파괴할 수 있다.

🔗 관련 취약점·체이닝

본 결함은 단독으로는 DoS에 그치지만, 다른 커널 취약점과 체이닝될 때 위험도가 증가한다.

  • 메모리 압박 $\rightarrow$ 레이스 컨디션 유도 (추정): 의도적인 메모리 고갈 상태를 만들어 커널의 에러 핸들링 경로(Error Path)를 강제로 타게 함으로써, 다른 함수에서 발생할 수 있는 Use-After-Free나 Race Condition 취약점의 트리거 확률을 높이는 전제 조건으로 활용될 수 있다.
  • Slab Layout 조작 (추정): 특정 슬랩 캐시 영역에 메모리 누수를 집중시켜 커널 힙 레이아웃을 공격자가 의도한 대로 배치(Heap Spraying/Grooming)하는 용도로 사용될 가능성이 있다. 이는 추후 다른 메모리 손상 취약점을 통해 권한 상승(LPE)으로 이어지는 체인의 일부가 될 수 있다.

🔎 탐지

  • 커널 로그: OOM killer 작동 기록 및 slabtop 등을 통한 filename 구조체 관련 슬랩 캐시의 비정상적인 증가 모니터링.
  • 시스템 콜 추적: straceebpf를 통해 io_uring_enter 호출 시 O_CLOEXEC와 fixed file table 관련 파라미터가 반복적으로 입력되는 패턴 탐지.

🛡️ 완화 방안

  • 즉시 조치: /proc/sys/kernel/io_uring_disabled 설정을 통해 비특권 사용자의 io_uring 접근을 차단하여 공격 표면 제거.
  • 근본 해결: __io_openat_prep() 내에서 getname() 성공 직후 REQ_F_NEED_CLEANUP 플래그를 설정하도록 수정된 최신 커널 패치 적용.

[파이프라인 근거] 본 분석은 다중 소스 데이터의 일관성이 확인되어 신뢰도 1.0으로 작성되었다. 실측 EPSS 값(0.00176)과 낮은 백분위(0.07399), 그리고 exploit 등급 'hard'를 근거로, 현재 실제 야생(In-the-wild) 악용 사례는 희박한 것으로 판단하여 우선순위를 monitor로 결정하였다.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=미상 · non-KEV · EPSS=0.00176 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…