[공격] 분석 — CVE-2025-40248
A race condition in the Linux kernel's vsock connect() handling can lead to Use-After-Free or Null-Pointer Dereference, requiring restriction of AF_VSOCK access as an immediate mitigation.
📋 요약
- 심각도 미상 · CVSS 미상 · EPSS 0.00203 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: AF_VSOCK 소켓을 사용하는 환경에서 connect() 호출 중 시그널(Signal) 또는 타임아웃(Timeout)이 발생하여 이미 연결된(SS_CONNECTED) 소켓을 강제로 연결 해제(SS_UNCONNECTED)시키려 할 때 발생함.
(2) 공격 단계:
- 정찰: 대상 시스템의 커널 버전 및
AF_VSOCK지원 여부 확인. (전제: 가상화 환경 또는 vsock 드라이버 활성화 상태) - 초기 접근: 로컬 사용자 권한 획득 또는 vsock 통신이 가능한 게스트 VM/호스트 권한 확보.
- 실행 및 권한 획득:
connect()와 동시에sendmsg()를 병렬로 호출하여 Race Condition 유도 $\rightarrow$virtio_transport_purge_skbs()와virtio_transport_get_credit()간의 경합 발생 $\rightarrow$vvs->bytes_unsent값 오염 및 소켓 상태 불일치 유발 $\rightarrow$ Use-After-Free(UAF) 또는 Null-Pointer Dereference 트리거 $\rightarrow$ 커널 패닉 또는 권한 상승 시도. - 영향: 커널 메모리 오염을 통한 임의 코드 실행 또는 시스템 크래시(DoS).
(3) 공격 표면:
- 프로토콜:
AF_VSOCK(Virtual Socket) - 함수/엔드포인트:
connect(),sendmsg(),vsock_transport_cancel_pkt(),virtio_transport_purge_skbs() - 파라미터: 소켓 타임아웃 설정 및 시그널 인터럽트 제어.
(4) CVSS 벡터 분석 (추정):
- AV: Local/Adjacent (vsock은 통상 호스트-게스트 간 통신이므로 로컬 또는 인접 네트워크 수준)
- AC: High (정교한 타이밍의 Race Condition 유도가 필요함)
- PR: Low/Medium (소켓 생성 권한 필요)
- UI: None
악용 가능성: 본 취약점은 Linux 커널의 vsock 프로토콜 내 connect() 함수에서 신호(Signal)나 타임아웃 발생 시 이미 연결된 소켓을 잘못 처리하여 발생하는 Race Condition입니다. 공격 표면은 가상 머신(VM)과 호스트 간, 또는 VM 간 통신에 사용되는 AF_VSOCK 엔드포인트이며, 특히 connect() 호출 과정에서 정밀한 타이밍으로 인터럽트를 발생시켜 소켓 상태를 강제로 SS_UNCONNECTED로 되돌리는 트리거가 필요합니다. CVSS 관점에서 Local 권한(PR:L)과 복잡한 타이밍 제어(AC:H)가 요구되므로 공격 난이도는 Hard로 판정됩니다. EPSS 수치가 0.00203으로 낮고 KEV에 등재되지 않은 점은 현재 야생(In-the-wild)에서 자동화된 익스플로잇이 유포되지 않았음을 시사하지만, 커널 내부의 vvs->bytes_unsent 값 오염이나 sockmap 상태 불일치를 유발한다는 점에서 이론적 심각도와 별개로 시스템 불안정성 및 권한 상승을 위한 메모리 오염 체이닝의 기점으로 악용될 가능성이 존재합니다. 결과적으로 공격자는 로컬 환경에서 소켓 상태 머신(State Machine)의 정합성을 깨뜨려 커널 패닉을 유발하거나, 비정상적인 소켓 상태를 이용해 후속 취약점과 연결하는 경로를 탐색할 수 있습니다.
💥 영향 분석
(1) 기술적 위험:
- Use-After-Free 및 Null-Pointer Dereference로 인한 커널 패닉(Kernel Panic) $\rightarrow$ 시스템 가용성 즉시 상실.
- 추정: 메모리 레이아웃 조작 성공 시, 제한된 권한의 사용자가 커널 권한으로 상승(Privilege Escalation)할 가능성이 있음.
(2) 비즈니스 영향:
- 가상화 인프라(Cloud/Hypervisor) 환경에서 게스트 VM이 호스트 또는 타 VM에 영향을 줄 수 있는 탈출(Escape) 경로의 일부가 될 위험이 있음.
- 서비스 중단으로 인한 SLA 위반 및 시스템 신뢰도 하락.
🔗 관련 취약점·체이닝
- 체이닝 패턴: [Race Condition] $\rightarrow$ [State Inconsistency] $\rightarrow$ [UAF/Null-ptr Deref] $\rightarrow$ [LPE (Local Privilege Escalation)].
- 추정:
sockmap에 등록된 소켓의 상태 불일치(Disconnected socket in sockmap)를 이용하여, 네트워크 트래픽 리다이렉션이나 필터링 우회 기법과 체이닝될 가능성이 있음.
🔎 탐지
(1) 로그 지표: 커널 로그(dmesg, /var/log/kern.log) 내 WARN 메시지 및 Null pointer dereference 또는 General protection fault 관련 스택 트레이스 확인. 특히 vsock 관련 함수 호출 경로가 포함된 경우 위험함.
(2) 탐지 규칙:
- 로직: 단시간 내 동일 프로세스가 다수의
AF_VSOCK연결 시도와 타임아웃/시그널 발생을 반복하는 패턴 감시. - SIEM 예시:
SELECT * FROM kernel_logs WHERE message LIKE '%vsock%' AND (message LIKE '%WARN%' OR message LIKE '%Oops%')
(3) 오탐 시나리오 및 튜닝: 네트워크 불안정으로 인한 정상적인 타임아웃 발생 시 오탐 가능성 있음. 특정 프로세스(신뢰할 수 있는 가상화 에이전트 등)를 화이트리스트에 추가하고, 비정상적으로 짧은 간격의 반복적 연결 실패 패턴에 가중치를 둠.
🛡️ 완화 방안
- 즉시(긴급 차단):
AF_VSOCK사용이 불필요한 환경에서 해당 소켓 패밀리 접근 제한 또는 관련 모듈 언로드. (난이도: 하 / 영향: vsock 통신 불가 / 검증:socket(AF_VSOCK, ...)호출 시 권한 거부 확인) - 단기(완화): 시스템 리소스 제한(rlimit)을 통해 프로세스당 생성 가능한 소켓 수 및 메모리 사용량 제한하여 대규모 Race Condition 유도 억제. (난이도: 중 / 영향: 성능 저하 가능성 / 검증:
ulimit설정 확인) - 근본(해결): Linux 커널 패치 적용.
connect()시 이미 연결된 소켓에 대해 시그널/타임아웃 발생 시 연결을 끊지 않고 무시하도록 수정된 버전으로 업데이트. (난이도: 중 / 영향: 재부팅 필요 / 검증: 패치된 커밋 반영 여부 및 커널 버전 확인)
[파이프라인 근거] 본 분석은 다중 소스 교차검증을 통해 AF_VSOCK 내 Race Condition으로 인한 UAF 위험이 일관되게 확인되었습니다. 실측 EPSS 0.00203 및 악용 등급 'hard'는 이론적 심각도와 별개로 실제 공격 구현 난이도가 매우 높음을 의미하며, 이에 따라 우선순위를 monitor로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=미상 · non-KEV · EPSS=0.00203 · exploit=hard · in_scope=None