CVE-2026-64192 in Linux
요약
\~에 의해 VulDB • 2026. 07. 20.
리눅스 커널에서 다음 취약점이 해결되었습니다:
bpf: BPF LSM이 초기화되지 않은 경우 BPF_MAP_TYPE_INODE_STORAGE 생성 거부
CONFIG_BPF_LSM=y가 설정되면 BPF inode 저장소 맵(BPF_MAP_TYPE_INODE_STORAGE)이 커널에 컴파일됩니다. 그러나 부팅 시점에 BPF LSM이 명시적으로 활성화되지 않은 경우(예: "lsm=" 부트 매개변수에서 생략된 경우), bpf_lsm()을 위한 lsm_prepare()가 실행되지 않습니다.
결과적으로, BPF inode 보안 블롭 오프셋(bpf_lsm_blob_sizes.lbs_inode)이 초기화되지 않고 예약된 struct rcu_head 이후의 유효한 오프셋(일반적으로 16바이트 이상)으로 업데이트되는 대신 기본 컴파일 크기인 8바이트로 유지됩니다.
특권 사용자가 BPF_MAP_TYPE_INODE_STORAGE 맵을 생성하고 업데이트하면 bpf_inode()가 inode->i_security + 8를 평가합니다. 이는inode->i_security 블롭 시작 부분에 있는 struct rcu_head.func 콜백 포인터와 잘못되어 별칭(alias)이 됩니다. 이후 맵 요소 정리 또는 inode 파괴 과정에서 owner_storage에 NULL을 쓰면 대기 중인 RCU 콜백 포인터가 지워집니다. 나중에 rcu_do_batch()가 대기 중인 콜백을 실행할 때 주소 0x0에서 명령어 페치를 시도하여 즉시 커널 패닉이 발생합니다.
__ro_after_init 플래그로 표시된 전역 bpf_lsm_initialized 부울 변수를 도입함으로써 이를 수정합니다. LSM 프레임워크가 BPF LSM을 성공적으로 등록하면 bpf_lsm_init() 내부에서 이 플래그를 true로 설정합니다. inode_storage_map_alloc()에서의 맵 할당을 이 플래그에 게이트하여, 만약 BPF LSM이 초기화되지 않은 경우 -EOPNOTSUPP를 반환합니다.
이러한 fail-fast 접근 방식은 지원되는 BPF LSM 인프라가 부재할 때 사용자 공간에서 inode 저장소 맵을 할당하는 것을 방지하여 좀비 맵 상태를 피합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.