🇰🇷 한글 설명
리눅스 커널의 fbnic 드라이버에서 skb 재할당 시 shinfo 포인터를 적절히 갱신하지 않아 발생하는 Use-After-Free 취약점입니다. fbnic_tx_lso 함수가 skb_cow_head()를 호출하여 메모리를 재할당할 때, 이전의 잘못된 포인터를 참조함으로써 커널 메모리 오류를 유발합니다.
💡 쉬운 설명
데이터를 처리하는 과정에서 메모리 주소가 바뀌었는데, 컴퓨터가 옛날 주소를 계속 사용하려고 시도하여 발생하는 오류입니다. 이로 인해 시스템이 멈추거나 보안 공격에 노출될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
eth: fbnic: don't cache shinfo across skb realloc
fbnic_tx_lso() calls skb_cow_head() which may reallocate the skb
including the shared info. We can't use the pointer calculated
before the call.
BUG: KASAN: slab-use-after-free in fbnic_tx_lso.isra.0+0x668/0x8e0
Read of size 4 at addr ff110000262edd98 by task swapper/5/0
Call Trace:
fbnic_tx_lso.isra.0+0x668/0x8e0
fbnic_xmit_frame+0x622/0xba0
dev_hard_start_xmit+0xf4/0x620
Allocated by task 8653:
__alloc_skb+0x11e/0x5f0
alloc_skb_with_frags+0xcc/0x6c0
sock_alloc_send_pskb+0x327/0x3f0
__ip_append_data+0x188b/0x47a0
ip_make_skb+0x24a/0x300
udp_sendmsg+0x14d2/0x21e0
Freed by task 0:
kfree+0x123/0x5a0
pskb_expand_head+0x36c/0xfa0
fbnic_tx_lso.isra.0+0x500/0x8e0
fbnic_xmit_frame+0x622/0xba0
dev_hard_start_xmit+0xf4/0x620
sch_direct_xmit+0x25b/0x1100
The buggy address belongs to the object at ff110000262edc40
which belongs to the cache skbuff_small_head of size 640
The buggy address is located 344 bytes inside of
freed 640-byte region [ff110000262edc40, ff110000262ede
📍 영향받는 시스템
Linux Kernel (fbnic 드라이버를 사용하는 시스템)
⚔️ 공격 벡터
네트워크 패킷 전송 과정에서 특정 조건의 LSO(Large Send Offload) 요청을 유도하여 메모리 오류 유발
🛡️ 대응 방법
리눅스 커널을 최신 보안 패치가 적용된 버전으로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인