🇰🇷 한글 설명
Linux 커널의 ax88179_178a 드라이버에서 skb_linearize() 호출 실패 시 skb를 해제하지 않고 NULL을 반환하는 메모리 누수 취약점이 발견되었습니다. 이로 인해 메모리 압박이 있는 상황에서 데이터 전송(TX) 프레임이 실패할 때마다 메모리가 누수됩니다.
💡 쉬운 설명
네트워크 장치를 통해 데이터를 보낼 때, 메모리 부족 등의 이유로 오류가 발생하면 사용했던 메모리를 돌려주지 않고 버리는 문제가 있습니다. 이 문제가 반복되면 시스템의 메모리가 점점 줄어들어 결국 컴퓨터가 느려지거나 멈출 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: usb: ax88179_178a: fix skb leak in ax88179_tx_fixup()
When the interface has NETIF_F_SG enabled and skb_linearize() fails in
ax88179_tx_fixup(), the function returns NULL without freeing the skb.
usbnet_start_xmit() treats a NULL return from tx_fixup() as a drop
(info->flags does not set FLAG_MULTI_PACKET for this driver), jumping
to the "drop" label where it does `if (skb) dev_kfree_skb_any(skb)`.
Because tx_fixup() returned NULL, the local skb variable in
usbnet_start_xmit() is NULL, so the original skb is never freed — a
memory leak on every TX frame whose linearization fails (i.e. under
memory pressure).
Free the skb before returning, matching the error handling already used
for the pskb_expand_head() failure path in the same function.
📍 영향받는 시스템
ax88179_178a 드라이버를 사용하는 Linux 커널 시스템
⚔️ 공격 벡터
메모리 압박 상태를 유도하여 지속적인 데이터 전송 실패를 일으킴으로써 메모리 고갈 유도
🛡️ 대응 방법
커널 패치를 적용하여 ax88179_tx_fixup() 함수 내 오류 발생 시 skb를 적절히 해제하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 최신 보안 패치 버전인지 확인