🇰🇷 한글 설명
리눅스 커널의 rhashtable 구성 요소에서 테이블 재시작 시 오래된 반복자(iter->p)를 제대로 초기화하지 않는 취약점이 발견되었습니다. 이로 인해 rhashtable_walk_next() 함수가 해제된 메모리를 참조하는 Use-After-Free(UAF) 오류가 발생하여 시스템 충돌을 유발할 수 있습니다.
💡 쉬운 설명
데이터를 찾는 과정에서 이미 삭제된 메모리 주소를 다시 참조하려고 시도하여 발생하는 오류입니다. 이 문제가 발생하면 컴퓨터 시스템이 갑자기 멈추거나 꺼질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rhashtable: clear stale iter->p on table restart
rhashtable_walk_start_check() has two restart paths when resuming a walk.
When iter->walker.tbl is valid, it re-validates iter->p against the table
and sets iter->p = NULL if the object is gone. When iter->walker.tbl is
NULL (table was freed during resize), it resets slot and skip but forgets
to clear iter->p.
rhashtable_walk_next() then dereferences the stale iter->p, reading
freed memory. This is a use-after-free.
Any caller that does multi-fragment rhashtable walks across
walk_stop/walk_start boundaries is affected. Concrete cases include
netlink_diag (__netlink_diag_dump in net/netlink/diag.c) and TIPC
(tipc_nl_sk_walk in net/tipc/socket.c).
Crash stack (netlink_diag):
BUG: KASAN: slab-use-after-free in rhashtable_walk_next+0x365/0x3c0
Read of size 8 at addr ffff88801a9d2438 (freed kmalloc-2k, offset 1080)
Call Trace:
rhashtable_walk_next+0x365/0x3c0 (lib/rhashtable.c:1016)
__netlink_diag_dump+0x160/0x760 (net/netlink/diag.c:122)
netlink_diag_dump+0xc2/0x240
netlink_dump+0x5bc/0x1270
netlink_recvmsg+0x7a3/0x980
sock_recvmsg+0x1bc/0x200
__sys_recvfrom+0x1d4/0x2c0
📍 영향받는 시스템
rhashtable를 사용하는 리눅스 커널 (netlink_diag, TIPC 관련 모듈 포함)
⚔️ 공격 벡터
로컬 사용자가 특정 시스템 호출(netlink_diag 등)을 통해 메모리 재할당을 유도하여 Use-After-Free를 트리거함
🛡️ 대응 방법
rhashtable의 iter->p 초기화 로직이 수정된 최신 리눅스 커널 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 보안 업데이트 버전인지 확인
📊 CVSS Vector String
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA GPU Display Driver for Linux