[공격] 분석 — CVE-2026-31671
A kernel memory leak in
xfrm_user'sbuild_report()allows local attackers to bypass KASLR, making it a critical stepping stone for privilege escalation despite its medium CVSS score.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.0012 · 악용난이도 hard
🔍 공격 기법
본 취약점은 Linux 커널의 IPsec 설정 관리 모듈인 xfrm_user에서 발생하며, 구조체 패딩 영역의 초기화 누락으로 인한 Information Leak이 핵심이다.
- 공격 표면 및 트리거:
- 엔드포인트:
NETLINK_XFRM소켓 인터페이스. - 트리거 함수:
xfrm_user모듈의build_report(). - 결함 원리:
struct xfrm_user_report내의__u8 proto필드와 이후 이어지는struct xfrm_selector사이에 3바이트의 패딩(Padding) 공간이 존재한다. 커널이 이 구조체를 사용자 공간(Userspace)으로 복사하기 전, 해당 패딩 영역을 0으로 초기화하지 않아 커널 스택/힙에 남아있던 잔류 데이터가 그대로 유출된다.
- 엔드포인트:
- 공격 체인 및 전제 조건:
- 초기 접근 (Local Access): 공격자는 시스템에 로그인한 일반 사용자 권한(PR:L)을 가져야 한다.
- 정찰 및 실행:
XFRM_MSG_GETSA등의 Netlink 메시지를 통해 커널에 리포트를 요청한다. 이때 특별한 복잡성 없이(AC:L) 표준 인터페이스를 호출하는 것만으로 유출이 발생한다. - 데이터 수집: 반복적인 호출을 통해 패딩 영역에 담긴 커널 메모리 조각들을 수집한다.
- CVSS 벡터 분석:
AV:L/AC:L/PR:L/UI:N은 외부망 공격이 불가능하며, 내부 권한을 가진 사용자가 매우 낮은 난이도로 트리거할 수 있음을 의미한다.
악용 가능성: 본 취약점은 Linux kernel의 xfrm_user 모듈 내 build_report() 함수에서 발생하는 Information Leak으로, 공격 난이도는 Hard입니다. CVSS 벡터 AV:L/PR:L에 따라 공격자는 이미 시스템에 낮은 권한(Low Privilege)으로 접근한 상태여야 하며, 로컬 환경에서의 직접적인 상호작용이 전제됩니다. EPSS 수치가 0.0012로 매우 낮고 KEV에 등재되지 않은 점은 해당 결함이 단독으로 원격 코드 실행(RCE)과 같은 치명적 결과로 이어지는 사례가 드물며, 실전에서의 독립적 악용 가능성이 제한적임을 시사합니다. 공격 표면은 xfrm 관련 netlink 소켓 엔드포인트이며, 커널이 유저스페이스로 데이터를 복사할 때 제로화되지 않은 패딩 영역(3 bytes)을 통해 커널 메모리의 잔재가 노출되는 구조입니다. 따라서 이 취약점은 그 자체로 시스템을 장악하기보다, ASLR과 같은 커널 메모리 보호 기법을 무력화하기 위한 메모리 주소 유출(KASLR Bypass) 용도로 활용될 가능성이 큽니다. 결과적으로 단독 공격보다는 권한 상승(Privilege Escalation)을 위한 체이닝의 초기 단계에서 정찰 수단으로 사용될 위험이 핵심입니다.
💥 영향 분석
- 커널 메모리 노출: 직접적인 시스템 파괴나 RCE를 일으키지는 않으나, 커널 주소 공간의 일부가 유출된다.
- KASLR 무력화: 유출된 데이터에 커널 함수 포인터나 스택 주소가 포함될 경우, 커널 주소 공간 배치 무작위화(KASLR)를 우회하는 핵심 힌트로 사용된다.
🔗 관련 취약점·체이닝
본 취약점은 단독으로는 A:H(가용성 영향) 혹은 단순 정보 유출에 그치지만, 실제 공격자는 이를 **LPE(Local Privilege Escalation)**의 징검다리로 활용한다.
- 체이닝 경로 (추정):
Information Leak$\rightarrow$KASLR Bypass$\rightarrow$Kernel Memory Corruption/Overflow$\rightarrow$Root Privilege Escalation. - 상세 메커니즘:
- 커널의 메모리 오염 취약점(예: Buffer Overflow, Use-After-Free)을 이용해 공격 코드를 실행하려 해도 KASLR 때문에 정확한 타겟 주소를 알 수 없다.
- 이때
CVE-2026-31671과 같은 Info-leak 취약점을 통해 커널 베이스 주소를 계산하면, 메모리 오염 취약점의 성공률을 100%로 끌어올릴 수 있다. - 따라서 본 취약점은 단순 'Medium' 심각도가 아니라, 다른 고위험 취약점의 **실행 가능성(Exploitability)**을 폭발적으로 높이는 촉매제 역할을 한다.
🔎 탐지
- Netlink 트래픽 감시: 일반 사용자 권한 프로세스가
NETLINK_XFRM소켓을 통해 과도하게XFRM_MSG_GETSA요청을 보내는 패턴을 모니터링한다. - 시스템 콜 추적:
auditd또는eBPF를 사용하여 비정상적인 커널 리포트 생성 및 유저 공간 전송 빈도를 추적한다.
🛡️ 완화 방안
- 근본 해결: 영향받는 Linux 커널 버전(2.6.19.1 ~ 6.19.13 등 광범위함)의 최신 보안 패치를 적용하여
build_report()내 구조체 초기화 로직을 수정한다. - 즉시 완화:
CAP_NET_ADMIN권한이 없는 일반 사용자의 XFRM Netlink 접근을 제한한다.- SELinux/AppArmor 정책을 통해 신뢰되지 않은 프로세스의
NETLINK_XFRM소켓 생성 및 통신을 차단하여 공격 표면을 제거한다. (단, IPsec VPN 등 필수 서비스 영향도 확인 필요)
[분석 근거]
본 리포트는 다중 소스 교차검증을 통해 데이터 일관성이 확인되었으며, EPSS 실측값(0.0012)과 CVSS 5.5, AV:L 등의 벡터를 근거로 'monitor' 우선순위를 결정하였다. 낮은 EPSS 수치는 현재 실제 야생(In-the-wild) 악용 사례가 적음을 뜻하지만, 영향 제품 범위가 매우 광범위하므로 잠재적 위험도가 높다고 판단한다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.0012 · exploit=hard · in_scope=None