🇰🇷 한글 설명
리눅스 커널의 vmalloc 메모리 할당 과정에서 하드웨어 인터럽트가 아닌 상황임에도 불구하고, Bottom Half(BH)가 비활성화된 컨텍스트를 인터럽트 상황으로 오인하여 시스템 BUG()를 발생시키는 취약점입니다. 이로 인해 특정 네트워크 브리지 작업 시 커널 패닉이 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터의 핵심 운영체제인 리눅스에서 특정 네트워크 작업을 할 때, 시스템이 현재 상황을 잘못 판단하여 스스로 멈춰버리는 오류가 있습니다. 이는 시스템의 안정성을 해칠 수 있는 문제입니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mm/vmalloc: do not trigger BUG() on BH disabled context
__get_vm_area_node() currently triggers a BUG() if in_interrupt() returns
true. However, in_interrupt() also reports true when BH are disabled.
The bridge code can call rhashtable_lookup_insert_fast() with bottom
halves disabled:
__vlan_add()
-> br_fdb_add_local()
spin_lock_bh(&br->hash_lock); <-- Disable BH
-> fdb_add_local()
-> fdb_create()
-> rhashtable_lookup_insert_fast()
-> kvmalloc()
-> vmalloc()
-> __get_vm_area_node()
-> BUG_ON(in_interrupt())
spin_unlock_bh(&br->hash_lock)
this triggers the BUG() despite the caller not being in NMI or
hard IRQ context.
Replace the in_interrupt() check with in_nmi() || in_hardirq().
📍 영향받는 시스템
Linux Kernel (vlan/bridge 관련 모듈을 사용하는 버전)
⚔️ 공격 벡터
네트워크 브리지 및 VLAN 관련 특정 함수 호출을 통한 커널 패닉 유도
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 in_interrupt() 체크 로직을 수정해야 합니다.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인합니다.