🇰🇷 한글 설명
Linux 커널의 sk_clone() 함수에서 조기 종료(early bailout) 발생 시 소켓의 BPF 로컬 저장소를 적절히 초기화하지 않아 발생하는 Use-After-Free(UAF) 취약점입니다. 이로 인해 복제된 소켓이 해제될 때 부모 소켓의 BPF 저장소까지 함께 파괴되어 메모리 오류가 발생할 수 있습니다.
💡 쉬운 설명
새로운 소켓을 복사하는 과정에서 오류가 발생해 작업을 중단할 때, 잘못된 메모리 연결을 끊지 않아 발생하는 문제입니다. 이로 인해 원래 사용 중이던 데이터가 갑자기 삭제되어 시스템이 불안정해지거나 해킹에 이용될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Fix UAF in sock clone early bailouts
Similar to recent commit 9b51a6155d14 ("bpf,fork: wipe ->bpf_storage
before bailouts that access it"), sk_clone() performs an initial
shallow copy of the socket field ->sk_bpf_storage via sock_copy()
for the cloned socket newsk.
If sk_clone() bails out early (e.g. if sk_filter_charge() fails) prior
to calling bpf_sk_storage_clone(), newsk->sk_bpf_storage still points
to the parent socket's BPF local storage. When newsk is subsequently
freed via sk_free(), the deallocation path (__sk_destruct() ->
bpf_sk_storage_free()) destroys the parent socket's BPF local storage,
leading to a use-after-free (UAF) on the parent socket.
Fix this by resetting newsk->sk_bpf_storage to NULL immediately after
sock_copy() in sk_clone(), and remove the now redundant initialization
from bpf_sk_storage_clone().
📍 영향받는 시스템
Linux Kernel (sk_clone() 및 BPF 관련 기능이 포함된 버전)
⚔️ 공격 벡터
특수하게 조작된 소켓 복제 요청을 통해 sk_filter_charge() 실패를 유도하여 메모리 해제 오류를 발생시킴
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 sk_clone() 내 sk_bpf_storage 초기화 로직을 적용해야 함
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.
📊 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