🇰🇷 한글 설명
Linux 커널의 mac80211 드라이버에서 메모리 할당 실패 시 발생하는 이중 해제(Double Free) 취약점입니다. 새로운 메모리 할당 전에 기존 객체를 먼저 해제하도록 설계되어 있어, 할당 실패 시 이미 해제 대기 중인 객체를 다시 해제하려고 시도하여 시스템 오류를 유발합니다.
💡 쉬운 설명
컴퓨터가 새로운 메모리를 준비하기 전에 기존 메모리를 먼저 버리려다가, 메모리 부족 상황이 발생하면 이미 버린 메모리를 또 버리려고 시도하는 오류입니다. 이 과정에서 시스템이 충돌하거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
wifi: mac80211: fix unsol_bcast_probe_resp double free on alloc failure
ieee80211_set_unsol_bcast_probe_resp() calls kfree_rcu() on the old
template before allocating the replacement. If the kzalloc() then fails,
it returns -ENOMEM while link->u.ap.unsol_bcast_probe_resp still points
at the object already queued for freeing. A later update or AP teardown
re-queues that same rcu_head; the second free is caught by KASAN when the
RCU sheaf is processed in softirq:
BUG: KASAN: double-free in rcu_free_sheaf (mm/slub.c:5850)
Free of addr ffff88800d06f300 by task exploit/145
...
__rcu_free_sheaf_prepare (mm/slub.c:2634 mm/slub.c:2940)
rcu_free_sheaf (mm/slub.c:5850)
rcu_core (kernel/rcu/tree.c:2617 kernel/rcu/tree.c:2869)
handle_softirqs (kernel/softirq.c:622)
The buggy address belongs to the cache kmalloc-128 of size 128
Queue the old object for kfree_rcu() only after the new one is published,
matching ieee80211_set_probe_resp() and ieee80211_set_s1g_short_beacon().
📍 영향받는 시스템
Linux kernel (mac80211 subsystem)
⚔️ 공격 벡터
메모리 할당 실패를 유도하는 특수한 네트워크 패킷 또는 시스템 부하 상황을 통한 로컬/원격 공격
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.