[분석가] 분석 — CVE-2025-22055
Integer overflow in Linux kernel Geneve option length handling can lead to heap out-of-bounds read, requiring updates to the affected kernel versions.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.002 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: struct geneve_opt에서 각 옵션 길이를 5비트로 정의하여 최대 127바이트까지만 허용하나, Netlink 정책상 이 길이 제한이 강제되지 않습니다. 공격자가 정확히 128바이트 크기의 옵션을 입력하면 정수 오버플로우(Integer Overflow)가 발생하여 길이가 0으로 인식되며, 이후 파싱 로직의 혼선으로 Heap Out-of-Bounds (OOB) Read가 유발됩니다.
(2) 공격 단계:
- 초기 접근: 시스템에 로그인한 낮은 권한의 사용자 계정 확보 (PR:L).
- 실행: Netlink 인터페이스를 통해 조작된 128바이트 크기의 Geneve 옵션 설정값 주입.
- 영향: 커널 메모리 영역 내에서 정의된 범위를 벗어난 읽기 작업 수행 $\rightarrow$ KASAN 등 커널 디버깅 도구 상에서
slab-out-of-bounds발생 및 시스템 크래시(DoS) 유발.
(3) 공격 표면: Linux Kernel의 Geneve 프로토콜 옵션 처리 로직 및 이를 설정하는 Netlink 인터페이스.
(4) CVSS 벡터 연결:
- AV:L (Local): 네트워크를 통한 원격 공격이 아닌, 시스템 내 로컬 접근 권한이 필요함.
- AC:L (Low): 특정 길이(128바이트)의 옵션 주입이라는 단순 조건으로 트리거 가능함.
- PR:L (Low): 일반 사용자 권한으로 Netlink 정책 설정이 가능한 환경에서 실행 가능함.
- UI:N (None): 사용자 상호작용 없이 실행됨.
악용 가능성: 본 취약점은 Linux kernel의 GENEVE 프로토콜 옵션 처리 과정에서 발생하는 Integer Overflow로, 공격 난이도는 Hard로 평가됩니다. AV:L(Local) 벡터에 따라 공격자는 시스템에 이미 접근하여 Netlink 인터페이스를 사용할 수 있는 권한(PR:L)을 보유해야 하며, 이는 외부 네트워크에서의 직접적인 침투보다는 내부 권한 상승이나 샌드박스 탈출 시나리오에 해당합니다. 공격 표면은 geneve_opt 구조체의 길이 필드이며, 특히 Netlink 정책을 통해 정확히 128바이트 크기의 옵션을 주입하여 파싱 로직을 기만하고 Heap Out-of-bounds Read를 유발하는 것이 트리거 조건입니다. EPSS 수치가 0.002로 매우 낮고 KEV에 등재되지 않은 점은 현재 야생(In-the-wild)에서 이 취약점을 이용한 공격 사례가 관측되지 않았음을 시사합니다. 따라서 이론적인 심각도와는 별개로, 실제 악용 가능성은 로컬 권한을 획득한 정교한 공격자로 제한되는 매우 낮은 수준입니다.
💥 영향 분석
(1) 기술적 위험:
- 가용성 저해: Heap OOB Read로 인한 커널 패닉 및 시스템 크래시(Denial of Service).
- 정보 유출: 추정: OOB Read를 통해 커널 메모리 상의 민감한 데이터가 사용자 공간으로 노출될 가능성이 있으나, 제공된 사실상으로는 Crash 로그만 확인됨.
(2) 비즈니스 영향:
- 서비스 중단: 커널 패닉 발생 시 해당 서버에서 구동 중인 모든 서비스가 즉시 중단되어 비즈니스 연속성에 영향을 줌.
- 노출 규모: Linux Kernel 4.19부터 6.14.2까지 광범위한 버전이 영향권에 있어, Geneve 프로토콜을 사용하는 가상화/클라우드 환경의 인프라 서버들이 주요 대상임.
🔗 관련 취약점·체이닝
- 체이닝 패턴: 추정: [Heap OOB Read $\rightarrow$ 커널 메모리 주소 유출(KASLR 우회) $\rightarrow$ 타 권한 상승 취약점 결합 $\rightarrow$ Root 권한 획득] 순으로 이어지는 전형적인 커널 익스플로잇 체인이 가능할 수 있습니다.
- 유형: 정수 오버플로우(Integer Overflow)가 메모리 안전성 결함(Memory Safety Violation)으로 이어지는 패턴입니다.
🔎 탐지
(1) 로그 지표:
- 커널 로그(
dmesg,/var/log/syslog) 내BUG: KASAN: slab-out-of-bounds in nla_put또는geneve_opt관련 Crash 덤프 확인.
(2) 탐지 규칙 예시:
- 로직: Netlink를 통해 Geneve 옵션을 설정하는 프로세스 중, 옵션 길이 값이 127바이트를 초과하여 128바이트가 입력되는 패킷/시스템 콜 모니터링.
- SIEM 쿼리(의사코드):
SELECT * FROM kernel_logs WHERE message LIKE '%slab-out-of-bounds%' AND message LIKE '%nla_put%'
(3) 오탐 시나리오 및 튜닝: 커널 디버깅 모드(KASAN 활성화) 환경에서 정상적인 드라이버 테스트 중 발생할 수 있습니다. 운영 환경에서는 KASAN이 일반적으로 비활성화되어 있으므로, 실제 패닉 로그의 Call Trace에서 geneve_opt 관련 함수 호출 여부를 확인하여 정밀하게 필터링해야 합니다.
🛡️ 완화 방안
- 즉시(긴급 차단):
- 일반 사용자 계정의 Netlink 인터페이스 접근 권한 제한 및 Geneve 프로토콜 설정 권한을 Root로 한정. (난이도: 하 / 영향: 낮음 / 검증:
ip link등 설정 명령 실행 테스트)
- 일반 사용자 계정의 Netlink 인터페이스 접근 권한 제한 및 Geneve 프로토콜 설정 권한을 Root로 한정. (난이도: 하 / 영향: 낮음 / 검증:
- 단기(완화):
- 불필요한 Geneve 커널 모듈 로드 방지 (
modprobe -r geneve). (난이도: 하 / 영향: Geneve 사용 서비스 중단 / 검증:lsmod | grep geneve)
- 불필요한 Geneve 커널 모듈 로드 방지 (
- 근본(해결):
- 영향받는 버전의 최신 패치 버전으로 커널 업그레이드.
- Linux Kernel $\le$ 5.10.236, $\le$ 5.15.180, $\le$ 6.1.134, $\le$ 6.6.87, $\le$ 6.12.23, $\le$ 6.13.11, $\le$ 6.14.2 이후 버전으로 업데이트.
- (난이도: 중 / 영향: 재부팅 필요로 인한 일시적 서비스 중단 / 검증:
uname -r로 버전 확인)
- 영향받는 버전의 최신 패치 버전으로 커널 업그레이드.
[분석 근거] 본 리포트는 다중 소스 교차검증을 통해 데이터 일관성이 확인되었으며, 실측 EPSS 값(0.002, 백분위 0.10181)과 AV:L/PR:L 조건을 근거로 실제 야생 악용 가능성이 매우 낮다고 판단하여 우선순위를 'monitor'로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.002 · exploit=hard · in_scope=None