[공격] 분석 — CVE-2026-31427
CVE-2026-31427 is a local kernel flaw in nf_conntrack_sip that can corrupt SIP SDP session addresses (often to 0.0.0.0), leading to call disruption; immediate mitigation is to patch the kernel or disable the SIP conntrack helper.
📋 요약
- 심각도 medium · CVSS 5.5 · EPSS 0.0012 · 악용난이도 hard
🔍 공격 기법
- 트리거 조건: 로컬에서 SIP(UDP/TCP 5060 등) 패킷을 전송하고, SDP 본문에
m=라인이 없거나 모두 비활성(m=audio 0 …) 혹은 인식되지 않는 미디어 타입만 포함될 경우process_sdp()내부의rtp_addr변수가 초기화되지 않는다. - 실행 흐름
1️⃣ 정찰 – 시스템에 로드된nf_conntrack_sip모듈 확인 (lsmod | grep nf_conntrack_sip).
2️⃣ 초기 접근 – 로컬 사용자(권한 L) 가 raw/UDP 소켓을 이용해 임의 SIP INVITE 또는 UPDATE 메시지를 전송.
3️⃣ 취약점 발동 – 커널이process_sdp()를 호출하고, 초기화되지 않은rtp_addr를hooks->sdp_session()에 전달 →nf_nat_sip_sdp_session()가 스택 잔류값을 IP 주소로 포맷.
4️⃣ 결과 – 세션 레벨o=·c=필드가0.0.0.0(또는 임의 값) 로 덮어써져, 이후 RTP 흐름이 무시되거나 잘못된 호스트로 전송됨 → 서비스 거부(DoS) 혹은 통화 라우팅 변조 가능. - 공격 표면:
- 엔드포인트:
udp://*:5060(또는 TCP 5060, 5061 등 SIP 포트) - 파라미터/페이로드: SDP 본문 전체 혹은 부분적으로
m=라인 누락·비활성화
- 엔드포인트:
- CVSS ↔ 실제 조건 매핑
- AV:L → 로컬 프로세스가 직접 패킷을 주입해야 함 (원격 공격 불가능)
- AC:L, PR:L → 낮은 난이도·낮은 권한 사용자도 가능 (raw socket 허용 시)
- UI:N → 사용자 인터랙션 필요 없음
악용 가능성: 이 취약점은 AV:L(Local) · AC:L(Low) · PR:L(Low) · UI:N(None) 로 평가되었으므로, 공격자는 해당 호스트에 직접 패킷을 주입하거나 로컬 프로세스로부터 SIP 트래픽을 생성할 수만 있으면 충분합니다. 그러나 rtp_addr 가 초기화되지 않도록 만들려면 SDP 본문에 m= 라인이 전혀 없거나 모두 비활성(m=audio 0 …) 혹은 인식되지 않는 미디어 타입이어야 하며, 이는 정상적인 SIP 세션에서는 드물게 발생하는 특수한 입력 조건입니다. 공격자는 이 조건을 만족시키는 SIP INVITE/200 OK 등을 직접 전송해야 하므로, Attack Complexity 가 낮다고 평가되지만 실제로는 특정 SDP 구문을 정밀하게 조작해야 하는 장벽이 존재합니다. 또한 Privileges Required 가 Low 로 표시된 이유는 Netfilter 모듈이 커널 레벨에서 동작하므로 일반 사용자 권한으로도 트래픽을 전송할 수 있기 때문이며, 별도의 관리자 권한 상승 없이도 공격이 가능함을 의미합니다. EPSS = 0.0012 라는 매우 낮은 실측 위험 점수와 KEV에 등재되지 않은 상태는 현재까지 이 조건을 만족하는 실제 악용 사례가 거의 보고되지 않았음을 보여줍니다. 따라서 공격 표면은 SIP/SDP를 처리하는 Linux 기반 NAT·방화벽 서버의 nf_conntrack_sip 모듈이며, 해당 엔드포인트에 접근 가능한 내부 네트워크 혹은 동일 호스트에서만 이용될 수 있는 제한된 위협 경로라고 할 수 있습니다.
💥 영향 분석
- SIP 세션의 오너(
o=)와 연결 주소(c=)가0.0.0.0으로 변조되어 통화가 즉시 중단됨(DoS). - 내부망에서 정상적인 SIP 프록시·SBC 가 해당 세션을 라우팅하려 할 경우, 잘못된 IP 로 인해 트래픽 손실 및 서비스 품질 저하.
- 공격자가 이후에 변조된 SDP 를 이용해 악의적인 RTP 스트림을 삽입할 가능성은 존재하지만, 현재 코드 경로는 주소만 교체하므로 직접적인 원격 권한 상승(RCE)은 발생하지 않음.
🔗 관련 취약점·체이닝
- 유형:
CWE‑457 (Use of Uninitialized Variable)→ 메모리 오염을 이용한 데이터 변조. - 가능 체인 예시:
- Uninitialized Variable → Incorrect Address Handling → Denial‑of‑Service → Subsequent Exploitation (예: 다른 커널 모듈에서 동일 스택 값 활용해 권한 상승).
- 추정: 동일 프로세스가
CAP_NET_RAW를 보유하고 있으면, 변조된 SDP 로 내부 SIP 프록시를 속여 악의적인 RTP 패킷을 전송하는 Session Hijacking 시나리오와 결합될 수 있음.
🔎 탐지
- 커널 audit 로그에
nf_conntrack_sip가sdp_session콜백을 호출하면서 주소가0.0.0.0혹은 비정상적인 IPv4 값으로 기록되는 이벤트. dmesg/kern.log에서SIP SDP rewrite to 0.0.0.0와 유사한 메시지(패치 적용 전).- Netfilter conntrack 상태 테이블(
conntrack -L)에 SIP 세션이UNREPLIED로 남아 있고,caddr=0.0.0.0필드가 보이는 경우.
🛡️ 완화 방안
1️⃣ 패치 적용 – 해당 커널 버전(2.6.26 ~ 6.19.11) 중 최신 패치를 배포하고, nf_conntrack_sip 모듈이 포함된 최신 릴리즈로 업그레이드.
2️⃣ 헬퍼 비활성화 – sysctl -w net.netfilter.nf_conntrack_helper=0 혹은 modprobe -r nf_conntrack_sip 로 모듈 언로드.
3️⃣ 접근 제한 – SELinux/AppArmor 정책으로 SIP 포트에 대한 raw socket 사용을 제한하고, 불필요한 로컬 프로세스가 해당 포트를 사용할 수 없게 함.
4️⃣ 모니터링/차단 – iptables/nftables 규칙 추가: -p udp --dport 5060 -m string --string "c=IN IP4 0.0.0.0" --algo bm -j DROP.
5️⃣ 감사 규칙 – auditctl -w /proc/net/ip_conntrack_helper -p wa -k sip_helper 로 변경 시점 기록.
위 조치를 순차적으로 적용하면 현재 CVE-2026-31427 의 실전 위험을 최소화할 수 있습니다.
⚖️ 위험도 / 우선순위
- 조치: monitor (모니터링)
- 근거: CVSS=5.5 · non-KEV · EPSS=0.0012 · exploit=hard · in_scope=None