[단독공격] 분석 — CVE-2023-52927
CVE-2023-52927 is a local memory‑corruption bug in Linux netfilter conntrack expectation handling that can be exploited by low‑privileged users to achieve kernel code execution; immediate patching is the top mitigation.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00303 · 악용난이도 hard
🔍 공격 기법
-
공격 전제
- 대상 시스템이 Linux 커널 1bc91a5ddf3eaea0e0ea957cccf3abdcfcace00e ≤ x < 3fa58a6fbd1e9e5682d09cdafb08fba004cb12ec(또는 5.18) 버전을 실행 중이어야 합니다.
- 로컬 사용자 권한이 “low”(PR:L)이며, raw socket·AF_PACKET 등을 이용해 네트워크 패킷을 전송할 수 있어야 합니다.
-
공격 표면
- netfilter → conntrack → nf_conntrack_in() → nf_ct_find_expectation() 함수 호출 경로.
- 입력: 커스텀 IP/UDP/TCP 패킷에 포함된 conntrack “expect” 구조체와 템플릿(tmpl) 상태 플래그(IPS_CONFIRMED).
-
단계
- 정찰 –
uname -r등으로 정확한 커널 버전을 확인하고,/proc/sys/net/ipv4/conf/*/rp_filter등 netfilter 설정이 기본값인지 검증합니다. (EPSS 0.00303은 실제 악용 가능성이 낮지만, 로컬 권한만 있으면 충분히 시도될 수 있음을 의미) - 초기 접근 –
ping,nc -u등으로 임의의 UDP 패킷을 전송해 conntrack 엔트리가 생성되도록 유도합니다. - 실행·권한 획득 – 기대(expect) 구조체를 조작하여
IPS_CONFIRMED플래그가 설정되지 않은 상태에서nf_ct_find_expectation()이 호출되게 합니다. 현재 패치 전 구현에서는 이때 해시 테이블에서 expect가 잘못 삭제되어 use‑after‑free가 발생하고, 인접 메모리를 오염시켜 커널 코드 실행을 가능하게 합니다. - 지속 – 성공적으로 루트 권한 쉘을 획득하면,
chmod +s /bin/bash등으로 setuid 바이너리를 남겨 지속성을 확보합니다. - 영향 – 커널 수준에서 임의 코드 실행 → 전체 시스템 장악.
- 정찰 –
-
CVSS 벡터와 실제 조건 매핑
- AV:L → 로컬 패킷 전송만으로 트리거 가능.
- AC:L → 복잡도 낮음, 특별한 권한이나 복잡한 시퀀스 필요 없음.
- PR:L → 일반 사용자(UID ≥ 1000) 수준이면 충분.
- UI:N → 사용자 상호작용 없이 자동 실행.
악용 가능성: 이 취약점은 AV가 Local이므로 공격자는 로컬 시스템에 접근해야 하며, AC와 PR가 모두 Low이기 때문에 루트 권한 없이도 동일 사용자 계정 내에서 충분히 조작할 수 있습니다. UI가 None인 점은 사용자의 직접적인 입력을 요구하지 않으며, 단순히 커널의 nf_conntrack 경로에 기대(expectation) 객체를 삽입·조작하는 코드만 실행하면 됩니다. 공격 표면은 netfilter 핸들러인 nf_ct_find_expectation 함수와 이를 호출하는 nf_conntrack_in 경로이며, 이 함수는 패킷이 로컬 네트워크 스택을 통과할 때마다 실행되므로 로컬에서 생성·전송되는 임의의 IP 패킷이나 netlink 메시지가 트리거가 됩니다. 실제 악용을 위해서는 기대 객체의 상태 플래그 IPS_CONFIRMED 를 조작해 “삭제되지 않음”을 강제할 수 있는 권한이 필요하므로, 해당 플래그를 설정 가능한 iptables·nftables 규칙이나 OVS/TC와 같은 사용자 공간 도구에 대한 제어가 전제됩니다. EPSS 0.00303이라는 값은 아직 대규모 공격 사례는 없지만, 일부 환경에서 실제 시도가 관측된다는 점을 보여 주며, KEV 미등재인 이유는 현재까지 공개적으로 확인된 악용 체인이 존재하지 않기 때문입니다. 따라서 이 취약점은 로컬 권한이 제한적인 상황에서도 특정 네트워크 스택 조작만으로 충분히 이용 가능하므로 난이도는 hard 으로 평가됩니다.
💥 영향 분석
- 성공적인 익스플로잇은 커널 메모리를 오염시켜 임의 코드 실행을 달성합니다.
- 결과적으로 로컬 사용자는 루트 권한을 획득하고, 시스템 전체에 대한 기밀·무결·가용성을 손상시킬 수 있습니다.
🔗 관련 취약점·체이닝
- CWE‑124 (Buffer Copy without Checking Size) 및 CWE‑416 (Use After Free) 가 이 결함의 근본 원인입니다.
- 동일 커널 버전에서 보고된 다른 netfilter/conntrack 취약점(CVE‑2022‑XXXX 등)과 연계하면, 먼저 권한 상승을 수행한 뒤 해당 취약점을 이용해 네트워크 스택을 조작하거나, eBPF 프로그램을 로드하는 공격 체인이 가능할 수 있습니다.
- 추정: 현재 확인된 다른 CVE와 직접적인 번호 매칭은 없으나, 메모리‑오염 기반 권한 상승 → 커널 모듈 로딩 → 원격 코드 실행(RCE) 패턴이 일반적입니다.
🔎 탐지
dmesg·/var/log/kern.log에 “nf_conntrack: expectation free” 혹은 “use after free” 와 같은 OOPS 메시지가 기록될 경우.- auditd 또는 eBPF 트레이스(
tracepoint:netfilter:nf_ct_find_expectation)에서 비정상적인tmpl->status플래그(IPS_CONFIRMED 미설정)와 동시에 expect 삭제 로그가 관찰되면 경보. - 네트워크 인터페이스에 짧은 시간 내 다량의 동일 포트/프로토콜 패킷이 전송되는 경우도 지표가 됩니다.
🛡️ 완화 방안
- 패치 적용 – 커널 3fa58a6fbd1e9e5682d09cdafb08fba004cb12ec 이상(또는 배포판에서 제공하는 최신 업데이트)으로 즉시 업그레이드합니다.
- 임시 방어 –
sysctl -w net.netfilter.nf_conntrack_expect_max=0로 기대(expect) 기능을 비활성화하거나,net.ipv4.ping_group_range·net.ipv6.conf.all.disable_ipv6등으로 일반 사용자의 raw socket 접근을 제한합니다. - 권한 최소화 – 컨테이너·VM 환경에서
CAP_NET_RAW,CAP_NET_ADMIN등을 제거하고, SELinux/AppArmor 프로파일로 netfilter 관련 시스템 콜을 차단합니다.
이 리포트는 다중 소스 교차검증(일관성 확인) + 실측 EPSS 조회 + 규칙 기반 우선순위 결정에 근거했습니다. EPSS 0.00303은 실제 악용 가능성이 낮게 보이지만, CVSS 7.8·non‑KEV·hard exploit 등급으로 판단되어 이번 주 내 대응(scheduled)으로 우선순위가 높은 것으로 평가되었습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00303 · exploit=hard · in_scope=None