🇰🇷 한글 설명
Linux 커널의 SCTP IPv6 구현에서 sin6_scope_id와 sin6_flowinfo 필드가 초기화되지 않아 정의되지 않은 동작이 발생하는 취약점입니다. 이는 SCTP 주소 비교 시 메모리 읽기 오류로 이어져 시스템의 안정성을 해칠 수 있습니다.
💡 쉬운 설명
Linux 운영체제의 네트워크 통신 기능 중 SCTP 프로토콜 부분에서 메모리가 제대로 초기화되지 않는 버그입니다. 특정 네트워크 작업 중 예측 불가능한 동작이 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sctp: initialize more fields in sctp_v6_from_sk()
syzbot found that sin6_scope_id was not properly initialized,
leading to undefined behavior.
Clear sin6_scope_id and sin6_flowinfo.
BUG: KMSAN: uninit-value in __sctp_v6_cmp_addr+0x887/0x8c0 net/sctp/ipv6.c:649
__sctp_v6_cmp_addr+0x887/0x8c0 net/sctp/ipv6.c:649
sctp_inet6_cmp_addr+0x4f2/0x510 net/sctp/ipv6.c:983
sctp_bind_addr_conflict+0x22a/0x3b0 net/sctp/bind_addr.c:390
sctp_get_port_local+0x21eb/0x2440 net/sctp/socket.c:8452
sctp_get_port net/sctp/socket.c:8523 [inline]
sctp_listen_start net/sctp/socket.c:8567 [inline]
sctp_inet_listen+0x710/0xfd0 net/sctp/socket.c:8636
__sys_listen_socket net/socket.c:1912 [inline]
__sys_listen net/socket.c:1927 [inline]
__do_sys_listen net/socket.c:1932 [inline]
__se_sys_listen net/socket.c:1930 [inline]
__x64_sys_listen+0x343/0x4c0 net/socket.c:1930
x64_sys_call+0x271d/0x3e20 arch/x86/include/generated/asm/syscalls_64.h:51
do_syscall_x64 arch/x86/entry/syscall_64.c:63 [inline]
do_syscall_64+0xd9/0x210 arch/x86/entry/syscall_64.c:94
entry_SYSCALL_64_after_hwframe+0x77/0x7f
Local variable addr.i.i created at:
sctp_get_port net/sctp/socket.c:8515 [inline]
sctp_listen_start net/sctp/socket.c:8567 [inline]
sctp_inet_listen+0x650/0xfd0 net/sctp/socket.c:8636
__sys_listen_socket net/socket.c:1912 [inline]
__sys_listen net/socket.c:1927 [inline]
__do_sys_listen net/socket.c:1932 [inline]
__se_sys_listen net/socket.c:1930 [inline]
__x64_sys_listen+0x343/0x4c0 net/socket.c:1930
📍 영향받는 시스템
Linux kernel의 SCTP IPv6 모듈이 활성화된 모든 시스템
⚔️ 공격 벡터
로컬 공격자가 SCTP를 사용하는 애플리케이션에서 IPv6 소켓 listen 작업을 트리거할 경우
🛡️ 대응 방법
Linux kernel을 sctp_v6_from_sk() 함수 패치가 포함된 최신 버전으로 업데이트
🔧 검증 코드
커널 버전을 확인하고 SCTP 모듈이 현재 시스템에 로드되어 있는지 확인합니다. SCTP가 활성화된 경우 패치 적용이 필요합니다.
uname -r && lsmod | grep -q sctp && echo 'SCTP enabled' || echo 'SCTP not loaded'