🇰🇷 한글 설명
Linux 커널의 rocker 드라이버에서 rocker_world_port_post_fini() 함수 호출 시 메모리 누수가 발생하는 취약점입니다. 특정 콜백 함수가 설정되지 않은 경우 포트 제거 시 할당된 메모리가 해제되지 않아 시스템 자원이 소모됩니다.
💡 쉬운 설명
네트워크 장치를 제거할 때 사용했던 메모리를 컴퓨터가 제대로 돌려받지 못하는 문제입니다. 이 현상이 반복되면 컴퓨터의 메모리가 점점 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
rocker: fix memory leak in rocker_world_port_post_fini()
In rocker_world_port_pre_init(), rocker_port->wpriv is allocated with
kzalloc(wops->port_priv_size, GFP_KERNEL). However, in
rocker_world_port_post_fini(), the memory is only freed when
wops->port_post_fini callback is set:
if (!wops->port_post_fini)
return;
wops->port_post_fini(rocker_port);
kfree(rocker_port->wpriv);
Since rocker_ofdpa_ops does not implement port_post_fini callback
(it is NULL), the wpriv memory allocated for each port is never freed
when ports are removed. This leads to a memory leak of
sizeof(struct ofdpa_port) bytes per port on every device removal.
Fix this by always calling kfree(rocker_port->wpriv) regardless of
whether the port_post_fini callback exists.
📍 영향받는 시스템
Linux kernel (rocker driver 사용 환경)
⚔️ 공격 벡터
장치 제거를 반복적으로 유도하여 시스템 메모리 고갈 유도 (Local/Denial of Service)
🛡️ 대응 방법
Linux 커널을 최신 패치가 적용된 버전으로 업데이트하십시오.
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 패치 버전 이후인지 확인하십시오.