[방어] 분석 — CVE-2026-31674
Local privilege escalation or DoS in Linux kernel's
ip6t_rtmodule via oversizedaddrnr, requiring immediate restriction of network configuration privileges and monitoring of setuid binaries.
📋 요약
- 심각도 high · CVSS 7.1 · EPSS 0.00123 · 악용난이도 hard
🔍 공격 기법
본 취약점은 Linux 커널의 netfilter 모듈 내 ip6t_rt 구성 요소에서 발생하며, IPv6 라우팅 매치 규칙 설정 시 입력값 검증 미흡을 이용합니다.
- 트리거: 로컬 사용자가
ip6tables를 통해rtmatch 규칙을 생성할 때,addrnr필드에IP6T_RT_HOPS임계값을 초과하는 값을 주입합니다. - 원리:
rt_mt6_check()에서 유효성 검사가 누락되어, 이후rt_mt6()함수가rtinfo->addrs[]배열의 경계를 벗어난 메모리 영역에 접근(Out-of-bounds)하게 됩니다. - 경로 및 확장: 단순한 로컬 쉘 접근뿐 아니라, setuid 바이너리를 통한 진입점 확대나 컨테이너 네임스페이스 환경에서의 격리 파괴를 통해 비특권 사용자가 커널 메모리에 접근할 가능성이 존재합니다.
악용 가능성: 본 취약점의 공격 난이도는 Hard로 평가됩니다. CVSS 벡터 AV:L/PR:L에서 알 수 있듯, 공격자는 대상 시스템에 이미 일반 사용자 권한으로 접근 가능한 상태여야 하며 네트워크를 통한 원격 직접 공격은 불가능합니다. 공격 표면은 Linux 커널의 netfilter 모듈 내 ip6t_rt 엔드포인트이며, 구체적으로는 IPv6 라우팅 매치 규칙(rt match rules)을 설정하는 파라미터 중 addrnr 값이 트리거 포인트가 됩니다. addrnr이 IP6T_RT_HOPS 범위를 초과하도록 조작하여 커널 메모리 경계를 벗어난 접근을 유도하는 구조입니다. 다만, EPSS 수치가 0.00123으로 매우 낮고 KEV에 등재되지 않은 점은 현재 실제 야생(In-the-wild)에서 이 경로를 이용한 공격 사례가 드물며, 권한 획득이라는 전제조건이 까다롭다는 것을 의미합니다. 결과적으로 이론적 심각도는 존재하나, 로컬 권한을 가진 내부 위협이나 이미 침투한 공격자의 권한 상승(Privilege Escalation) 단계에서나 악용 가능성이 있는 취약점입니다.
💥 영향 분석
- 가용성(Availability): 잘못된 메모리 참조로 인한 Kernel Panic 및 시스템 전체 서비스 중단(DoS).
- 무결성/기밀성(Integrity/Confidentiality): 추정: OOB Write를 통해 커널 구조체를 조작함으로써 일반 사용자 권한에서 Root 권한으로 상승(LPE)하거나, OOB Read를 통해 커널 메모리 내 민감 정보가 유출될 수 있습니다. 특히 멀티테넌트 환경에서는 호스트 격리 파괴 위험이 큽니다.
🔗 관련 취약점·체이닝
- 유형: Out-of-bounds access (CWE-125/CWE-787 추정).
- 체이닝:
CAP_NET_ADMIN권한을 가진 프로세스 탈취 또는 setuid 바이너리 악용과 체이닝하여 커널 메모리 오염 및 최종 권한 상승(LPE) 단계로 이어질 수 있습니다.
🔎 탐지
규칙 설치 시점의 입력값과 실행 후의 커널 상태를 동시에 감시해야 합니다.
1. 로그 지표 및 패턴
- 로그 위치:
/var/log/syslog,dmesg, Auditd (/var/log/audit/audit.log). - 감시 필드:
ip6tables프로세스의 인자(Arguments), 커널 Oops 메시지 내ip6t_rt및rt_mt6심볼. - 패턴:
--rt-addrnr뒤에 비정상적으로 큰 정수값이 오는 명령어 실행 패턴.
2. 탐지 규칙 예시 (SIEM/EDR 의사코드)
- Rule 1 (비정상 파라미터 주입 감시):
SELECT timestamp, user, command FROM process_events WHERE process_name = 'ip6tables' AND command REGEXP '--rt-addrnr\s+([0-9]{3,})'
(설명:addrnr값으로 100 이상의 큰 숫자가 입력되는지 감시. 일반적인 라우팅 홉 수 범위를 초과하는지 확인) - Rule 2 (권한 상승 경로 및 setuid 실행 감시):
SELECT timestamp, user, binary_path FROM process_events WHERE is_setuid = TRUE AND command LIKE '%ip6tables%'
(설명: 일반 사용자가 setuid 바이너리를 통해 네트워크 설정 도구에 접근하는 비정상 경로 탐지) - Rule 3 (커널 메모리 오류 감시):
SELECT message FROM kernel_logs WHERE message MATCHES '.*(ip6t_rt|rt_mt6).* (General protection fault|Kernel panic).*'
3. 오탐 튜닝 및 주의사항
- 오탐 시나리오: 네트워크 관리자의 정상적인 IPv6 정책 업데이트 작업.
- 튜닝:
UID=0또는 공인된 네트워크 관리 계정의 활동은 화이트리스트 처리하고, 비특권 사용자(Non-privileged user)가 해당 명령어를 실행하거나 setuid를 통해 접근하는 경우에만 High Alert를 발생시킵니다.
🛡️ 완화 방안
본 취약점은 다중 소스에서 일관성이 확인되었으나, EPSS 0.00123 및 exploit=hard 판정으로 인해 실제 야생 악용 가능성은 낮습니다. 따라서 scheduled(이번 주 내) 우선순위로 대응하되 아래 계층별 조치를 적용합니다.
1. 즉시 (긴급 차단)
- 조치: 일반 사용자의
ip6tables/iptables실행 권한을 완전히 제거하고,CAP_NET_ADMIN권한 부여를 최소화합니다. - 난이도/영향: 낮음 / 운영 영향 거의 없음.
- 검증: 비특권 계정에서
ip6tables -L실행 시Permission denied확인.
2. 단기 (완화)
- 조치 1 (공격 표면 제거): IPv6 미사용 서버는 커널 파라미터로 IPv6를 비활성화합니다 (
sysctl -w net.ipv6.conf.all.disable_ipv6=1).- 난이도/영향: 보통 / IPv6 서비스 중단 위험 확인 필요.
- 조치 2 (런타임 보호): KASLR(Kernel Address Space Layout Randomization) 활성화 및 AppArmor/SELinux를 통해
ip6tables실행 프로세스의 시스템 콜을 제한합니다.- 난이도/영향: 보통 / 정책 설정에 따른 오작동 가능성 존재.
- 검증:
cat /proc/sys/net/ipv6/conf/all/disable_ipv6값 확인 및dmesg | grep ASLR확인.
3. 근본 (해결)
- 조치: 영향받는 Linux 커널 버전(2.6.12.1 ~ 6.19.11 등)을 최신 보안 패치가 적용된 버전으로 업데이트합니다.
- 난이도/영향: 높음 / 재부팅 필요 및 커널 변경에 따른 서비스 호환성 테스트 필수.
- 검증:
uname -r로 패치 이후 버전 반영 여부 확인.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.1 · non-KEV · EPSS=0.00123 · exploit=hard · in_scope=None