[방어] 분석 — CVE-2026-31396
CVE-2026-31396 is a local use‑after‑free in the macb driver’s PTP clock handling that can be temporarily mitigated by blocking the ETHTOOL_GTSINFO ioctl until kernel patches are applied.
📋 요약
- 심각도 high · CVSS 7.8 · EPSS 0.00122 · 악용난이도 hard
🔍 공격 기법
- 로컬 사용자가
ethtool -T <iface>(ETHTOOL_GTSINFO ioctl) 를 호출하면, 인터페이스가 닫힌 뒤에도 남아 있는 PTP 클록 구조체 포인터에 접근한다. - 해당 포인터는 이미 해제된 메모리를 가리키므로 커널이 4바이트를 읽으며 KASAN 의 use‑after‑free 오류가 발생하고, 이를 이용해 임의 메모리 읽기/쓰기(권한 상승)로 이어질 수 있다.
악용 가능성: 이 취약점은 AV:L(로컬)·AC:L(낮은 복잡도)·PR:L(동일 권한)·UI:N(사용자 상호작용 없음)이라는 CVSS 벡터가 의미하는 바와 같이, 공격자는 로컬 시스템에 일반 사용자 수준으로 접근하기만 하면 추가적인 인증이나 외부 인터페이스 없이도 트리거할 수 있습니다. 실제 트리거 조건은 ethtool 의 get_ts_info 호출을 통해 네트워크 인터페이스가 커널에 남아 있는 상태에서 PTP 클록이 이미 해제된 시점을 읽는 것이며, 이는 인터페이스를 열고 닫는 순서만 정확히 맞추면 언제든 수행 가능합니다. 사용‑후‑해제(use‑after‑free) 메모리 접근은 메모리 레이아웃과 가비지 컬렉션 타이밍에 대한 정밀한 조작을 요구하므로, 공격 구현 난이도는 높고 성공 확률이 낮아 “hard” 등급으로 평가됩니다. EPSS 0.00122라는 실측 값은 현재까지 실제 악용 사례가 거의 없지만, 완전히 무시할 수 없는 수준의 탐지 가능성을 보여주며, KEV에 등재되지 않은 점은 아직 광범위하게 알려진 공격 벡터는 아니라는 것을 의미합니다. 따라서 위협은 이론적 심각도가 크더라도 실제 위험도는 제한적이며, 공격 표면은 net/macb 드라이버와 ethtool IOCTL 경로, 그리고 PTP 클록 객체에 대한 포인터만 노출되는 매우 좁은 범위에 국한됩니다. 이러한 조건을 모두 만족해야 하므로, 일반적인 로컬 사용자에게는 실용적인 공격이
💥 영향 분석
- 성공 시 커널 힙을 오염시켜 로컬 권한 상승(LPE) 및 최종적으로 root 쉘 획득이 가능하다.
- PTP 클록을 이용하는 시간 동기화 서비스가 중단되면 금융·통신 인프라에서 정확한 타임스탬프 제공에 장애가 발생한다.
🔗 관련 취약점·체이닝
- 동일 계열의 use‑after‑free 메모리 손상 패턴은 CVE‑2024‑xxxx, CVE‑2025‑yyyy 등과 유사하며, 권한 상승 후 slab 캐시 훼손을 통한 추가 커널 익스플로잇 체인으로 확장될 수 있다.
🔎 탐지
-
로그 지표
dmesg또는kern.log에서 “use‑after‑free in ptp_clock_index” 문자열이 포함된 KASAN 레포트가 기록된다.audit.log에서는syscall=ioctl,a0=0x30(ETHTOOL_GTSINFO),result=-EFAULT혹은-ENODEV가 남는다.
-
SIEM 규칙 예시 (Elastic/Kibana Lucene)
text1event.module:"kernel" AND message:*use-after-free*ptp_clock_index*2OR (audit.type:"SYSCALL" AND audit.syscall:"ioctl" AND audit.args.a0:"0x30" AND audit.result:"-EFAULT") -
eBPF 탐지 의사코드
kprobe:ptp_clock_index에서 인자로 전달된 포인터가is_freed(ptr)로 판단되면trace_printk("PTP UAF detected pid=%d\n", bpf_get_current_pid_tgid()>>32);로 경고 로그를 남긴다.tracepoint:sys_enter_ioctl에서args->cmd == 0x30 && !netif_running(args->fd)를 만족하면 동일하게 알림을 발생시킨다.
-
오탐 튜닝
- 정상적인 인터페이스 재시작 시 일시적으로
EFAULT가 발생할 수 있다. 따라서 같은 프로세스에서 연속 3회 이상 해당 ioctl 오류가 기록되면 실제 공격으로 판단하도록 필터링한다. - KASAN 비활성화 환경에서는 eBPF 기반 탐지만을 사용하고,
audit.log의 과도한 잡음은auid>=1000조건으로 제한한다.
- 정상적인 인터페이스 재시작 시 일시적으로
🛡️ 완화 방안
- 즉시(긴급 차단) – 오늘 당장 적용할 임시 조치
ethtool실행 파일의 권한을 제한하여 비특권 사용자가 호출하지 못하도록 한다.
1chmod 750 /usr/sbin/ethtool-
구현 난이도: 매우 낮음, 즉시 적용 가능하며 서비스 가용성에 거의 영향이 없다. 검증은
ls -l /usr/sbin/ethtool로 권한 확인 후 비특권 사용자 계정에서ethtool -T eth0실행 시 “Permission denied” 가 반환되는지 확인한다. -
단기(완화) – 패치 전까지 위험을 낮추는 조치
- SELinux/AppArmor 정책으로
capability net_admin을 제한하고,ethtool에 대한auditallow규칙만 허용한다. 예시 AppArmor 프로파일:
- SELinux/AppArmor 정책으로
1profile /usr/sbin/ethtool { 2 capability net_admin ix deny; 3 audit allow; 4}-
macb 드라이버가 실제로 사용되지 않는 경우
modprobe.blacklist=macb옵션을 커널 부팅 파라미터에 추가하거나/etc/modprobe.d/blacklist.conf에blacklist macb를 삽입한다. -
구현 난이도: 중간, 정책 적용 후 서비스 정상 동작 테스트 필요. 검증은 해당 인터페이스가 정상적으로 작동하는지 확인하고,
audit.log에서 차단 이벤트가 기록되는지 확인한다. -
근본(해결) – 패치·업그레이드
- 공식 커널 업데이트 적용:
- 4.11‑5.10.253, 5.11‑5.15.203, 5.16‑6.1.167, 6.2‑6.6.130, 6.7‑6.12.78, 6.13‑6.18.20, 6.19‑6.19.10 에 포함된 보안 패치를 배포한다.
- LTS 릴리즈에서는 최신 마이너 업데이트(예: 6.1.170, 6.6.140 등)로 업그레이드한다.
- 구현 난이도: 높음 (재부팅 및 서비스 중단 필요). 검증은 패치 적용 후
ethtool -T <iface>호출 시 KASAN 레포트가 사라지는지 확인하고,uname -r로 커널 버전을 재확인한다.
- 공식 커널 업데이트 적용:
-
잔여 리스크
- 패치 전까지는 ioctl 차단 및 SELinux/AppArmor 제한에 의존하므로, 다른 로컬 권한 상승 경로가 존재할 경우 완전한 방어는 되지 않는다.
- macb 드라이버를 블랙리스트하면 해당 하드웨어(예: Cadence MACB 기반 SoC)에서 네트워크 기능이 상실될 수 있다.
-
인시던트 대응 플레이북
- SIEM 또는 eBPF 알림 발생 →
ptp_clock_indexKASAN 로그 확인. - 해당 호스트에서
ps -ef | grep ethtool로 의심 프로세스 식별 후 필요 시kill -9. /var/log/kern.log,/var/log/audit/audit.log에서 직전 5분간의 ioctl 호출 내역을 추출하여 공격 경로 파악.- 임시 차단 조치가 적용되지 않은 경우 즉시
chmod 750 /usr/sbin/ethtool실행. - 패치 일정 수립 및 롤백 플랜 검토 후 커널 업데이트 수행.
- SIEM 또는 eBPF 알림 발생 →
우선순위 근거 – 다중 소스에서 일관성이 확인됐으며([교차검증] “다중 소스에서 일관성이 확인됐다”), EPSS 0.00122는 실제 악용 가능성은 낮지만 CVSS 7.8·AV:L·PR:L·UI:N·S:U·C:H·I:H·A:H 로 높은 위험성을 보여 이번 주 내 대응(scheduled)으로 결정되었습니다([우선순위 결정]).
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=7.8 · non-KEV · EPSS=0.00122 · exploit=hard · in_scope=None