[방어] 분석 — CVE-2026-64531
CVE-2026-64531 is a high‑severity local privilege escalation in the Linux kernel’s Open vSwitch module caused by malformed oversized nested nlattr actions, and the fastest mitigation is to stop ovs‑vswitchd and unload the openvswitch kernel module until the patched kernel is deployed.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00129 · 악용난이도 hard
🔍 공격 기법
Open vSwitch는 flow action을 netlink nlattr 구조체로 커널에 전달한다. nla_len 필드는 16‑bit(u16) 제한이 있으나, 커밋 a1e64addf3ff 이후 전체 action 스트림은 64 KiB까지 허용되면서 중첩된 컨테이너(CLONE, SAMPLE, DEC_TTL, CHECK_PKT_LEN 등)의 길이 검증이 사라졌다. 공격자는 로컬에서 netlink 소켓을 이용해 nla_len 값을 U16_MAX + 1 로 만든 중첩 액션을 포함한 flow 구성을 삽입한다. 커널은 이 컨테이너를 잘린 길이로 닫고, 이후 dump/teardown 단계에서 실제 메모리와 다른 구조를 해석해 인접 바이트를 독립적인 action 으로 오인한다. 결과적으로 OVS 내부 데이터가 손상되어 임의 읽·쓰기·함수 포인터 덮어쓰기가 가능해지고, 로컬 권한 상승 또는 커널 패닉이 발생한다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L·AC:L·PR:L·UI:N 로, 공격자는 로컬에 존재하고 권한이 낮은 사용자 계정만으로도 추가적인 인증 없이 바로 활용할 수 있음을 의미합니다. 그러나 “Local” 접근성(AV:L)과 “Low” 난이도(AC:L)는 실제로는 커널 내부의 Netlink 메시지를 조작해야 하는 전제조건을 요구하므로, 공격자가 OVS(Open vSwitch)와 상호 작용하는 프로세스에 대한 충분한 이해와 코드 경로 파악이 필요합니다. EPSS 값 0.00129 은 현재 실증된 악용 사례가 매우 드물다는 것을 나타내지만, KEV(Known Exploited Vulnerabilities) 리스트에 등재되지 않아 아직 광범위하게 자동화된 공격 툴이 존재하지 않음을 시사합니다. 따라서 이 취약점은 이론적으로는 “hard” 등급을 받지만, 실제 악용 가능성은 제한적인 환경—예를 들어 OVS가 활성화된 Linux 커널에 로컬 사용자가 직접 Netlink 인터페이스를 통해 비정상적인 flow action 데이터를 삽입할 수 있는 경우에만 현실화됩니다. 공격 표면은 주로 OVS가 사용하는 nlattrs 구조와 이를 처리하는 커널 모듈이며, 과도하게 큰 중첩 액션 속성(nla_len) 을 전송하여 메모리 파싱 오류를 유발하는 것이 핵심 트리거 조건입니다. 이러한 데이터는 일반적인 사용자 공간 애플리케이션보다는 네트워크 가상화 환경에서 OVS와 직접 통신하는 관리 도구나 스크립트가 노출될 가능성이 높습니다. 따라서 공격자는 로컬 권한을 가진 상태에서 OVS에 특수히 조작된 Netlink 메시지를 전송할 수 있는 상황이어야만 실제로 취약점을 이용할 수 있습니다.
💥 영향 분석
- 로컬 권한 상승: 메모리 손상을 통해 root 권한 획득 가능.
- 서비스 거부(DoS): 잘못된 액션 파싱으로 커널 패닉이 일어나 호스트 전체 재부팅 위험.
- 네트워크 플로우 변조: OVS 흐름 테이블이 손상돼 트래픽이 비정상적으로 처리될 수 있음.
🔗 관련 취약점·체이닝
추정: 동일한 nlattr 길이 검증 부재는 과거 Netlink 파싱 버그(CWE‑787)와 연계될 가능성이 있으며, 이미 확보된 권한을 이용해 OVS daemon(ovs-vswitchd)을 조작하거나 다른 커널 네트워크 스택 취약점과 결합하면 원격 코드 실행까지 확장될 수 있다.
🔎 탐지
-
로그 지표
kernel로그 (/var/log/kern.log,dmesg):"openvswitch: malformed nested action"혹은"nla_len overflow"문자열.- OVS daemon 로그 (
/var/log/openvswitch/ovs-vswitchd.log):error레벨에"action validation failed"또는"invalid nlattr length"포함. - Audit 로그 (
/var/log/audit/audit.log):netlink_sendmsg시스템 콜에서msgtype=OVS_FLOW_PUT와 함께 비정상적인msg_len값이 기록됨.
-
SIEM 쿼리 예시
- Elastic Security:
1event.category:"kernel" and message:*openvswitch* and (message:*malformed*nested*action* or message:*nla_len*overflow*)- Splunk:
1index=linux sourcetype=syslog ("openvswitch" AND ("malformed nested action" OR "nla_len overflow"))-
정규식 기반 탐지 (Syslog, Splunk)
text1(?i)openvswitch.*(malformed\s+nested\s+action|nla_len\soverflow) -
오탐 튜닝
- 정상적인 OVS 업그레이드 시 발생하는
"validation skipped"로그는event.severity:"info"로 필터링한다. - 테스트 환경에서 대용량 플로우를 의도적으로 생성하는 경우,
process.name="ovs-test"와 같은 추가 조건을 적용해 제외한다.
- 정상적인 OVS 업그레이드 시 발생하는
-
검증 절차
- 위 쿼리·정규식으로 이벤트가 탐지되면 해당 PID와 netlink 메시지 크기(
msg_len)를 확인한다. ovs-ofctl dump-flows로 의심 흐름 ID를 추출하고, 비정상적인 액션이 포함된 flow 가 있는지 검증한다.
- 위 쿼리·정규식으로 이벤트가 탐지되면 해당 PID와 netlink 메시지 크기(
🛡️ 완화 방안
-
즉시(긴급 차단)
systemctl stop ovs-vswitchd && modprobe -r openvswitch로 OVS 서비스를 중지하고 커널 모듈을 언로드한다.- 구현 난이도: ★★☆☆☆ (명령 한 줄)
- 운영 영향: OVS 기반 네트워크가 즉시 차단되어 서비스 가용성 손실 발생.
- 검증 방법:
lsmod | grep openvswitch로 모듈 비로드 여부 확인,systemctl status ovs-vswitchd로 서비스 중지 상태 점검.
-
단기(패치 전 완화)
- Netlink 접근 제한 – SELinux/AppArmor 프로파일에
allow netlink_sendmsg type=OVS_FLOW_PUT를 거부 규칙으로 추가한다.- 난이도: ★★☆☆☆, 영향: OVS 관리 도구(
ovs-vsctl,ovs-ofctl) 사용 시 권한 오류 발생 가능, 검증:ausearch -m AVC -ts recent | grep openvswitch로 거부 로그 확인.
- 난이도: ★★☆☆☆, 영향: OVS 관리 도구(
- 액션 크기 제한 – Open vSwitch 설정에
other_config:max-action-size=65535를 적용한다(64 KiB 초과 플로우는 거부).- 난이도: ★★☆☆☆, 영향: 일부 대규모 흐름 정책이 차단될 수 있음, 검증:
ovs-vsctl get Open_vSwitch . other_config:max-action-size로 값 확인 후ovs-ofctl dump-flows로 초과 플로우가 오류 반환되는지 테스트.
- 난이도: ★★☆☆☆, 영향: 일부 대규모 흐름 정책이 차단될 수 있음, 검증:
- Audit 규칙 추가 –
auditctl -a always,exit -F arch=b64 -S netlink_sendmsg -F msgtype=OVS_FLOW_PUT -k ovs_malformed로 모든 OVS flow PUT 시도를 기록한다.- 난이도: ★☆☆☆☆, 영향: 최소(성능 미미), 검증:
/var/log/audit/audit.log에key="ovs_malformed"항목 존재 여부 확인.
- 난이도: ★☆☆☆☆, 영향: 최소(성능 미미), 검증:
- Netlink 접근 제한 – SELinux/AppArmor 프로파일에
-
근본(패치·업그레이드)
- 커널 6.14 이상 또는 해당 취약점이 포함된 최신 패치를 적용한다. 배포 전 테스트 환경에서 OVS 기능 정상 동작을 검증하고,
git log -p로net: openvswitch: reject oversized nested action attrs커밋이 포함됐는지 확인한다.- 구현 난이도: ★★★★☆ (커널 재빌드/업그레이드), 운영 영향: 재부팅 필요, 서비스 중단 시간 발생, 검증:
modinfo openvswitch로 버전 확인 및dmesg | grep openvswitch로 패치 적용 로그 확인.
- 구현 난이도: ★★★★☆ (커널 재빌드/업그레이드), 운영 영향: 재부팅 필요, 서비스 중단 시간 발생, 검증:
- 커널 6.14 이상 또는 해당 취약점이 포함된 최신 패치를 적용한다. 배포 전 테스트 환경에서 OVS 기능 정상 동작을 검증하고,
-
잔여 리스크
- 위 임시 차단·제한 조치를 적용하더라도 OVS 모듈이 로드된 상태에서 다른 Netlink 파싱 버그가 존재할 경우 추가적인 메모리 손상이 가능하다. 따라서 패치 적용 전까지는 가능한 모든 네임스페이스와 컨테이너에 대해
CAP_NET_ADMIN권한을 최소화하고, OVS를 사용하지 않는 워크로드에서는 모듈 언로드 상태를 유지하는 것이 바람직하다.
- 위 임시 차단·제한 조치를 적용하더라도 OVS 모듈이 로드된 상태에서 다른 Netlink 파싱 버그가 존재할 경우 추가적인 메모리 손상이 가능하다. 따라서 패치 적용 전까지는 가능한 모든 네임스페이스와 컨테이너에 대해
-
인시던트 대응 플레이북
- 탐지 규칙이 트리거되면 즉시 해당 호스트의
ovs-vswitchdPID와 netlink 메시지 크기를 수집한다. systemctl stop ovs-vswitchd && modprobe -r openvswitch로 서비스를 차단하고, 메모리 손상 여부를 확인하기 위해dmesg | tail -n 20를 검토한다.- 의심 흐름을
ovs-ofctl dump-flows로 추출 후 비정상적인 액션이 포함된 ID를 기록한다. - 패치가 배포되면 모듈을 재로드하고 서비스 정상화 후, 동일 조건의 테스트 플로우를 실행해 재발 여부를 확인한다.
- 탐지 규칙이 트리거되면 즉시 해당 호스트의
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00129 · exploit=hard · in_scope=None