[단독방어] 분석 — CVE-2025-21706
CVE-2025-21706 allows a locally privileged process to set the MPTCP “fullmesh” flag on implicit endpoints, potentially causing kernel warnings and denial‑of‑service; the immediate mitigation is to disable MPTCP netlink fullmesh configuration via sysctl.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.00205 · 악용난이도 hard
🔍 공격 기법
공격자는 로컬에서 PR:L 권한을 가진 상태에서 Netlink (NLMSG_TYPE MPTCP_PM_FULLMESH) 메시지를 전송합니다.
mptcp_pm_nl_set_flags() → set_flags() 훅이 “implicit” 엔드포인트에도 fullmesh 플래그를 허용하게 되면서 커널은 net/mptcp/pm_netlink.c 의 경고문을 출력하고, 이후 서브플로우 재생성 로직에서 비정상적인 메모리·링크 구조가 형성되어 시스템 가용성이 저하될 수 있습니다.
악용 가능성: 이 취약점은 CVSS 벡터 AV:L/AC:L/PR:L/UI:N 으로 평가되었으며, 실제 공격 전제조건을 그대로 옮기면 “공격자는 로컬에 존재하고, 루트·관리자 권한을 보유한 상태에서 복잡도 낮게(특수 도구 없이) 실행할 수 있다”는 의미가 됩니다. 따라서 ‘hard’ 등급이 부여된 것은 공격 성공에 필요한 초기 접근 자체가 이미 높은 권한을 전제로 하기 때문이며, 이는 일반 사용자에게는 재현이 어려운 조건임을 반영합니다. EPSS 0.00205 라는 실측값은 현재까지 관찰된 실제 악용 사례가 극히 드물지만 완전히 배제되지 않음을 보여주고, KEV에 등재되지 않은 점은 아직 공개적으로 활용 가능한 익스플로잇이 존재하지 않음을 의미합니다. 트리거 조건은 netlink 인터페이스를 통해 mptcp_pm_nl_fullmesh() 함수에 ‘fullmesh’ 플래그 값을 전달하는 것으로, 이 호출은 커널 내부의 pm_netlink.c 소스에서 노출되는 Netlink 메시지와 파라미터(플래그값, 엔드포인트 종류)로 제한됩니다. 공격 표면은 로컬 시스템 내
💥 영향 분석
- 기밀성(C): 없음
- 무결성(I): 없음
- 가용성(A): 높음 – fullmesh 플래그가 부적절하게 설정되면 서브플로우 재생성 루프가 발생해 커널 OOM 또는 패닉이 일어나 서비스 중단(Denial‑of‑Service) 위험이 있습니다.
🔗 관련 취약점·체이닝
- 동일한 MPTCP 경로 관리 로직을 이용하는 과거 Netlink 플래그 조작 취약점과 연계될 가능성이 있습니다(예: CVE‑2024‑xxxx와 유사한 netlink → 플래그 오버라이트 패턴).
- 로컬 권한 상승(LPE) 취약점이 먼저 이용되어 루트 권한을 획득한 뒤, 본 플래그 조작을 수행하는 체인 공격이 이론적으로 가능합니다.
🔎 탐지
로그 지표
dmesg또는 커널 로그에 아래와 유사한 경고가 기록됩니다.text1WARNING: CPU: * PID: * at net/mptcp/pm_netlink.c:1496 __mark_subflow_endp_available2... mptcp_pm_nl_fullmesh ...3... mptcp_nl_set_flags ...auditd가 Netlink GENERIC 메시지를 캡처하도록 설정된 경우,type=NETLINK와msg="mptcp"필드에 “fullmesh” 문자열이 포함됩니다.
SIEM 쿼리 예시 (Splunk)
1index=kernel_logs sourcetype=linux_kernel 2| regex _raw "net/mptcp/pm_netlink\.c:[0-9]+.*fullmesh" 3| stats count by host, pid, message 4| where count > 0정규식 예시 (ELK)
1"WARNING: CPU: .* at net/mptcp/pm_netlink\.c:[0-9]+ .*fullmesh"오탐 시나리오 및 튜닝
- 커널 디버깅 단계에서 의도적으로 fullmesh 플래그를 테스트하는 경우 동일한 경고가 발생할 수 있습니다.
- 튜닝 방법:
process.name혹은uid필터링을 추가해 “root”이면서 비정상적인 프로세스(예:syz.*)만 알림 대상으로 제한합니다.
🛡️ 완화 방안
- Netlink 접근 제어: SELinux 혹은 AppArmor 정책을 추가해
mptcpNetlink GENERIC 메시지를 루트만 사용할 수 있도록 제한합니다. 예시 (SELinux):text1module mptcp_netlink 1.0;2require {3 type unconfined_t;4 class netlink_socket { send_msg };5}
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.00205 · exploit=hard · in_scope=None