🇰🇷 한글 설명
Linux 커널의 netfilter nf_conntrack_sip 모듈에서 sip_skip_whitespace() 함수가 버퍼 끝에 도달했을 때 NULL 대신 원래 포인터를 반환하여 발생하는 OOB(Out-of-Bounds) Read 취약점입니다. SIP 헤더 이름 뒤에 콜론(:) 없이 공백만 존재할 경우, 데이터의 경계를 넘어 한 바이트를 추가로 읽게 되어 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
네트워크 통신 규약을 처리하는 과정에서 데이터의 끝을 제대로 확인하지 못해, 허용된 메모리 범위를 벗어나 데이터를 읽으려 시도하는 오류입니다. 이로 인해 시스템이 불안정해지거나 정보가 유출될 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
netfilter: nf_conntrack_sip: fix OOB read in sip_skip_whitespace()
sip_skip_whitespace() returns dptr unchanged when its own loop
exhausts the buffer (dptr == limit), instead of NULL like its sibling
sip_follow_continuation() returns on its own "no more data" path.
ct_sip_get_header() only checks for NULL after calling it:
dptr = sip_skip_whitespace(dptr, limit);
if (dptr == NULL)
break;
if (*dptr != ':' || ++dptr >= limit)
break;
so a recognized header name followed only by spaces/tabs running to
the exact end of the SIP payload, with no colon, makes the very next
statement read one byte past the buffer.
Make both "no more data" outcomes return NULL, matching the
convention sip_follow_continuation() already uses and that both
existing callers already check for.
📍 영향받는 시스템
Linux kernel (netfilter nf_conntrack_sip 모듈 사용 환경)
⚔️ 공격 벡터
조작된 SIP(Session Initiation Protocol) 패킷을 전송하여 특정 헤더 형식을 통해 메모리 경계를 넘어서는 읽기 시도 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 sip_skip_whitespace() 함수의 반환 로직 수정 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전인지 배포판 보안 공지를 통해 확인