🇰🇷 한글 설명
Linux 커널의 SCTP 프로토콜 구현에서 STALE_COOKIE 오류 처리 시 데이터 길이를 제대로 검증하지 않아 발생하는 취약점입니다. 공격자가 조작된 SCTP 패킷을 보내면 커널 메모리의 초기화되지 않은 값이 유출될 수 있습니다.
💡 쉬운 설명
컴퓨터가 잘못된 정보를 받았을 때 그 길이를 확인하지 않고 읽으려다 메모리의 비밀 정보를 흘리는 문제입니다. 해커는 이를 통해 시스템 내부의 민감한 데이터를 엿볼 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sctp: validate STALE_COOKIE cause length before reading staleness
When an ERROR chunk with a STALE_COOKIE cause is received in the
COOKIE_ECHOED state, sctp_sf_do_5_2_6_stale() reads the 4-byte Measure
of Staleness that follows the cause header:
err = (struct sctp_errhdr *)(chunk->skb->data);
stale = ntohl(*(__be32 *)((u8 *)err + sizeof(*err)));
err is the first cause in the chunk, not the STALE_COOKIE cause that
caused the dispatch, and nothing guarantees the staleness field is
present. sctp_walk_errors() only requires a cause to be as long as the
4-byte header, so for a STALE_COOKIE cause of length 4 the read runs
past the cause, and for a minimal ERROR chunk past skb->tail. The value
is echoed to the peer in the Cookie Preservative of the reply INIT,
leaking uninitialized memory.
sctp_sf_cookie_echoed_err() already walks to the STALE_COOKIE cause, so
check its length there and pass it to sctp_sf_do_5_2_6_stale(), which
reads that cause instead of the first one. A STALE_COOKIE cause too
short to hold the staleness field is discarded.
The read is reachable by any peer that can drive an association into
COOKIE_ECHOED, including an unprivileged process using a raw SCTP socket
in a user and network namespace.
📍 영향받는 시스템
SCTP 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
네트워크를 통해 조작된 길이의 STALE_COOKIE 원인을 포함한 SCTP ERROR 청크 전송
🛡️ 대응 방법
SCTP 관련 보안 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.