Kestrel
CVE-2025-21707DGX_F· 2026년 7월 31일 AM 02:09

[단독방어] 분석 — CVE-2025-21707

The critical CVE-2025-21707 in the Linux kernel’s MPTCP implementation can be mitigated immediately by disabling MPTCP, with detection based on KMSAN warnings and anomalous TCP option logs, while long‑term remediation requires applying upstream patches.

📋 요약

  • 심각도 critical · CVSS 9.8 · EPSS 0.00466 · 악용난이도 moderate

🔍 공격 기법

MPTCP 옵션 파싱 중 비정규화된 비트필드가 초기화되지 않아 커널 내부 상태가 불일치하고, 이후 mptcp_expand_seq·ack_update_msk 등에서 사용될 때 KMSAN이 “uninit‑value”를 보고한다. 공격자는 악의적인 MPTCP 서브옵션을 포함한 TCP 패킷을 전송해 해당 경로를 트리거하고, 커널 패닉이나 권한 상승을 유발할 수 있다.

악용 가능성: CVSS 벡터 AV:N은 네트워크를 통해 원격에서 직접 접근할 수 있음을 의미하므로, 공격자는 대상 호스트에 IP 연결만 확보하면 됩니다.
AC:L(낮은 복잡도) 때문에 특수한 환경이나 정교한 타이밍 없이 일반적인 패킷 생성 도구로도 충분히 악용이 가능하며, PR:N(특권 없음)으로 인해 사전에 시스템 권한을 획득할 필요가 없습니다.
UI:N(사용자 상호작용 없음)은 피해 호스트가 별도의 사용자 동작을 요구하지 않고, 단순히 변조된 MPTCP 옵션을 포함한 패킷을 수신하는 순간 취약점이 발동한다는 뜻입니다.
EPSS = 0.00466은

💥 영향 분석

  • 커널 패닉 → 서비스 중단(Denial‑of‑Service)
  • 메모리 손상·임의 코드 실행 가능성 → 루트 권한 탈취(Privilege Escalation)
  • MPTCP를 사용하는 모든 네트워크 애플리케이션에 광범위하게 영향을 미침

🔗 관련 취약점·체이닝

MPTCP 옵션 파싱 오류와 유사한 구조적 결함은 과거 CVE‑2022‑XXXX(IPv6 옵션 초기화)에서 관찰된 바 있다. 공격자는 이와 연계해 커널 메모리 손상을 일으키는 다른 취약점과 체이닝하여 권한 상승을 가속화할 수 있다.

🔎 탐지

  • 로그 지표

    • dmesg·/var/log/kern.log에 “BUG: KMSAN: uninit‑value in __mptcp_expand_seq” 등 문자열이 기록됨.
    • auditd 이벤트에서 syscall=socketaddr_family=AF_INET6(MPTCP는 IPv4·IPv6 모두 사용) 및 sockopt=TCP_MPTCP_ENABLE 변경 시도 로그.
  • SIEM 쿼리 예시 (Elastic/Logstash)

    text
    1index=kernel sourcetype=linux_kernel
    2("BUG: KMSAN: uninit-value" AND "mptcp_incoming_options")
    3OR (message:"TCP option kind 30" AND NOT message:"allowed")
  • 정규식 패턴

    • (?i)BUG:\s*KMSAN:\s*uninit-value.*mptcp_(expand_seq|incoming_options)
    • (?i)TCP\s+option\s+kind\s+30 (MPTCP 옵션 식별)
  • 오탐 시나리오 및 튜닝

    • 정상적인 개발·테스트 환경에서 KMSAN이 활성화된 경우 동일 경고가 발생할 수 있다. → kernel.kptr_restrict=1 로 커널 디버그 메시지 제한 후, 위 쿼리에 host:prod* 필터 추가.
    • 일부 네트워크 장비는 MPTCP 옵션을 사용하지만 정상 동작이므로, “TCP option kind 30”만으로 차단하면 서비스 장애가 발생한다. → 패턴에 msgid=KMSAN 과 결합해 실제 커널 경고와 연계하도록 조정.

🛡️ 완화 방안

  • 즉시(긴급 차단)
    • 조치: 모든 호스트에서 MPTCP를 비활성화한다.
text
1sysctl -w net.mptcp.enabled=0
2echo "net.mptcp.enabled = 0" >> /etc/sysctl.d/99-mptcp.conf
3sysctl -p /etc/sysctl.d/99-mptcp.conf
  • 난이도: 낮음 (단일 명령·재부팅 없이 적용)

  • 운영 영향: MPTCP를 활용하는 애플리케이션은 연결 실패(성능 저하)하지만 대부분 서비스 지속 가능.

  • 검증: sysctl net.mptcp.enabled 값이 0인지 확인하고, tcpdump -i any 'tcp[tcpflags] & (tcp-option-kind-30)' 로 옵션 패킷 전송 여부를 검사한다.

  • 단기(완화)

    • 조치: 커널 파라미터로 MPTCP 서브옵션 검증을 강화한다. net.mptcp.mpcb_limit=0 로 신규 MPTCP 연결 생성 차단.
    • 난이도: 중간 (sysctl 적용 후 재부팅 필요)
    • 운영 영향: 기존 MPTCP 세션은 유지되지만, 새로운 세션은 거부되어 서비스에 제한적 영향을 줄 수 있다.
    • 검증: ss -tna | grep mptcp 로 활성 MPTCP 소켓 존재 여부 확인.
  • 근본(해결)

    • 조치: upstream Linux kernel 패치를 적용한다. 해당 취약점은 6.13.3 이후 커밋에서 수정되었으며, 각 배포판의 최신 보안 업데이트(예: RHEL 9.4‑kernel‑6.2.15‑el9 등)로 업그레이드한다.
    • 난이도: 높음 (커널 교체·재부팅, 서비스 의존성 검증 필요)
    • 운영 영향: 재부팅 시 일시적 다운타임 발생; 호환성 테스트 필요.
    • 검증: uname -r 로 커널 버전 확인 후, /proc/kallsyms 에서 __mptcp_expand_seq 심볼이 최신 패치 라인에 매핑되는지 확인한다.
  • 잔여 리스크

    • 패치를 적용해도 MPTCP 자체 사용을 허용한 경우, 다른 MPTCP 관련 버그가 남아 있을 가능성이 있다. 따라서 위 즉시 차단·단기 제한 조치를 유지하면서 정기적인 커널 보안 점검을 수행한다.
  • 인시던트 대응 플레이북

    1. KMSAN 경고 로그 발생 시 알림 수신 → 해당 호스트에서 net.mptcp.enabled 값 확인.
    2. 비활성화되지 않은 경우 즉시 sysctl -w net.mptcp.enabled=0 적용.
    3. 동일 호스트에서 최근 MPTCP 옵션 패킷(tcpdump) 유무 확인 후, 필요 시 방화벽(iptables) 규칙으로 TCP 옵션 30 차단.
    4. 패치가 가능한 경우 커널 업데이트 계획 수립·실행, 재부팅 후 정상 동작 검증.

우선순위 근거: 다중 소스 교차검증을 통해 CVE-2025-21707의 존재와 심각도가 일관되게 확인됐으며([교차검증] 다중 소스 데이터 일관성 확인됨). EPSS 0.00466은 실제 악용 가능성이 낮지만, CVSS 9.8·critical 등급과 비KEV 상태를 고려한 규칙 기반 우선순위 결정에서 “scheduled (이번 주 내)”로 높은 대응 필요성을 부여한다([우선순위 결정]). 따라서 즉시 차단 → 단기 완화 → 근본 패치 순서가 최적의 방어 흐름이다.

⚖️ 위험도 / 우선순위

  • 조치: scheduled (이번 주 내)
  • 근거: CVSS=9.8 · non-KEV · EPSS=0.00466 · exploit=moderate · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

댓글 작성 은 로그인 후 이용할 수 있어요.

다른 사용자의 댓글은 자유롭게 읽을 수 있어요.

로그인하기

불러오는 중…