🇰🇷 한글 설명
리눅스 커널의 page_pool 구성 요소에서 발생한 Use-After-Free 취약점입니다. CONFIG_PAGE_POOL_STATS 옵션이 활성화된 경우, 통계 업데이트 과정에서 잠금(lock) 해제 후 메모리가 해제되어 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 메모리를 정리하는 과정에서 순서가 잘못되어, 이미 삭제된 메모리 영역에 접근하려고 시도하는 오류입니다. 이로 인해 시스템이 불안정해지거나 보안 문제가 생길 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: page_pool: fix use-after-free in page_pool_recycle_ring_bulk()
With CONFIG_PAGE_POOL_STATS=y, page_pool_recycle_ring_bulk() updates
the recycle stats after dropping the producer lock. If it just recycled
the last inflight netmems of a pool being destroyed, page_pool_release()
can pass its producer-lock barrier and free the pool before
recycle_stat_add() runs.
Commit fcc680a647ba7 ("page_pool: allow mixing PPs within one bulk")
moved this stat update after the unlock. Commit 271683bb2cf32
("page_pool: Fix use-after-free in page_pool_recycle_in_ring") later
added the barrier, but only fixed page_pool_recycle_in_ring(). Move
the update back under the lock.
📍 영향받는 시스템
CONFIG_PAGE_POOL_STATS 옵션이 활성화된 리눅스 커널
⚔️ 공격 벡터
특정 네트워크 메모리 풀(page_pool)을 조작하여 메모리 해제 후 접근(Use-After-Free) 유도
🛡️ 대응 방법
커널 패치(commit 271683bb2cf32 관련 수정 사항 포함)를 적용하여 통계 업데이트를 잠금 범위 내로 이동
🔧 검증 코드
결과에 CONFIG_PAGE_POOL_STATS=y가 포함되어 있다면 해당 취약점에 노출될 가능성이 있는 설정입니다.
uname -r && zgrep CONFIG_PAGE_POOL_STATS /proc/config.gz 2>/dev/null || grep CONFIG_PAGE_POOL_STATS /boot/config-$(uname -r)