[공격] 분석 — CVE-2025-21938
A race condition in Linux kernel MPTCP implementation leads to a "scheduling while atomic" bug causing system crashes, requiring immediate MPTCP disabling or kernel updates.
📋 요약
- 심각도 medium · CVSS 4.7 · EPSS 0.00137 · 악용난이도 hard
🔍 공격 기법
(1) 트리거 조건
- 다수의 연결 요청이 병렬로 발생하여
mptcp_pm_nl_get_local_id에서 주소를 찾지 못한 상태로 동시에mptcp_pm_nl_append_new_local_addr함수에 진입할 때 발생. - 특히 패킷 수신(
packet recv) 과정 중 RCU read critical section 내에서 preemption이 비활성화된 상태일 때, 내부적으로synchronize_rcu를 호출하여 원자적 컨텍스트(Atomic context)에서 스케줄링을 시도하는 결함을 건드림.
(2) 공격 단계
- 정찰: 대상 시스템의 커널 버전 및 MPTCP 활성화 여부 확인.
- 초기 접근: 로컬 권한 획득 또는 네트워크를 통한 다량의 MPTCP 연결 요청 전송 (AV:L이므로 추정: 로컬 사용자의 특수하게 조작된 패킷 생성 도구 필요).
- 실행/영향: 병렬적으로 암시적(implicit) mptcp 엔드포인트 생성을 유도하여 Race Condition 트리거 $\rightarrow$ 커널 패닉(
BUG: scheduling while atomic) 발생 $\rightarrow$ 시스템 중단.
(3) 공격 표면
- 프로토콜: MPTCP (MultiPath TCP).
- 함수/경로:
mptcp_pm_nl_append_new_local_addr$\rightarrow$synchronize_rcu. - 엔드포인트: 네트워크 스택의 로컬 주소 리스트 관리 로직.
(4) CVSS 벡터 연결
- AV:L (Local): 공격자가 로컬 환경에서 커널 인터페이스에 접근 가능해야 함.
- AC:H (High): 정확한 타이밍에 병렬 요청을 보내야 하는 Race Condition 특성상 성공 확률이 낮음.
- PR:L (Low): 낮은 수준의 권한만으로도 트리거 가능.
- UI:N (None): 사용자 상호작용 불필요.
악용 가능성: 본 취약점은 AV:L 및 AC:H 벡터가 시사하듯, 공격자가 이미 시스템에 접근하여 낮은 권한(PR:L)을 획득한 상태에서 매우 까다로운 타이밍 조건(Race Condition)을 맞춰야 하므로 공격 난이도가 매우 높습니다. 공격 표면은 Linux 커널의 mptcp 프로토콜 스택 내 mptcp_pm_nl_append_new_local_addr 함수이며, 구체적으로는 다수의 연결 요청이 병렬로 발생하여 암시적 엔드포인트를 생성하려는 시점이 트리거가 됩니다. 특히 RCU read critical section이나 preemption이 비활성화된 컨텍스트에서 synchronize_rcu가 호출되어 발생하는 'scheduling while atomic' 버그로, 이는 정교한 패킷 송수신 제어를 통해 커널 패닉(DoS)을 유도하는 경로로 이어집니다. EPSS 수치가 0.00137로 매우 낮고 KEV에 등재되지 않은 점은, 이론적인 커널 결함임에도 불구하고 실제 야생(In-the-wild)에서 공격자가 이를 무기화하여 성공시킨 사례가 극히 드문 실전적 한계를 보여줍니다. 결과적으로 본 취약점은 단독으로 권한 상승을 일으키기보다 시스템 가용성을 저해하는 DoS 성격이 강하며, 실행을 위해서는 커널의 스케줄링 상태를 정밀하게 조작해야 하는 고도의 기술적 전제가 필요합니다.
💥 영향 분석
(1) 기술적 위험
- 서비스 중단 (DoS): 커널 패닉으로 인한 시스템 즉시 크래시 및 재부팅 발생. 데이터 유출이나 권한 상승보다는 가용성 파괴에 집중된 취약점임.
(2) 비즈니스 영향
- 가용성 상실: 서버 다운타임 발생으로 인한 서비스 중단.
- 신뢰도 저하: 커널 수준의 불안정성으로 인한 인프라 신뢰도 하락.
🔗 관련 취약점·체이닝
- 추정: DoS $\rightarrow$ 가용성 침해 체인: 단독으로는 권한 상승이 어려우나, 시스템의 고가용성(HA) 구성에서 특정 노드를 지속적으로 다운시켜 트래픽을 다른 취약한 노드로 몰아넣는 전략적 DoS 체이닝에 이용될 수 있음.
- 추정: Race Condition $\rightarrow$ Memory Corruption: 현재는
scheduling while atomic으로 인한 패닉만 확인되나, 유사한 Race Condition 패턴은 추후 Use-After-Free(UAF) 등 메모리 오염 취약점으로 발전할 가능성이 있는 유형임.
🔎 탐지
(1) 로그 지표
- 커널 링 버퍼(
dmesg) 또는/var/log/syslog,/var/log/kern.log에서BUG: scheduling while atomic문자열과 함께mptcp_pm_nl_append_new_local_addr스택 트레이스 확인.
(2) 탐지 규칙 예시
- SIEM 쿼리 (Pseudo):
process == "kernel" AND message CONTAINS "scheduling while atomic" AND message CONTAINS "mptcp" - 로그 패턴:
/(BUG: scheduling while atomic.*mptcp_pm_nl_append_new_local_addr)/
(3) 오탐 시나리오 및 튜닝
- 일반적인 커널 버그로 인한 패닉과 구분 필요. 반드시 Call Trace 내에
mptcp관련 함수가 포함되어 있는지 검증하여 튜닝.
🛡️ 완화 방안
- 즉시 (긴급 차단): MPTCP 기능 비활성화. (
sysctl -w net.mptcp.disabled=1) / 난이도: 하, 영향: MPTCP 사용 서비스 불가, 검증:sysctl값 확인. - 단기 (완화): 네트워크 방화벽에서 비정상적인 다량의 MPTCP 연결 요청 필터링 및 모니터링 강화. / 난이도: 중, 영향: 성능 저하 가능성, 검증: 트래픽 로그 분석.
- 근본 (해결): 취약점이 해결된 커널 버전으로 업데이트.
- Linux Kernel 5.18 $\rightarrow$ 6.1.132+, 6.2 $\rightarrow$ 6.6.84+, 6.7 $\rightarrow$ 6.12.20+, 6.13 $\rightarrow$ 6.13.8+ 등으로 업데이트.
- 난이도: 상, 영향: 시스템 재부팅 필요(가용성 일시 중단), 검증:
uname -r버전 확인.
[파이프라인 근거] 본 분석은 다중 소스 교차검증을 통해 데이터 일관성이 확인되었으며, 실측 EPSS 값(0.00137)과 CVSS 4.7, AV:L/AC:H 조건을 근거로 실제 악용 난이도가 매우 높음(hard)을 판단하여 우선순위를 'monitor'로 결정한 결과입니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=4.7 · non-KEV · EPSS=0.00137 · exploit=hard · in_scope=None