🇰🇷 한글 설명
Linux 커널의 BPF 링크 반복자(link iterator)에서 아직 ID가 할당되지 않은 링크를 일시적 항목으로 처리하지 않아 발생하는 취약점입니다. anon_inode_getfile() 실패 시 해제된 링크를 참조하게 되어 use-after-free가 발생하며, KASAN 환경에서는 커널 패닉으로 이어질 수 있습니다.
💡 쉬운 설명
리눅스 커널 내부에서 이미 삭제된 메모리를 다시 사용하는 버그입니다. 악용되면 시스템이 비정상 종료되거나 권한 상승에 악용될 가능성이 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: Skip unsettled links in link iterator
bpf_link_prime() inserts a link into link_idr before anon_inode_getfile()
succeeds and before bpf_link_settle() publishes the ID in link->id.
bpf_link_by_id() treats such an ID-zero link as unsettled, but the link
iterator takes a reference without this check.
If anon_inode_getfile() then fails, the creator removes the ID and frees
its still-private link directly. The iterator is left with a dangling
reference and its next bpf_link_put() accesses freed memory.
Treat ID-zero entries as transient in bpf_link_get_curr_or_next(), just as
bpf_link_by_id() does.
BUG: KASAN: slab-use-after-free in bpf_link_put
Write of size 8 by task exp/384
Call Trace:
bpf_link_put kernel/bpf/syscall.c:3372
bpf_link_seq_next kernel/bpf/link_iter.c:33
bpf_seq_read kernel/bpf/bpf_iter.c:158
vfs_read fs/read_write.c:572
ksys_read fs/read_write.c:716
do_syscall_64 arch/x86/entry/syscall_64.c:84
entry_SYSCALL_64_after_hwframe arch/x86/entry/entry_64.S:121
Kernel panic - not syncing: KASAN: panic_on_warn set ...
📍 영향받는 시스템
해당 수정이 적용되기 전의 Linux 커널 (BPF 링크 반복자를 사용하는 버전)
⚔️ 공격 벡터
로컬 사용자가 BPF 링크 반복자(bpf_iter)를 동시에 조작하여 해제된 메모리를 참조하게 만드는 방식
🛡️ 대응 방법
벤더가 제공하는 수정된 Linux 커널 패치를 적용하고 시스템을 재부팅
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지에서 해당 CVE의 수정 버전과 비교하여, 같거나 높으면 패치된 것입니다.