🇰🇷 한글 설명
Linux 커널의 SCTP 프로토콜 구현에서 네트워크 네임스페이스(netns) 해제 시 Use-After-Free(UAF) 취약점이 발견되었습니다. sysctl 설정과 제어 소켓의 초기화 및 해제 순서 불일치로 인해, 이미 해제된 메모리 영역에 접근할 수 있는 보안 허점이 존재합니다.
💡 쉬운 설명
컴퓨터의 네트워크 설정 중 하나인 SCTP를 사용할 때, 네트워크 공간을 삭제하는 과정에서 이미 사라진 정보를 다시 참조하여 시스템 오류나 보안 문제가 발생할 수 있는 결함입니다. 이는 시스템의 안정성을 해치거나 공격자가 권한을 탈취하는 데 악용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
sctp: avoid auth_enable sysctl UAF during netns teardown
proc_sctp_do_auth() updates the SCTP control socket after changing
net.sctp.auth_enable. The handler gets the per-net SCTP state from
ctl->data, so an already opened sysctl file can still target a network
namespace while that namespace is being torn down.
SCTP previously registered its per-net sysctls from sctp_defaults_init(),
while the control socket is created later from sctp_ctrlsock_init(). This
exposed a window during initialization where auth_enable was writable
before net->sctp.ctl_sock existed, and a teardown window where auth_enable
stayed writable after inet_ctl_sock_destroy() had released the control
socket.
Move the per-net SCTP sysctl registration into sctp_ctrlsock_init() after
sctp_ctl_sock_init() succeeds, and unregister the sysctl table before
destroying the control socket in sctp_ctrlsock_exit(). If sysctl
registration fails after the control socket was created, destroy the
control socket in the same init path.
Make sctp_sysctl_net_unregister() tolerate a missing header and clear the
saved pointer so init-error and exit paths can safely share the unregister
helper.
📍 영향받는 시스템
SCTP 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
네트워크 네임스페이스를 생성하고 삭제하는 과정에서 특정 sysctl 설정을 조작하여 메모리 오류 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 SCTP sysctl 등록 및 해제 순서 수정
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인