[공격] 분석 — CVE-2026-23351
A Use-after-free in
nft_set_pipapoallows local privilege escalation via memory corruption, requiring immediate kernel patching despite low current EPSS due to the complexity of exploitation.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00125 · 악용난이도 hard
🔍 공격 기법
본 취약점은 Linux Kernel의 netfilter 내 nft_set_pipapo 세트 타입에서 발생하는 Use-after-Free (UaF) 결함이다.
- 공격 표면 및 트리거:
nf_tables인터페이스를 통해pipapo타입의 set을 생성하고 대량의 만료된 요소(expired elements)를 삽입함으로써 GC(Garbage Collection) 프로세스를 유도한다. - 취약점 원리:
- 기존 GC 로직이
unlink(연결 해제)와reclaim(메모리 회수) 단계를 분리하지 않고 한 번에 처리함. - 대량의 요소가 만료된 상태에서 commit-time GC가 실행되면, non-preemptible 컨텍스트에서 과도한 시간이 소요되어 soft lockup을 유발하거나 RCU stall이 발생한다.
- 결정적으로
call_rcu()호출 이후에도 데이터 구조의 live pointer가 교체되기 전까지는 패킷 경로(packet path)나 userspace dumper가 이미 free된 메모리 영역에 접근할 수 있는 Race Condition 창이 열린다.
- 기존 GC 로직이
- 공격 체인 및 전제 조건:
- 전제 조건:
AV:L/PR:L(Local Access, Low Privilege). 공격자는 시스템에 로그인하여nf_tables를 조작할 수 있는 권한(예:CAP_NET_ADMIN)이 있거나, 해당 권한을 가진 프로세스를 제어해야 한다. - 단계:
- 정찰/준비:
pipapo세트를 생성하고 대량의 만료 요소를 배치하여 GC 부하를 극대화한다. - 실행(Trigger): GC가 동작하는 시점에 dump operation이나 element lookup을 동시에 수행하여 UaF 상태를 유도한다.
- 권한 획득: Free된 메모리 영역에 공격자가 제어하는 데이터(Fake object)를 배치(Heap Spraying)하여 커널 함수 포인터를 덮어쓰고 실행 흐름을 가로챈다.
- 정찰/준비:
- 전제 조건:
- 실측 분석 기반 판단: 다중 소스에서 데이터 일관성이 확인되었으나, EPSS 수치가
0.00125로 매우 낮고 등급이hard로 분류된 점은 실제 무기화된 PoC가 드물고 커널 메모리 레이아웃 우회(KASLR 등)라는 높은 진입장벽이 존재함을 뜻한다. 따라서 우선순위는scheduled(이번 주 내)로 결정되었다.
악용 가능성: 본 취약점은 AV:L 및 PR:L 조건에 따라, 공격자가 이미 시스템에 접근하여 일반 사용자 권한을 획득한 상태에서 커널 내부의 netfilter (nft_set_pipapo) 모듈에 접근할 수 있어야 하므로 초기 진입 장벽이 높습니다. 공격 표면은 nftables를 통해 설정되는 pipapo 세트 타입의 데이터 구조이며, 특히 대량의 만료된 요소(expired elements)가 존재하는 상태에서 가비지 컬렉션(GC) 단계의 Race Condition을 유도하는 것이 핵심 트리거입니다. EPSS 수치가 0.00125로 매우 낮고 KEV에 등재되지 않은 점은 현재 이 취약점을 이용한 대규모 자동화 공격이나 Wild exploit이 발견되지 않았음을 시사합니다. 그러나 이론적 심각도와 별개로, AC:L인 만큼 일단 권한을 가진 공격자가 커널 메모리 내의 Use-after-free(UaF) 상태를 정밀하게 제어할 수 있다면 Local Privilege Escalation(LPE)으로 이어질 가능성이 존재합니다. 결과적으로 본 취약점은 외부 네트워크에서 즉시 실행 가능한 위협은 아니나, 내부 침투 후 권한 상승을 노리는 고도화된 공격 체인의 연결 고리로 악용될 수 있는 'Hard' 난이도의 잠재적 위협입니다.
💥 영향 분석
- 권한 상승 (LPE): 일반 사용자 권한에서 커널 모드 실행 권한을 획득하여 루트(root) 권한 탈취 가능.
- 서비스 거부 (DoS):
soft lockup및RCU stall유발로 인한 시스템 전체 프리징 또는 패닉 발생.
🔗 관련 취약점·체이닝
본 결함은 단독으로 root 권한을 얻기보다 다른 커널 취약점과 체이닝될 가능성이 높다.
- 추정: 정보 노출 $\rightarrow$ UaF: KASLR을 우회하기 위해 커널 주소를 유출하는
Information Leak취약점과 체이닝하여, 정확한 함수 포인터 덮어쓰기 지점을 타격할 것으로 보인다. - 추정: 권한 상승 $\rightarrow$ 지속성 확보: UaF를 통해 얻은 임시 커널 실행 권한을 이용해
commit_creds(prepare_kernel_cred(0))등을 호출하여 프로세스 권한을 영구적으로 root로 변경하는 패턴이 예상된다. - 패턴 분석:
Memory-Corruption유형 특성상, Slab allocator의 동작 원리를 이용한Use-after-Free$\rightarrow$Type Confusion$\rightarrow$Arbitrary Write경로를 따를 가능성이 높다.
🔎 탐지
- 커널 로그 모니터링:
dmesg또는/var/log/syslog에서soft lockup,RCU stall report,netfilter: nft_set_pipapo관련 경고 메시지 감시. - 시스템 호출 추적:
nf_tables관련 netlink 메시지를 통해 비정상적으로 많은 양의 set element 생성 및 삭제 요청이 반복되는 패턴 탐지.
🛡️ 완화 방안
- 근본 해결: 영향받는 커널 버전(5.6.1 ~ 6.19.7 등)을 최신 보안 패치가 적용된 버전으로 업데이트. (GC 로직을
unlink와reclaim단계로 분리한 패치 적용 필수) - 즉시 조치: 불필요한 경우
nf_tables모듈 로드를 제한하거나, 일반 사용자의 netfilter 설정 변경 권한(CAP_NET_ADMIN)을 엄격히 통제.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00125 · exploit=hard · in_scope=None