🇰🇷 한글 설명
Linux 커널의 net/x25 모듈 내 x25_kill_by_neigh() 함수에서 Use-After-Free 취약점이 발견되었습니다. x25_list_lock을 해제한 후 소켓의 수명을 보장하지 않아, 소켓이 해제된 후에도 해당 메모리에 접근하여 시스템 불안정이나 권한 상승을 초래할 수 있습니다.
💡 쉬운 설명
컴퓨터의 네트워크 통신을 관리하는 프로그램에서 이미 삭제된 데이터의 주소를 다시 참조하여 발생하는 오류입니다. 이 오류를 이용하면 해커가 시스템을 멈추게 하거나 제어권을 뺏을 위험이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net/x25: fix use-after-free in x25_kill_by_neigh()
x25_kill_by_neigh() walks the global X.25 socket list looking for sockets
attached to a terminating neighbour. x25_list_lock protects list membership
while the lookup is in progress, but it does not pin a socket's lifetime
after the lock is dropped.
The function currently drops x25_list_lock before calling lock_sock(s). A
concurrent close can run x25_release(), remove the same socket from
x25_list, and drop the last socket reference in that window. The neighbour
teardown path can then lock or inspect a freed struct sock/struct x25_sock.
Take sock_hold(s) while x25_list_lock still proves that the list entry is
live, then drop the temporary reference after the socket has been locked,
rechecked, and released. Recheck x25_sk(s)->neighbour after lock_sock(),
because another path may have disconnected the socket before this path
acquired the socket lock. Restart the list walk after each disconnect
because the list lock was dropped and the previous iterator state may no
longer be valid.
A QEMU/KASAN run against origin/master reproduced a slab-use-after-free in
x25_kill_by_neigh().
📍 영향받는 시스템
X.25 프로토콜을 사용하는 Linux 커널 버전
⚔️ 공격 벡터
네트워크 이웃(neighbour) 해제 과정에서 발생하는 경쟁 상태(Race Condition)를 이용한 메모리 조작
🛡️ 대응 방법
X.25 관련 커널 패치가 적용된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 취약점이 해결된 최신 보안 패치 버전인지 확인합니다.
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux