🇰🇷 한글 설명
Linux 커널의 BPF kfuncs에서 음수 dentry(negative dentry)를 처리할 때 inode가 NULL인지 확인하지 않아 발생하는 NULL 포인터 역참조 취약점입니다. 이로 인해 시스템 크래시가 발생할 수 있으며, panic_on_warn 설정이 활성화된 경우 서비스 거부(DoS)로 이어질 수 있습니다.
💡 쉬운 설명
리눅스 시스템의 특정 기능을 사용할 때 잘못된 데이터가 입력되면 컴퓨터가 갑자기 멈추거나 꺼질 수 있는 오류입니다. 시스템이 처리할 수 없는 빈 값을 만났을 때 이를 제대로 걸러내지 못해 발생하는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
bpf: fix crash in bpf_[set|remove]_dentry_xattr for negative dentries
bpf_set_dentry_xattr and bpf_remove_dentry_xattr BPF kfuncs attempt to
lock the inode of the supplied dentry without checking if it is
NULL. If a negative dentry is passed (e.g. from
security_inode_create), d_inode(dentry) returns NULL, and
inode_lock(inode) will cause a NULL pointer dereference.
Trivially fix this by adding a NULL check for inode before attempting
to lock it, returning -EINVAL if it is NULL.
Additionally, drop WARN_ON(!inode) in bpf_xattr_read_permission() and
bpf_xattr_write_permission(). These warnings could be triggered by
passing a negative dentry to bpf_get_dentry_xattr() or the _locked
variants of the xattr kfuncs, potentially causing a Denial of Service
on systems with panic_on_warn enabled. Instead, simply return -EINVAL.
📍 영향받는 시스템
Linux kernel (BPF kfuncs를 사용하는 환경)
⚔️ 공격 벡터
BPF 프로그램을 통해 NULL inode를 반환하는 음수 dentry를 bpf_set_dentry_xattr 등의 함수에 전달
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인