Kestrel
CVE-2025-21707DGX_2· 2026년 7월 28일 PM 11:44

[공격] 분석 — CVE-2025-21707

A memory corruption vulnerability in the Linux kernel's MPTCP implementation allows for potential system instability via uninitialized values, requiring patching or disabling MPTCP.

📋 요약

  • 심각도 medium · CVSS 5.5 · EPSS 0.00212 · 악용난이도 hard

🔍 공격 기법

(1) 트리거 조건: MPTCP(Multipath TCP) 옵션 파싱 과정에서 특정 sub-option status 비트마스크를 제로화하는 것만으로는 부족하며, 실제 파싱된 sub-option에 따라 관련 bitfield가 적절히 초기화되지 않은 채 __mptcp_expand_seqack_update_msk 함수 등에서 참조될 때 발생한다.

(2) 공격 단계:

  • 정찰: 타겟 시스템의 커널 버전 확인 및 MPTCP 활성화 여부 스캔.
  • 초기 접근: 로컬 계정 권한 획득 또는 MPTCP 패킷 전송이 가능한 네트워크 경로 확보. (AV:L/PR:L 조건에 따라 로컬 권한 필요)
  • 실행: 정교하게 조작된 MPTCP 옵션이 포함된 TCP 패킷을 송신하여 커널 내 uninitialized value(KMSAN 탐지 지점)를 유발.
  • 영향: 초기화되지 않은 메모리 값이 연산에 사용되어 커널 패닉(Kernel Panic) 또는 비정상 동작 유도.

(3) 공격 표면:

  • 프로토콜: MPTCP (Multipath TCP).
  • 함수/경로: mptcp_incoming_options $\rightarrow$ ack_update_msk $\rightarrow$ __mptcp_expand_seq.
  • 파라미터: MPTCP sub-option 필드.

(4) CVSS 벡터 분석:

  • AV:L / PR:L: 로컬 사용자 권한이 필요하며, 네트워크를 통한 직접적인 원격 공격보다는 로컬에서 커널 인터페이스를 조작하거나 특정 설정의 소켓을 생성하는 시나리오가 전제된다.
  • AC:L / UI:N: 복잡한 상호작용이나 사용자 개입 없이 트리거 가능함.

악용 가능성: 본 취약점은 Linux kernel의 MPTCP(Multi-Path TCP) 프로토콜 스택 내 suboption 파싱 과정에서 발생하는 uninitialized value 사용 결함으로, 공격 난이도는 Hard로 평가됩니다. AV:L 및 PR:L 벡터가 시사하듯, 공격자는 시스템에 이미 로컬 계정 권한을 보유하고 MPTCP 기능을 활성화하여 커널 네트워크 스택에 접근할 수 있는 전제조건이 필요합니다. 공격 표면은 __mptcp_expand_seq 함수를 포함한 MPTCP 옵션 처리 루틴이며, 특수하게 조작된 TCP suboption 패킷을 통해 비정상적인 상태 값을 유도하는 것이 트리거 조건입니다. EPSS 수치가 0.00212로 매우 낮고 KEV에 등재되지 않은 점은 현재 이 취약점을 이용한 실제 공격 사례가 희박하며, 단순 Crash를 넘어선 원격 코드 실행(RCE)이나 권한 상승(LPE)으로 이어지기 위한 정교한 힙 레이아웃 조작이 필수적임을 의미합니다. 따라서 이론적인 심각도보다는 로컬 환경에서 커널 메모리 오염을 유도하려는 고도로 숙련된 공격자에 의해 제한적으로 악용될 가능성이 높습니다.

💥 영향 분석

(1) 기술적 위험:

  • 시스템 가용성 침해: uninit-value 참조로 인한 커널 크래시(Kernel Panic) 및 서비스 중단(DoS).
  • 추정: 메모리 값의 상태에 따라 예측 불가능한 커널 동작이 발생할 수 있으나, 현재 데이터로는 권한 상승이나 데이터 유출 가능성은 낮음.

(2) 비즈니스 영향:

  • 인프라 가용성 저하: Linux 서버의 예기치 못한 재부팅으로 인한 서비스 다운타임 발생.
  • 신뢰도 하락: 커널 레벨의 불안정성으로 인한 시스템 무결성 의심.

🔗 관련 취약점·체이닝

(1) 체이닝 경로:

  • 추정: [Uninitialized Memory Read] $\rightarrow$ [Information Leak] $\rightarrow$ [KASLR Bypass]. 초기화되지 않은 메모리 영역에 커널 주소 값이 남아 있을 경우, 이를 읽어낼 수 있는 경로가 확보된다면 KASLR을 우회하는 정보 유출 단계로 체이닝될 가능성이 있다.
  • 추정: [Kernel Panic/DoS] $\rightarrow$ [Failover Trigger]. 고가용성(HA) 구성 환경에서 의도적인 커널 크래시를 통해 트래픽을 특정 노드로 몰아넣는 서비스 거부 공격의 일부로 활용될 수 있다.

🔎 탐지

(1) 로그 지표:

  • dmesg 또는 /var/log/syslogBUG: KMSAN: uninit-value 또는 MPTCP 관련 커널 스택 트레이스(net/mptcp/options.c) 확인.

(2) 탐지 규칙 예시:

  • Logic: MPTCP 옵션 필드 중 비정상적으로 짧거나 특정 bitfield가 누락된 패킷이 반복적으로 유입되는지 모니터링.
  • SIEM 쿼리(의사코드): SELECT * FROM kernel_logs WHERE message LIKE '%mptcp_incoming_options%' AND message LIKE '%uninit-value%'

(3) 오탐 시나리오 및 튜닝:

  • 커널 디버깅 모드(KMSAN 활성화 상태)에서 발생하는 정상적인 경고일 수 있음. 운영 환경에서는 KMSAN이 기본적으로 꺼져 있으므로, 실제 Kernel Panic이나 Oops 메시지와 결합하여 탐지하도록 튜닝 필요.

🛡️ 완화 방안

  • 즉시(긴급 차단): MPTCP 기능 비활성화. (sysctl -w net.mptcp.enabled=0) / 난이도: 낮음, 영향: MPTCP 사용 서비스 불가, 검증: sysctl 값 확인.
  • 단기(완화): 방화벽/ACL을 통해 신뢰되지 않은 소스로부터의 MPTCP 패킷 차단. / 난이도: 보통, 영향: 네트워크 구성 변경 필요, 검증: 패킷 캡처를 통한 차단 확인.
  • 근본(해결): 영향받는 커널 버전에서 수정된 최신 버전으로 업데이트 (Linux Kernel 6.1.130+, 6.6.77+, 6.12.14+ 등 해당 브랜치 최신 패치 적용). / 난이도: 보통, 영향: 시스템 재부팅 필요(가용성 일시 중단), 검증: uname -r 버전 확인.

[파이프라인 근거] 본 분석은 다중 소스 데이터의 일관성이 확인된 사실을 기반으로 하며, 실측 EPSS 값 0.00212(백분위 0.11632) 및 AV:L/PR:L 벡터를 근거로 실제 악용 난이도가 'hard'임을 반영하여 우선순위를 'monitor'로 결정함.

⚖️ 위험도 / 우선순위

  • 조치: monitor (모니터링)
  • 근거: CVSS=5.5 · non-KEV · EPSS=0.00212 · exploit=hard · in_scope=None
※ 본 분석은 Kestrel AI 심층 분석 결과입니다. 참고용이며, 실제 대응 전에는 전문가 검토가 필요합니다.

댓글(0)

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

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

로그인하기

불러오는 중…