
CVE-2026-52924에 대한 기술 분석: Linux 커널 SCTP의 만료된 쿠키 처리에서 발생하는 심각한 use-after-free 취약점으로, 근본 원인, 공격 흐름, 수정 사항 및 탐지 방법을 포함합니다.
CVE ID: CVE-2026-52924
심각도: CRITICAL (CVSS 9.8)
구성 요소: Linux 커널 - SCTP(Stream Control Transmission Protocol)
유형: Use-After-Free (CWE-416, CWE-825)
공개일: 2026-06-24
상태: 패치 완료
이 취약점은 SCTP 상태 머신이 스테일 COOKIE-ECHO 패킷을 처리할 때 발생합니다. 이 문제는 연결(association)이 롤백될 때 발신(outbound) 스트림 큐가 제대로 정리되지 않는 것과 관련이 있습니다.
sctp_stream_update()가 이전 스트림 테이블을 해제하고 새 테이블을 설치함stream->out_curr가 여전히 해제된 sctp_stream_out 항목을 가리킴out_curr->ext에 접근함sctp_sf_do_5_2_6_stale():
├─ Stale Cookie 오류 수신
├─ 연결 상태 롤백
└─ sctp_stream_update() 호출
├─ 이전 스트림 테이블 해제
├─ 새 스트림 테이블 설치
└─ 버그: stream->out_curr이 무효화되지 않음 ❌
이후 디큐 시도 시:
sctp_sched_fcfs_dequeue():
└─ stream->out_curr->ext 접근 (해제된 메모리) 💥
BUG: KASAN: slab-use-after-free in sctp_sched_fcfs_dequeue+0x13a/0x140
Read of size 8 at addr ff1100004d4d3208 by task mini_poc/9312
CPU: 1 UID: 1001 PID: 9312 Comm: mini_poc Not tainted 7.1.0-rc1-00305-gbd3a4795d574 #5 PREEMPT(full)
Call trace:
sctp_sched_fcfs_dequeue+0x13a/0x140
sctp_outq_flush+0x1603/0x33e0
sctp_do_sm+0x31c9/0x5d30
sctp_assoc_bh_rcv+0x392/0x6f0
sctp_inq_push+0x1db/0x270
sctp_rcv+0x138d/0x3c10
단순한 수정 방법은 stream->out_curr을 그냥 초기화하는 것입니다:
// 불충분한 수정 ❌
stream->out_curr = NULL;
문제점: 아웃큐에는 여전히 다음 항목이 남아 있습니다:
이러한 스테일 참조는 접근 시 여전히 use-after-free를 유발합니다.
해결책: 스테일 쿠키 처리 중 연결의 아웃큐를 완전히 비웁니다.
// 올바른 수정 ✓
sctp_outq_free(&asoc->outqueue);
이렇게 하면 다음이 보장됩니다:
파일: net/sctp/sm_statefuns.c
함수: sctp_sf_do_5_2_6_stale()
추가 사항: sctp_stream_update() 호출 전에 sctp_outq_free(&asoc->outqueue) 호출
enum sctp_disposition sctp_sf_do_5_2_6_stale(...)
{
// ... 기존 코드 ...
// 스트림 상태 재구축 전에 아웃큐 비우기
sctp_outq_free(&asoc->outqueue);
// 이제 스트림 업데이트가 안전함
sctp_stream_update(&asoc->stream, &asoc->c.h_init_tag);
// ... 나머지 함수 코드 ...
}
# 커널 설정에서 KASAN 활성화
CONFIG_KASAN=y
CONFIG_KASAN_GENERIC=y
# 런타임 출력:
BUG: KASAN: slab-use-after-free
# 검증 없이 안전하지 않은 stream->out_curr 접근 찾기
grep -r "out_curr->ext" net/sctp/
grep -r "out_curr->" net/sctp/sched*.c
SCTP 비활성화: SCTP 모듈 제거 또는 SCTP 포트(132, 132 UDP) 차단
echo "install sctp /bin/true" >> /etc/modprobe.d/sctp-disable.conf
방화벽 규칙: 네트워크 경계에서 SCTP 트래픽 차단
iptables -A INPUT -p sctp -j DROP
커널 버전: 패치된 버전으로 업그레이드
sctp_sf_do_5_2_6_stale()에서 sctp_outq_free()를 호출하는 커널 패치를 적용합니다.
sctp_outq_free()가 out_curr을 올바르게 무효화하는지 검증** 작성자 : Elliot
문서 버전: 1.0
최종 업데이트: 2026-09-07
분류: 공개 정보