🔍 CVE-2026-89579

7.8
CVSS Score
HIGH
2026-09-11
2026-10-19 09:17
✅ 완료

🇰🇷 한글 설명

32비트 리눅스 커널의 BPF bloom filter 구현에서 메모리 할당 크기 계산 오류와 비트 인덱싱 처리 미흡으로 인한 취약점입니다. 이로 인해 할당된 메모리 범위를 벗어난 쓰기 작업이 가능해져 로컬 권한 상승이 발생할 수 있습니다.

💡 쉬운 설명

컴퓨터가 데이터를 저장할 공간을 계산할 때 숫자가 너무 커서 잘못된 크기로 공간을 만드는 버그입니다. 이 버그를 이용하면 공격자가 허용되지 않은 메모리 영역에 접근하여 관리자 권한을 뺏을 수 있습니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: bpf: Harden bloom filter sizing and indexing on 32-bit kernels bloom_map_alloc() has two 32-bit-specific problems when the computed bitmap reaches the U32_MAX fallback case. First, BITS_TO_BYTES(U32_MAX) is evaluated with 32-bit arithmetic. The addition performed by DIV_ROUND_UP wraps, so the map allocates only the fixed-size bloom filter object while keeping bitset_mask == U32_MAX. Subsequent updates can then write past the allocated object. Second, fixing only the allocation size is not sufficient. The bloom hash is a u32, but set_bit() takes a signed long bit number and x86 test_bit() eventually feeds the index to variable_test_bit(long, ...). On 32-bit kernels, hashes in [0x80000000, U32_MAX] therefore become negative bit offsets. x86 bt/bts with a memory operand interpret those offsets relative to the supplied base, so a map with bitset_mask == U32_MAX can read or write before bloom->bitset even after allocating the full 512 MiB bitmap. Keep the U32_MAX fallback, but split each hash into a word pointer and an in-word bit number before calling test_bit() or set_bit(). The bitops argument is then always in [0, BITS_PER_LONG - 1], while BIT_WORD(h) still selects the intended word in the full bitmap. Compute the bitset size from (u64)bitset_mask + 1 before passing the final size to bpf_map_area_alloc(). This fixes the original under-allocation and keeps the allocated storage consistent with the addressable bitset. Exploitation note: local privilege escalation is possible on a 32-bit x86 kernel using the under-allocation bug from a binary with CAP_BPF.

📍 영향받는 시스템

32-bit x86 Linux kernel (BPF bloom filter 사용 시)

⚔️ 공격 벡터

CAP_BPF 권한을 가진 로컬 사용자가 조작된 BPF bloom filter를 생성하여 메모리 오버플로우 유도

🛡️ 대응 방법

리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 BPF bloom filter의 인덱싱 및 할당 로직 수정 적용

🔧 검증 코드

명령어 결과가 i686 또는 i386으로 출력되면 32비트 아키텍처이므로 해당 취약점에 노출될 가능성이 있습니다.

Shell / Script
uname -m | grep -E 'i686|i386'

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H

💻 영향받는 소프트웨어

Linux Kernel