[단독방어] 분석 — CVE-2025-71088
The Linux kernel MPTCP fallback race (CVE-2025-71088) can cause a local denial‑of‑service via kernel panic; immediate mitigation is to disable MPTCP until the patched kernel is deployed.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00121 · 악용난이도 hard
🔍 공격 기법
MPTCP 서브플로우가 동시에 연결될 때 subflow_data_ready() 함수에서 레이스 컨디션이 발생합니다.
공격자는 로컬 권한을 이용해 여러 MPTCP 세션을 빠르게 생성·삭제하여 해당 레이스를 유도하고, 커널이 일관되지 않은 fallback 상태에 머물게 함으로써 WARN_ON 경고와 함께 커널 패닉(오버플로우) → 서비스 가용성 상실(DoS)을 초래합니다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 로 평가되어 “로컬·저복잡도·낮은 권한·사용자 개입 없음”이라는 조건을 만족하지만, 실제 공격을 수행하려면 공격자가 대상 시스템에 직접 접근해 MPTCP 소켓을 생성하고 동시에 여러 서브플로우를 연결하는 simult‑connect race 를 재현해야 합니다. 이 레이스 컨디션은 커널 네트워킹 스택 내부의 타이밍 의존 로직에만 존재하므로, 동일한 환경(예: QEMU 표준 PC 구성)과 정확히 맞물리는 시점에서 패킷을 조작해야 하며 재현성이 낮아 실제 악용 난이도는 높게 평가됩니다. EPSS 값 0.00121 은 지난 12개월간 보고된 실제 공격 사례가 극히 드물다는 것을 의미하고, KEV 리스트에 등재되지 않은 점 역시 현재까지 실전 위협으로 전환된 적이 없음을 뒷받침합니다. 공격 표면은 Linux 커널의 net/mptcp/subflow.c 모듈과 이를 호출하는 시스템 콜(예: socket, setsockopt), 그리고 MPTCP를 지원하도록 설정된 네트워크 인터페이스에 한정됩니다. 따라서 공격자는 로컬 계정(일반 사용자 수준)으로 해당 시스템에 로그인한 뒤, 특수히 crafted 된 TCP/MPTCP 패킷을 전송해 레이스 상황을 강제해야 합니다. 이러한 조건들을 모두 만족시켜야만 커널 내부의 fallback 상태가 일관성 없이 변조되어 잠재적 권한 상승이나 서비스 거부를 유발할 수 있기 때문에, 난이도·악용 가능성은 “hard” 로 평가된 것이 합리적 입니다.
💥 영향 분석
- 가용성: 레이스가 발생하면 커널이 panic 상태에 빠져 시스템 전체가 재부팅되거나 멈춥니다.
- 보안 범위: 로컬 공격(L)이며, 특권 권한(특정 UID/PR)만 있으면 실행 가능하므로 다중 사용자 환경에서 한 사용자의 실수·악의적 행위가 전체 서버에 영향을 미칩니다.
- 데이터 무결성·기밀성은 직접적인 영향이 없으며(C,N/I,N), 오직 서비스 가용성(A,H)만 위험합니다.
🔗 관련 취약점·체이닝
MPTCP와 연관된 기존 레이스·동시성 결함(예: CVE‑2024‑XXXXX)과 커널 OOM/패닉 트리거 메커니즘을 조합하면, 공격자는 동일 호스트 내에서 다른 로컬 권한 상승 취약점(예: CAP_SYS_ADMIN 획득) 후 이 레이스를 이용해 서비스 중단을 가속화할 수 있습니다. (구체적인 CVE 번호는 확인되지 않음)
🔎 탐지
-
로그 지표
dmesg·/var/log/kern.log에 출력되는WARNING: CPU:와net/mptcp/subflow.c:<line>형태의 경고.kernel: Oops혹은kernel: BUG메시지와 함께subflow_data_ready+0x...스택 트레이스.- syslog 필드:
message,priority=warning|error,source=kern.
-
SIEM 탐지 규칙 예시 (Splunk, Elastic, Graylog 등 공통 형식)
text1index=kernel sourcetype=kernel_log2("subflow_data_ready" AND "net/mptcp/subflow.c")3| regex message="WARNING: CPU:.*net/mptcp/subflow\.c:[0-9]+"4| stats count by host, _time span=5m5| where count > 2- 조건: 동일 호스트에서 5분 내에 경고가 2회 이상 발생하면 알림.
- 오탐 시나리오: 개발/테스트 환경에서 의도적으로 MPTCP 테스트 스크립트를 실행할 경우; 이를 차단하려면
process_name="mptcp_test"등 추가 필터를 적용.
-
정규식 패턴
text1^WARNING:\sCPU:\s[0-9]+\sPID:\s[0-9]+\sat\snet/mptcp/subflow\.c:[0-9]+\s.*subflow_data_ready\+0x[0-9a-f]+ -
튜닝
- 정상적인 MPTCP 테스트가 빈번히 이루어지는 경우,
process_name혹은user_id(예:uid=1001) 필터를 추가해 오탐을 감소. - 경고 발생 횟수 임계값을 환경에 맞게 조정 (예: prod에서는 1회/10분, dev/test에서는 5회/10분).
- 정상적인 MPTCP 테스트가 빈번히 이루어지는 경우,
🛡️ 완화 방안
- MPTCP fallback 기능 제한
- 커널 부팅 옵션에
mptcp_fallback=0(해당 옵션이 존재할 경우) 또는/proc/sys/net/mptcp/fallback_enabled를 0으로 설정.
- 커널 부팅 옵션에
- 서브플로우 연결 속도 제한
sysctl -w net.mptcp.max_subflows=1로 서브플로우 수를 최소화해 레이스 발생 가능성을 감소.
- 감사 로그 강화
kernel.printk레벨을 높여(echo 8 > /proc/sys/kernel/printk) 경고가 놓치지 않도록 함.
구현 난이도: 낮음~중간 (부팅 옵션 수정 시 재부팅 필요).
운영 영향: MPTCP 성능 저하(멀티패스 전송 이점 상실) 및 일부 애플리케이션의 연결 지연.
검증 방법: sysctl -a | grep mptcp 로 설정값 확인, 그리고 앞서 정의한 SIEM 규칙으로 경고 발생 여부 재확인.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00121 · exploit=hard · in_scope=None