🇰🇷 한글 설명
Linux 커널의 RDS TCP 구현에서 네트워크 네임스페이스 해제 시 sysctl 테이블을 소켓 파괴보다 먼저 해제하지 않아 발생하는 레이스 컨디션 취약점입니다. 이로 인해 이미 해제된 소켓을 참조하는 Use-After-Free(UAF) 오류가 발생할 수 있습니다.
💡 쉬운 설명
시스템 설정값을 변경하는 과정과 네트워크 설정이 삭제되는 과정이 동시에 일어나면서, 이미 사라진 데이터를 다시 사용하려고 시도하는 문제입니다. 이로 인해 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rds: tcp: unregister sysctl before tearing down listen socket
rds_tcp_exit_net() frees the per-netns RDS TCP listen socket via
rds_tcp_kill_sock() before unregistering the per-netns sysctl table. Since
rds_tcp_skbuf_handler() derives the netns from
rtn->rds_tcp_listen_sock->sk, a concurrent sysctl write can race with
netns teardown and dereference the freed socket/sk.
KASAN reports the race as:
BUG: KASAN: slab-use-after-free in rds_tcp_skbuf_handler+0x2aa/0x2e0
rds_tcp_skbuf_handler net/rds/tcp.c:721
proc_sys_call_handler fs/proc/proc_sysctl.c
vfs_write fs/read_write.c
__x64_sys_pwrite64 fs/read_write.c
Fix this by unregistering the RDS TCP sysctl table before calling
rds_tcp_kill_sock(). unregister_net_sysctl_table() prevents new sysctl
handlers from starting and waits for in-flight handlers to finish, so
the listen socket can then be released safely. The fix was tested
against the linked reproducer.
📍 영향받는 시스템
RDS TCP 기능을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
네트워크 네임스페이스 해제와 동시에 sysctl 설정을 변경하는 동시성 공격(Race Condition)
🛡️ 대응 방법
RDS TCP sysctl 테이블을 소켓 파괴 전에 해제하도록 커널 패치를 적용하십시오.
🔧 검증 코드
출력된 커널 버전을 확인하여 해당 취약점이 해결된 최신 패치 버전인지 확인하십시오.
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux