[단독공격] 분석 — CVE-2026-23450
A race condition in smc_tcp_syn_recv_sock can cause a NULL‑dereference or use‑after‑free leading to kernel panic, and the highest‑severity (critical) mitigation is immediate patching of affected kernels.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.0056 · 악용난이도 moderate
🔍 공격 기법
-
공격 표면
- TCP SYN 패킷이 들어오는 모든 리스닝 소켓 중 SMC(Shared Memory Communication) 모듈을 사용하도록 설정된 경우가 대상.
- 노출 엔드포인트: 일반적인 TCP 포트 (예: 80, 443 등)에서 애플리케이션이
smc프로토콜을 활성화했을 때 해당 소켓 구조가 생성됨.
-
트리거 조건
- 공격자는 대상 서버에 SMC 리스닝 소켓이 존재함을 사전 탐지(포트 스캔·서비스 버너)한다.
- 동시에 서비스나 관리 작업으로 해당 리스닝 소켓을
close()시키는 상황을 유도하거나, 애플리케이션 재시작·구성 변경 등을 통해 동시 닫힘을 발생시킨다. - 그 사이에 공격자는 다량의 SYN 패킷(또는 타이밍 조절된 단일 SYN) 을 전송한다.
-
실행 흐름 (단계별)
- 정찰 – 네트워크 스캔으로 TCP 포트를 확인하고, 커널 로그·버전 정보에서 SMC 모듈 로드 여부를 추정.
- 초기 접근 – 서비스 재시작·구성 변경 API(예: systemd restart) 혹은 관리 인터페이스를 이용해 리스닝 소켓을 닫게 만든다 (원격 공격자는 이 단계가 어려울 경우 내부 협력자·악의적 관리자 필요).
- 경쟁 조건 유도 –
smc_close_active()가sk_user_data를 NULL 로 설정하는 순간, 공격자는 SYN 패킷을 지속적으로 전송해smc_tcp_syn_recv_sock()이 softirq 컨텍스트에서 해당 포인터를 읽게 만든다. - 취약점 발동 – 두 가지 결과 중 하나가 발생한다.
- NULL dereference → 커널 OOPS, 서비스 다운.
- Use‑after‑free → 메모리 손상으로 임의 코드 실행 가능성 (커널 레벨 RCE).
-
CVSS와 실제 조건 매핑
- AV:N (네트워크) – 원격 SYN 패킷 전송만 필요.
- AC:L (낮은 난이도) – 타이밍 조절 정도만 맞추면 된다.
- PR:N (권한 없음) – 초기 접근 단계에서 권한이 없어도 서비스 재시작·구성 변경이 가능한 경우(공격자는 관리 API를 악용하거나 내부 인원을 설득).
- UI:N (사용자 상호 작용 없음) – 자동 SYN 전송.
-
핵심 원리 –
sk_user_data를 보호하는 락(sk_callback_lock)과 실제 해제(sock_put()) 사이에 존재하는 작은 레이스 윈도우를 타이밍 공격으로 이용한다.
💥 영향 분석
- 성공 시 커널 패닉 발생 → 전체 시스템 다운(DoS).
- Use‑after‑free가 트리거될 경우, 공격자는 커널 메모리를 조작해 권한 상승 및 임의 코드 실행(RCE)까지 가능.
🔗 관련 취약점·체이닝
- CWE‑124 (Out‑of‑bounds Write) 와 CWE‑416 (Use After Free) 가 결합된 전형적인 레이스 조건 패턴.
- 동일 커널 라인에서 보고된 다른 메모리 손상 버그(예:
netfilter·xfrm관련)와 연계하면, 공격자는 먼저 권한 상승을 위한 별도 취약점(CVE‑2025‑xxxx 등)을 이용해 관리자 권한을 획득하고, 그 뒤에 본 레이스를 활용해 커널 RCE를 완성할 수 있다. - 추정: 현재 알려진 공개 체이닝 사례는 없지만, 메모리 손상·커널 오버플로우 계열 취약점과 결합하면 전형적인 “정보 노출 → 권한 상승 → 원격 코드 실행” 흐름을 만들 수 있다.
🔎 탐지
- 커널 로그에
smc_tcp_syn_recv_sock관련 NULL pointer dereference 또는 use‑after‑free 메시지가 반복적으로 기록되는 경우. - OOPS/BUG 보고서에서
sk_user_data = NULL혹은freed smc_sock문구가 포함된 스택 트레이스. - SoftIRQ 처리 지연·CPU 사용량 급증과 동시에 네트워크 인터페이스에 SYN 패킷 폭주가 관찰될 때 경보 설정.
🛡️ 완화 방안
- 즉시: 해당 커널 버전(5.15.174‑5.15.203, 5.18‑6.1.167, 6.2‑6.6.130, 6.7‑6.12.78, 6.13‑6.18.20, 6.19‑6.19.10) 에 대해 배포된 패치를 적용한다.
- 임시: SMC 모듈(
CONFIG_SMC)을 사용하지 않는 경우 커널 부팅 옵션에smc.disable=1혹은 모듈 로드를 차단한다. - 장기: SELinux/AppArmor 정책으로
netlink·socket생성 권한을 최소화하고, 서비스 재시작·구성 변경 API 접근을 제한한다. - 모니터링: kdump/kexec를 활용해 OOPS 발생 시 메모리 덤프를 수집하고, 중앙 로그 시스템에
kernel:*smc_tcp_syn_recv_sock*패턴 알림을 설정한다.
※ 이 보고서는 다중 소스 교차검증에서 일관성이 확인되었으며([교차검증] 신뢰도 1.0), EPSS = 0.0056(중간 위험)와 CVSS 9.8·우선순위 “이번 주 내 scheduled” 결정 논리를 근거로 높은 대응 우선순위를 부여한다.
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=9.8 · non-KEV · EPSS=0.0056 · exploit=moderate · in_scope=None