[공격] 분석 — CVE-2026-31428
CVE-2026-31428 is a local kernel information leak in nfnetlink_log’s NFULA_PAYLOAD padding; immediate kernel patching and restriction of AF_NETLINK(NFLOG) usage are the top mitigations.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00131 · 악용난이도 hard
🔍 공격 기법
-
트리거 조건: 로컬 프로세스가
socket(AF_NETLINK, SOCK_RAW, NETLINK_NFLOG)을 열고, NFLOG netlink 메시지를 전송하면 커널의__build_packet_message()가skb_put()·skb_copy_bits()로 NFULA_PAYLOAD 속성을 수동으로 구성한다. 데이터 길이가 4바이트 정렬이 아닐 경우 뒤쪽 1‑3 바이트 패딩이 초기화되지 않아 그대로 사용자에게 반환된다. -
공격 단계
1️⃣ 정찰 –/proc/net/netfilter/nf_log혹은nlmsg_type = NFNL_SUBSYS_NFLOG << 8 | NFNL_MSG_TYPE_*존재 여부 확인;capsh --print로 현재 권한이 저권한(L)임을 검증.
2️⃣ 초기 접근 –sendmsg()로 임의 길이(data_len) 를 지정해 NFLOG 패킷 전송, 커널은nla_total_size(data_len)만큼 메모리를 할당하지만 실제 복사되는 바이트는data_len뿐.
3️⃣ 실행·권한 획득 – 수신된 netlink 응답에서 패딩(1‑3 byte) 이 반복적으로 누적되면 힙에 남아 있는 이전 할당 객체의 일부가 노출된다. 이를 여러 번 수집해 커널 슬래브(kmalloc‑*) 의 포인터나 KASLR 기반 주소를 추출한다.
4️⃣ 지속 – 정보 유출 자체는 지속성이 없지만, 획득한 주소 정보를 이용해 이후 LPE(예:CVE‑2024‑xxxx와 같은 커널 쓰기 취약점) 를 조합하면 영구적인 권한 상승이 가능하다.
5️⃣ 영향 – 최종적으로는 로컬 특권 상승, 메모리 내용 유출 및 서비스 거부(대량 요청 시 로그 처리 과부하) 가 발생한다. -
공격 표면: AF_NETLINK(NFLOG) 소켓,
nlmsg_type = NFNL_SUBSYS_NFLOG << 8 | NFNL_MSG_TYPE_PACKET,NFULA_PAYLOAD속성 길이 파라미터. CVSS 벡터(AV:L/AC:L/PR:L/UI:N)와 일치하게 로컬 저권한 프로세스만으로도 트리거 가능하다.
악용 가능성: 이 취약점은 로컬 환경에서 nfnetlink 소켓에 임의의 netlink 메시지를 전송할 수 있는 공격자가, NFULA_PAYLOAD 속성을 직접 구성하면서 발생하는 패딩 영역(1‒3바이트)을 초기화하지 않아 커널 힙 내용이 사용자 공간으로 유출되는 구조입니다. CVSS 벡터 AV:L/AC:L/PR:L/UI:N 은 “공격자는 로컬에 존재하고, 복잡도가 낮으며, 최소 권한(Low)만으로도, 사용자의 별도 동작 없이” 성공한다는 전제를 의미하므로, 일반 사용자 계정이라도 해당 netlink 인터페이스에 접근할 수 있으면 공격이 가능함을 보여줍니다. EPSS 0.00131이라는 매우 낮은 실측 확률과 KEV 미등재는 현재까지 보고된 악용 사례가 거의 없지만, 정보 누출 자체가 권한 상승이나 메모리 레이아웃 파악에 활용될 수 있어 이론적 위험은 여전히 존재합니다. 공격 표면은 nfnetlink_log 소켓과 __build_packet_message() 함수에서 수행되는 skb_put()/skb_copy_bits() 조합이며, 여기서 전달되는 data_len 값이 4바이트 정렬에 맞지 않을 경우 패딩이 남아 누수가 발생합니다. 탐색 단계에서는 로컬 프로세스가 해당 netlink 소켓에 연결 가능한지를 확인하고, 초기 접근으로는 적절히 조작된 NFULA_PAYLOAD 속성을 포함한 메시지를 전송하면 힙 메모리 일부를 획득할 수 있습니다. 이후 확보한 커널 힙 내용은 다른 메모리‑오버플로우·포인터‑유출 결함과 연계해 주소 공간 레이아웃을 파악하거나, 민감 데이터(예: 인증 토큰) 추출에 활용될 가능성이 있습니다.
💥 영향 분석
- 커널 힙에 남아 있던 이전 할당 데이터가 1‑3 byte 단위로 누출되어, 슬래브 캐시 내부 포인터·주소·인증 토큰 등을 추출할 수 있다.
- 주소 정보가 확보되면 KASLR 우회 및 이후 로컬 권한 상승 취약점과 결합해 루트 권한을 얻을 가능성이 존재한다.
- 대량 트리거 시 NFLOG 로그 처리 로직에 과부하를 일으켜 서비스 거부(DoS) 효과도 발생할 수 있다.
🔗 관련 취약점·체이닝
- 정보 누출 → 주소 공개: 본 결함은 커널 힙 패딩을 노출시켜 KASLR 기반 주소를 얻는 초기 단계가 된다.
- 주소 공개 → LPE: 확보한 커널 주소를 이용해
CVE‑2024‑xxxx(예: 슬래브 오프셋 조작)·CVE‑2023‑xxxx(예: double fetch) 와 같은 로컬 권한 상승 취약점과 연계하면 루트 획득이 가능하다. - 정보 누출 → 권한 없는 데이터 탈취: 민감한 구조체(
cred,task_struct) 가 인접해 있을 경우, 부분적인 포인터 유출만으로도 후속 메모리 조작 공격을 구성할 수 있다. (※ 구체적 CVE 번호는 현 시점에서 확인되지 않음)
🔎 탐지
- 시스템 콜 감시:
auditd혹은 eBPF 프로그램으로socket(AF_NETLINK, *, NETLINK_NFLOG)호출과 이후sendmsg()/recvmsg()를 로깅한다. - 패킷 크기 불일치: 수신된 netlink 메시지에서
nlattr->nla_len과 실제 payload 길이가 4바이트 정렬이 아닌 경우(패딩 존재) 경고를 발생시킨다. - 빈번한 NFLOG 사용: 비정상적으로 짧은 간격으로 다수의 NFLOG 패킷을 전송하는 프로세스를 감시한다.
🛡️ 완화 방안
1️⃣ 패치 적용 – 커널 2.6.24‑5.10.253, 5.11‑5.15.203, 5.16‑6.1.168, 6.2‑6.6.131, 6.7‑6.12.80, 6.13‑6.18.21, 6.19‑6.19.11 등 모든 영향을 받는 버전에 upstream 패치를 적용한다.
2️⃣ NFLOG 비활성화 – modprobe -r nfnetlink_log 로 모듈을 언로드하거나, sysctl -w net.netfilter.nf_log_all_netns=0 (가능 시) 으로 NFLOG 기능을 차단한다.
3️⃣ 권한 제한 – 컨테이너·시스템에서 seccomp 프로파일이나 AppArmor 정책으로 비특권 프로세스의 AF_NETLINK(NFLOG) 사용을 금지한다.
4️⃣ 모니터링 강화 – 위 탐지 항목을 기반으로 실시간 알림을 설정하고, 의심되는 프로세스를 격리·조사한다.
본 보고서는 다중 소스에서 일관성이 확인된 사실에 기반하며, EPSS 0.00131(실제 악용 가능성은 낮지만 존재)과 “hard” 난이도 평가를 반영해 monitor 수준의 우선순위로 권고합니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00131 · exploit=hard · in_scope=None