🇰🇷 한글 설명
Linux 커널의 stmmac 네트워크 드라이버에서 skb 빌드 실패 시 stale(오래된) buf->page 포인터를 제대로 초기화하지 않는 취약점이 발견되었습니다. 이로 인해 이미 재사용된 페이지가 RX 디스크립터에 다시 프로그래밍되어 메모리 관리 오류를 유발할 수 있습니다.
💡 쉬운 설명
네트워크 데이터를 처리하는 과정에서 사용이 끝난 메모리 주소를 깨끗이 지우지 않아 발생하는 문제입니다. 이로 인해 시스템이 이미 사용 중인 메모리를 다시 사용하려고 시도하면서 오류가 발생할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: stmmac: clear stale buf->page after recycling on skb build failure
In stmmac_rx(), when napi_build_skb() fails the descriptor page is
recycled back to the page pool with page_pool_recycle_direct(), but
buf->page is left pointing at the recycled page, unlike every other
consumption site in the function which clears the pointer after handing
the page away.
With the stale pointer stmmac_rx_refill() skips the replacement
allocation and programs the already-recycled page back into the RX
descriptor.
Clear buf->page on the napi_build_skb() failure path to keep the buffer
lifecycle consistent with the other consumption sites.
📍 영향받는 시스템
stmmac 드라이버를 사용하는 Linux 커널 기반 시스템
⚔️ 공격 벡터
특정 네트워크 패킷 상황을 유도하여 skb 빌드 실패를 일으킴으로써 메모리 관리 오류 유발
🛡️ 대응 방법
stmmac 드라이버의 napi_build_skb() 실패 경로에 buf->page를 초기화하는 패치가 적용된 최신 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이상인지 확인