[공격] 분석 — CVE-2026-31682
Remote OOB read in Linux kernel bridge ND parsing allows for DoS or potential memory leak, necessitating immediate patching of the
br_nd_sendfunction to ensure skb linearization.
📋 요약
- 심각도 critical · CVSS 9.1 · EPSS 0.00485 · 악용난이도 moderate
🔍 공격 기법
- 공격 표면 (Attack Surface): L2 계층의 Linux 커널
bridge모듈 내br_nd_send()함수. IPv6 Neighbor Discovery(ND) 프로토콜을 처리하는 경로가 직접적인 노출 지점임. - 트리거 조건: 공격자가 ICMPv6 ND 패킷을 조작하여, 데이터가
skb(socket buffer)의 linear 영역이 아닌 non-linear(fragmented) 영역에 배치되도록 구성해 전송함. 특히 NDP 패킷의 Option Length 필드를 조작하여 파싱 로직이 선형 버퍼 경계를 넘어서게 만드는 것이 핵심임. - 취약점 원리:
br_nd_send()는ns->opt[]옵션들이 항상 linear 영역에 있다고 가정함. 그러나 호출부에서는 ICMPv6 헤더와 타겟 주소까지만 선형화를 보장하므로, 이후의 옵션 영역이 non-linear일 경우 linear 버퍼 끝단 이후의 커널 메모리에 접근하는 Out-of-Bounds (OOB) Read가 발생함. - 공격 체인 및 전제 조건:
- 정찰: 대상 호스트가 IPv6를 사용하며
bridge모듈이 활성화된 상태인지 확인. (전제: 브리징 환경 또는 가상화 네트워크 인터페이스 노출) - 초기 접근: 인증 없이(
PR:N), 사용자 상호작용 없이(UI:N) 네트워크를 통해(AV:N) 조작된 ICMPv6 ND 패킷 송신. (낮은 복잡도AC:L충족) - 실행 및 영향: 커널이 non-linear 옵션 영역을 linear하게 읽으려 시도 $\rightarrow$ 잘못된 메모리 참조로 인한 Kernel Panic(DoS) 유발 또는 추정: 커널 힙의 인접 데이터 읽기.
- 정찰: 대상 호스트가 IPv6를 사용하며
- 실전 관점 분석: CVSS 9.1의 높은 점수에도 불구하고 EPSS가 0.00485(moderate)로 낮은 이유는, 공격자가 제어 가능한
skb구조를 만들기 위해 정교한 패킷 조작이 필요하며, 타겟 시스템의 브리지 설정이라는 전제 조건이 맞아야 하기 때문임. 하지만 L2 계층에서 커널 메모리에 직접 접근한다는 점에서 파급력이 매우 큼.
악용 가능성: 본 취약점은 AV:N/AC:L/PR:N/UI:N 벡터가 보여주듯, 인증이나 사용자 상호작용 없이 네트워크를 통해 원격에서 트리거 가능한 전형적인 Low-barrier 진입점을 가집니다. 공격 표면은 Linux Bridge의 IPv6 Neighbor Discovery(ND) 프로토콜 처리 과정이며, 구체적으로는 br_nd_send() 함수가 비선형(non-linear) 상태의 skb(socket buffer)를 적절히 선형화하지 않고 옵션 영역을 파싱하는 지점이 핵심입니다. 공격자는 조작된 ICMPv6 ND 패킷을 전송하여 커널이 선형 버퍼 범위를 벗어난 메모리 영역에 접근하게 함으로써 Out-of-bounds Read 또는 Crash를 유도할 수 있습니다. EPSS 점수가 0.00485로 낮고 KEV에 등재되지 않은 점은 현재까지 야생에서 무기화된 사례가 드물다는 것을 의미하지만, 이는 취약점의 난이도가 높아서라기보다 타겟팅 환경(Bridge 설정 및 IPv6 활성화 상태)의 제약 때문으로 분석됩니다. 결과적으로 네트워크에 노출된 브리지 인터페이스가 존재한다면 공격 난이도는 매우 낮으며, 메모리 레이아웃을 정밀하게 제어할 수 있는 추가 결함과 체이닝될 경우 원격 코드 실행(RCE)이나 권한 상승으로 이어질 가능성이 충분합니다.
💥 영향 분석
- 가용성 (Availability): 잘못된 메모리 주소 참조로 인한 즉각적인 Kernel Panic 및 시스템 Crash (DoS).
- 기밀성 (Confidentiality): 추정: OOB Read를 통해 linear 버퍼 너머의 커널 힙 영역에 존재하는 민감 정보(포인터, 키 값 등)가 유출될 가능성이 있음.
🔗 관련 취약점·체이닝
- 정보 유출 $\rightarrow$ KASLR 우회: 추정: OOB Read를 통해 커널 함수 포인터나 구조체 주소를 획득할 수 있다면, KASLR(Kernel Address Space Layout Randomization)을 무력화하는 기초 단계로 활용 가능함.
- 메모리 레이아웃 제어 $\rightarrow$ RCE: 추정: 단순 Read를 넘어 NDP 옵션 Length 조작을 통해 힙 오버플로우를 유도하고, SLUB 할당자의 특성을 이용한 Heap Spraying 기법으로 커널 메모리 레이아웃을 정교하게 제어한다면, 실행 흐름을 가로채는 원격 코드 실행(RCE)으로 체이닝될 수 있음.
- 취약점 유형: CWE-125 (Out-of-bounds Read) 및 추정: CWE-122 (Heap-based Buffer Overflow) 가능성.
🔎 탐지
- 네트워크 레벨: ICMPv6 ND 패킷 중 Option Length 필드가 비상식적으로 크거나, 조작된 구조를 가진 패킷의 유입 모니터링.
- 시스템 레벨:
dmesg로그에서br_nd_send관련 메모리 접근 오류(Oops) 또는 예기치 않은 커널 패닉 발생 여부 확인.
🛡️ 완화 방안
- 근본 해결: 영향받는 모든 Linux 커널 버전을 최신으로 업데이트. (패치 핵심: 옵션 파싱 전
skb_linearize()를 호출하여 데이터를 강제 정렬함) - 즉시 조치:
- 불필요한 경우
ipv6.conf.all.accept_ra=0설정을 통해 RA 수신 차단. - 방화벽(iptables/nftables)을 사용하여 신뢰되지 않은 외부 인터페이스로부터의 ICMPv6 ND 트래픽 차단.
- 불필요한 경우
[분석 근거] 본 리포트는 다중 소스 교차검증을 통해 데이터 일관성이 확인되었습니다. 실측 EPSS(0.00485)는 현재 야생에서의 대규모 악용 사례가 적음을 뜻하나, CVSS 9.1 및 AV:N/AC:L 벡터의 치명성을 고려하여 '이번 주 내 대응(scheduled)'으로 우선순위를 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=9.1 · non-KEV · EPSS=0.00485 · exploit=moderate · in_scope=None