[방어] 분석 — CVE-2025-21707
The Linux kernel MPTCP uninitialized‑value flaw (CVE-2025-21707) can trigger a kernel OOPS and full system compromise, so the immediate mitigation is to disable MPTCP via sysctl.
📋 요약
- 심각도 critical · CVSS 9.8 · EPSS 0.00466 · 악용난이도 moderate
🔍 공격 기법
MPTCP 옵션 파싱 과정에서 서브옵션 상태 비트마스크는 초기화되지만, 일부 서브옵션 전용 비트필드가 남아 있어 초기화되지 않은 값이 그대로 사용됩니다.
공격자는 특수하게 조작된 MPTCP SYN/ACK 패킷을 전송해 해당 비트필드를 트리거하면 커널 내부에서 uninitialized‑value 가 발생하고, KMSAN 경고와 함께 메모리 오염·커널 패닉이 일어납니다. 이 과정은 사용자 개입 없이 네트워크만 이용하므로 원격 무인 공격이 가능합니다.
악용 가능성: 이 취약점은 AV:N, AC:L, PR:N, UI:N 벡터가 의미하듯 원격에서 네트워크만 연결돼 있으면 추가 인증이나 사용자 조작 없이 바로 악성 MPTCP 옵션 패킷을 전송해 공격을 수행할 수 있습니다. 복잡도는 “Low”로 평가되는데, 이는 syzbot이 발견한 바와 같이 특정 서브옵션 비트마스크와 연관된 필드만 초기화하지 않으면 되기 때문에 단일 TCP‑MPTCP 옵션 조합만으로 충분히 트리거가 가능하기 때문입니다. EPSS 0.00466(≈0.47 %)은 현재까지 실제 악용 사례는 드물지만, 이 정도 확률도 존재한다는 점에서 이론적 CVSS 점수와 별개로 현실적인 위협임을 입증합니다. KEV에 등재되지 않은 것은 아직 대규모 공격이 보고되지 않았다는 의미이며, 따라서 보안 담당자는 “잠재적·희귀” 수준의 위험이라고 인식하되 무시해서는 안 됩니다. 공격 표면은 MPTCP를 활성화한 모든 Linux 커널(IPv4/IPv6)에서 TCP 연결을 수립할 때 파싱되는 suboption 필드이며, 외부에 노출된 서비스(예: 웹 서버·SSH·컨테이너 오버레이 등)가 해당 커널을 사용한다면 모두 대상이 됩니다. 따라서 공격자는 네트워크 경계 밖에서도 단일 패킷 전송만으로 취약한 호스트를 침투시키거나, 커널 메모리 오류(KMSAN)로 인한 서비스 거부·권한 상승을 시도할 수 있습니다.
💥 영향 분석
- 성공적인 악용 시 커널 레벨에서 임의 코드 실행 또는 시스템 전체 다운(DoS)이 발생합니다.
- 권한 상승이 즉시 이루어지며, 동일 호스트 내 다른 서비스·컨테이너까지 침투가 확산될 수 있습니다.
- MPTCP를 사용 중인 환경(예: 모바일 백본, 데이터센터 멀티패스 TCP)에서만 발현되지만, 커널 자체가 대상이므로 영향을 받는 모든 Linux 배포판에 위험합니다.
🔗 관련 취약점·체이닝
- 기존 MPTCP 옵션 파싱 결함(CVE‑2024‑xxxx)과 유사하게 옵션 파싱 시 초기화 누락을 이용하는 패턴이 존재합니다.
- 커널 메모리 오류(KASAN/KMSAN)와 연계된 공격은 추가적인 커널 오브젝트 포인터 조작(예:
struct sock변조)으로 이어질 가능성이 있습니다.
🔎 탐지
-
로그 지표
kernel혹은dmesg로그에BUG: KMSAN: uninit-value in mptcp_문자열이 포함된 항목./var/log/kern.log·/var/log/messages에서mptcp_incoming_options함수 호출 스택이 기록되는 경우.- Netfilter 로그(
iptables -j LOG)에 TCP 옵션 번호 30(MPTCP)와 비정상적인 길이 조합이 나타나는 패킷.
-
SIEM 탐지 규칙 예시 (pseudo‑query)
text1source:kernel AND message:*KMSAN* AND message:*mptcp_incoming_options*text1source:firewall AND tcp_option:30 AND option_len > 0 AND NOT rule:trusted_mptcptext1source:auditd AND syscall:setsysctl AND key:net.mptcp.enabled AND value != 0 -
오탐 튜닝
- 정상적인 MPTCP 사용 환경에서는 위 로그가 빈번히 발생할 수 있으므로,
rule:trusted_mptcp라벨을 사전에 정의해 허용된 IP·포트 조합만 제외합니다. - KMSAN 경고는 디버그 커널에서만 활성화될 가능성이 높으니, 프로덕션에서는 해당 로그가 나타날 경우 즉시 경고로 처리하도록 설정합니다.
- 정상적인 MPTCP 사용 환경에서는 위 로그가 빈번히 발생할 수 있으므로,
🛡️ 완화 방안
-
즉시(긴급 차단)
sysctl -w net.mptcp.enabled=0로 MPTCP 기능을 전역 비활성화하고,/etc/sysctl.d/99-mptcp.conf에 영구 적용합니다.- 난이도: 낮음 / 운영 영향: MPTCP를 이용한 트래픽 차단(대체 경로 필요) / 검증:
sysctl net.mptcp.enabled값 확인.
- 난이도: 낮음 / 운영 영향: MPTCP를 이용한 트래픽 차단(대체 경로 필요) / 검증:
-
단기(완화)
- iptables/nftables 규칙으로 TCP 옵션 30을 포함하는 패킷을 차단
⚖️ 위험도 / 우선순위
- 조치: scheduled (이번 주 내)
- 근거: CVSS=9.8 · non-KEV · EPSS=0.00466 · exploit=moderate · in_scope=None