[방어] 분석 — CVE-2025-21938
A race condition in the Linux kernel's MPTCP implementation can lead to a "scheduling while atomic" bug, causing a system crash (DoS); immediate mitigation involves disabling MPTCP via sysctl.
📋 요약
- 심각도 medium · CVSS 4.7 · EPSS 0.00137 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건: 다수의 연결 요청이 동시에 발생하여 mptcp_pm_nl_get_local_id에서 주소를 찾지 못한 상태로 여러 호출자가 병렬적으로 mptcp_pm_nl_append_new_local_addr 함수에 진입할 때 발생합니다.
(2) 공격 단계:
- 정찰/초기접근: 로컬 권한을 가진 사용자가 MPTCP 기능을 사용할 수 있는 환경인지 확인합니다.
- 실행: 병렬적으로 다수의 MPTCP 연결 요청을 생성하여 레이스 컨디션을 유도합니다.
- 영향: synchronize_rcu가 호출되지만, 현재 컨텍스트(Packet recv 등)가 preemption이 비활성화된 RCU read critical section인 경우 'scheduling while atomic' 커널 패닉이 발생합니다.
(3) 공격 표면: MPTCP(Multi-Path TCP) 프로토콜 스택 및 관련 커널 함수.
(4) CVSS 벡터 연결: AV:L (로컬 권한 필요), AC:H (정교한 타이밍의 레이스 컨디션 유도 필요), PR:L (낮은 수준의 사용자 권한으로 실행 가능), UI:N (사용자 상호작용 불필요).
악용 가능성: 본 취약점은 공격 난이도가 매우 높은 hard 등급으로, 공격자가 이미 시스템에 접근하여 낮은 권한(PR:L)을 획득한 상태에서 로컬 네트워크 스택에 접근해야 하는 AV:L 조건이 전제됩니다. 공격 표면은 Linux 커널의 mptcp (Multipath TCP) 프로토콜 구현체이며, 특히 다수의 연결 요청이 병렬로 발생할 때 mptcp_pm_nl_append_new_local_addr 함수 내에서 발생하는 Race Condition을 트리거해야 합니다. 하지만 AC:H 등급이 시사하듯, RCU read critical section과 같은 매우 정교한 타이밍 제어가 필요하며, 이는 이론적 취약점일 뿐 실제 익스플로잇 성공률은 극히 낮습니다. 이러한 기술적 난이도는 EPSS 수치(0.00137)가 매우 낮고 KEV에 등재되지 않은 점에서도 입증되며, 이는 현재 야생에서 활발히 악용되는 사례가 거의 없음을 의미합니다. 결과적으로 본 취약점은 원격 코드 실행보다는 커널 패닉을 통한 서비스 거부(DoS) 가능성이 크며, 특정 조건의 동시성 제어가 필수적이기에 실질적인 악용 가능성은 낮습니다.
💥 영향 분석
(1) 기술적 위험: 커널 패닉(Kernel Panic)으로 인한 시스템 즉시 중단 및 서비스 거부(DoS).
(2) 비즈니스 영향: 서버 가용성 상실. 특히 MPTCP를 활용하는 고가용성 네트워크 인프라에서 예기치 않은 재부팅으로 인한 서비스 다운타임이 발생할 수 있습니다.
🔗 관련 취약점·체이닝
- 추정: 본 취약점은 단독으로는 시스템 가용성을 해치는 DoS에 그치지만, 다른 커널 메모리 손상 취약점과 체이닝될 경우 시스템 불안정성을 이용해 특정 보안 메커니즘을 우회하거나 권한 상승의 기회로 활용될 가능성이 있습니다. (패턴: DoS $\rightarrow$ 시스템 재부팅/불안정 유도 $\rightarrow$ 타 취약점 트리거)
🔎 탐지
(1) 로그 지표: 커널 링 버퍼(dmesg) 및 /var/log/syslog 또는 kern.log.
- 핵심 패턴: BUG: scheduling while atomic, mptcp_pm_nl_append_new_local_addr, Call Trace 내 synchronize_rcu 포함 여부.
(2) 탐지 규칙 예시:
- SIEM 쿼리 (의사코드):
SELECT timestamp, hostname, message FROM kernel_logs WHERE message LIKE '%BUG: scheduling while atomic%' AND message LIKE '%mptcp_pm_nl_append_new_local_addr%'
- 정규식 패턴: BUG: scheduling while atomic:.*mptcp_pm_nl_append_new_local_addr
(3) 오탐 튜닝: 일반적인 커널 패닉과 구분하기 위해 반드시 Call Trace에 MPTCP 관련 함수(mptcp_*)가 포함되어 있는지 확인해야 합니다. 단순 하드웨어 결함으로 인한 패닉은 제외합니다.
🛡️ 완화 방안
- 즉시(긴급 차단): MPTCP 기능 비활성화.
- 방법:
sysctl -w net.mptcp.enabled=0(또는/etc/sysctl.conf에 추가). - 난이도: 매우 낮음 / 운영 영향: MPTCP 사용 서비스 불가 / 검증:
sysctl net.mptcp.enabled값 확인 / 우선순위: 최상.
- 방법:
- 단기(완화): 로컬 권한자의 네트워크 소켓 생성 및 관리 권한 제한 (예:
capabilities조정).- 난이도: 중간 / 운영 영향: 일부 애플리케이션 네트워크 동작 제약 가능성 / 검증: 일반 사용자 계정의 MPTCP 연결 시도 테스트 / 우선순위: 중.
- 근본(해결): 영향받는 커널 버전(5.18
6.12.19, 6.136.13.7 등)을 패치된 최신 버전으로 업데이트.- 난이도: 높음 (재부팅 필요) / 운영 영향: 시스템 재시작에 따른 일시적 중단 / 검증:
uname -r로 커널 버전 확인 / 우선순위: 상.
- 난이도: 높음 (재부팅 필요) / 운영 영향: 시스템 재시작에 따른 일시적 중단 / 검증:
[파이프라인 근거] 본 리포트는 다중 소스에서 데이터 일관성이 확인되었으며, 실측 EPSS 값(0.00137)과 CVSS 4.7, AV:L/AC:H 조건을 근거로 실제 악용 가능성이 낮다고 판단하여 우선순위를 'monitor'로 결정하였습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=4.7 · non-KEV · EPSS=0.00137 · exploit=hard · in_scope=None