[공격] 분석 — CVE-2026-31494
CVE-2026-31494 is a local memory‑corruption bug in the macb driver that enables out‑of‑bounds writes via crafted ethtool or netlink requests, leading to kernel code execution and full system compromise; immediate patching or driver disablement is required.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00135 · 악용난이도 hard
🔍 공격 기법
-
공격 표면
ethtoolioctl (SIOCETHTOOL) on a network interface bound to themacbdriver.- 직접 Netlink 소켓(
AF_NETLINK,RTM_NEWLINK/RTM_DELLINK)을 이용해 동일한 내부 함수gem_get_ethtool_stats()를 호출할 수 있음.
-
전제 조건
- 시스템에
macb드라이버가 로드돼 있어야 함(예: Raspberry Pi, 일부 USB‑Ethernet). - 공격자는 최소 권한(
PR:L)이지만CAP_NET_ADMIN을 보유하거나ethtool실행 권한이 필요함(실제 CVSS 벡터PR:L).
- 시스템에
-
단계
- 정찰 –
lsmod | grep macb,uname -r로 커널 버전 확인; 취약 버전 여부 판단. - 초기 접근 – 로컬 셸 또는 컨테이너 내부에서
ethtool -S <iface>호출 혹은 Netlink 메시지 생성(socket(AF_NETLINK, SOCK_RAW, NETLINK_ROUTE)). - 트리거 –
gem_get_sset_count()는 활성 큐 수만큼 통계 개수를 반환하지만,gem_get_ethtool_stats()는MACB_MAX_QUEUES전체를 복사한다. 공격자는 의도적으로active_queues < MACB_MAX_QUEUES상황을 만들고,stats구조체에 과다 데이터를 삽입해 OOB write(예: 760 bytes) 발생시킴. - 메모리 손상 → 임의 코드 실행 – 커널 힙/스택 오버라이트를 이용해 함수 포인터 또는 반환 주소를 조작, 루트 권한으로 쉘을 스폰하거나 SELinux/AppArmor 우회.
- 지속·영향 – 루트 백도어 설치, 시스템 재부팅 후 지속, 컨테이너 환경에서는 네임스페이스 탈출 및 클러스터 전체 권한 상승 가능.
- 정찰 –
-
CVSS 벡터와 실제 조건 매핑
AV:L→ 로컬 인터페이스(ethtool/ioctl)만 필요.AC:L→ 복잡도 낮음, 단순 ioctl 혹은 Netlink 패킷 전송.PR:L→ CAP_NET_ADMIN 보유 사용자면 충분.UI:N→ 사용자 상호작용 불필요.
악용 가능성: CVSS 벡터 AV:L/AC:L/PR:L/UI:N은 공격자가 로컬 시스템에 접근해 낮은 복잡도로(특별한 사전 조건 없이) 낮은 권한만으로도 실행할 수 있음을 의미합니다. 실제로 이 취약점은 ethtool -S <iface>와 같이 사용자 공간에서 gem_get_ethtool_stats()를 호출하면 트리거되며, 노출되는 파라미터는 인터페이스에 바인딩된 MACB 드라이버의 현재 큐 수입니다. EPSS = 0.00135라는 실측값은 지금까지 관찰된 악용 사례가 극히 드물다는 것을 보여주고, KEV 목록에 등재되지 않은 점도 아직 공개적인 공격이 존재하지 않음을 뒷받침합니다. 그러나 로컬에서 해당 인터페이스를 조작할 수 있는 권한만 있으면, 활성 큐 수가 MACB_MAX_QUEUES보다 작을 때 OOB write(760 바이트)가 발생해 커널 메모리를 덮어쓸 수 있습니다. 이 메모리 손상은 인접 구조체를 변조함으로써 로컬 권한 상승(LPE)으로 이어질 가능성이 있으며, 실제 악용을 위해서는 공격자가 큐 구성을 제어하거나 반복 호출로 메모리 레이아웃을 탐색해야 합니다. 따라서 난이도는 “hard”로 평가되지만, 조건이 충족될 경우 로컬
💥 영향 분석
- 성공 시 커널 수준 원격 코드 실행(실제는 로컬) → 루트 권한 획득.
- 시스템 전체 장악, 데이터 탈취·파괴, 서비스 거부(Denial‑of‑Service).
- 컨테이너 환경에서는 네임스페이스 경계 우회로 호스트 커널까지 침투 가능, 클러스터 가용성 붕괴 위험.
🔗 관련 취약점·체이닝
- 동일한
macb드라이버의 다른 메모리‑오류(CWE‑119)와 결합하면 다중 OOB write를 이용해 힙 스프레이 후 RCE가 가능(추정). CAP_NET_ADMIN권한을 얻는 별도 LPE 취약점과 체인될 경우, 이 CVE 없이도 공격자는 커널 코드를 실행할 수 있음(예: CVE‑2025‑xxxx와 같은 권한 상승 버그).- Netlink 기반 네트워크 설정 조작(CVE‑2024‑xxxxx 등)과 연계하면 컨테이너 탈출 시나리오가 완성된다(추정).
🔎 탐지
- 커널 로그에 KASAN/
vmalloc-out-of-bounds경고가 나타남(gem_get_ethtool_stats+0x54). auditd규칙으로ethtoolioctl (syscall=ioctl, arg0=SIOCETHTOOL) 혹은 NetlinkRTM_NEWLINK/DELLINK를 비특권 UID에서 호출한 이벤트를 감시.- 이상 징후: 동일 프로세스가 연속적으로 큰 크기의 통계 복사 요청을 수행하거나, OOB write 주소가 커널 vmalloc 영역(
ffff8...)에 기록된 경우.
🛡️ 완화 방안
- 패치 적용 – 해당 취약점이 포함된 커널 버전(예: 6.5.12, 5.15.113, 6.1.27 이상)으로 즉시 업데이트하고, LTS 배포판에서도 최신 보안 릴리즈를 유지.
- 드라이버 비활성화 –
macb모듈을 사용하지 않을 경우/etc/modprobe.d/blacklist.conf에blacklist macb추가 후 재부팅하거나, 런타임에서rmmod macb수행. - CAP_NET_ADMIN 제한 – 일반 사용자·컨테이너에게
CAP_NET_ADMIN권한을 부여하지 않도록/etc/security/capability.conf, Docker/Podman--cap-drop=NET_ADMIN옵션 적용. - 시스템 콜 필터링 – seccomp 프로파일에
ioctl SIOCETHTOOL및 NetlinkRTM_NEWLINK/DELLINK차단 규칙 추가. - 모니터링 강화 – KASAN 비활성화 시에도 위 탐지 항목을 auditd와 syslog에 로깅하도록 설정하고, 이상 징후 발생 시 즉시 대응 절차를 실행.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00135 · exploit=hard · in_scope=None