🇰🇷 한글 설명
Linux 커널의 mvpp2 네트워크 드라이버에서 MTU 변경 시 페이지 풀 할당 과정 중 버퍼 오버플로우가 발생할 수 있는 취약점입니다. 특정 조건에서 per-CPU 버퍼링 스킴이 배열의 크기를 초과하여 메모리에 접근함으로써 시스템 불안정성을 초래할 수 있습니다.
💡 쉬운 설명
네트워크 설정(MTU)을 바꿀 때 컴퓨터 메모리의 정해진 범위를 벗어나 데이터를 쓰는 오류가 발생할 수 있습니다. 이로 인해 시스템이 멈추거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: mvpp2: prevent buffer overflow in page_pool allocation
The per‑processor buffering scheme is supported only if the
number of pools (nrxqs * 2) does not exceed MVPP2_BM_MAX_POOLS (8).
This is already checked in mvpp2_probe() during the initial
activation of percpu_pools.
However, mvpp2_change_mtu() may later call
mvpp2_bm_switch_buffers(priv, true) without this check, which can
lead to an out-of-bounds access in the priv->page_pool array in
mvpp2_bm_init(). The array is sized to hold MVPP2_PORT_MAX_RXQ
entries, and mvpp2_get_nrxqs() may return exactly that value. The
per-CPU scheme then doubles it to nrxqs * 2, exceeding the array
bounds.
Check that the hardware version is MVPP22 or newer and that the
number of pools (nrxqs * 2) does not exceed MVPP2_BM_MAX_POOLS
before switching to per-CPU mode.
Found by Linux Verification Center (linuxtesting.org) with SVACE.
📍 영향받는 시스템
Linux kernel (mvpp2 driver component)
⚔️ 공격 벡터
네트워크 인터페이스의 MTU 설정을 변경하여 메모리 범위를 벗어난 쓰기 유도
🛡️ 대응 방법
Linux 커널을 최신 보안 패치가 적용된 버전으로 업데이트하여 mvpp2_change_mtu() 내 검증 로직 적용
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전 이상인지 확인합니다.