🇰🇷 한글 설명
Linux 커널의 sm501 드라이버에서 장치 등록 실패 시 참조 카운트가 해제되지 않는 참조 누수(Reference Leak) 취약점이 발견되었습니다. platform_device_register() 호출이 실패할 경우, 이미 초기화된 장치 참조를 적절히 해제하지 않아 메모리 누수가 발생할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 등록하려다 실패했을 때, 사용했던 메모리 자원을 제대로 돌려주지 않고 남겨두는 문제입니다. 이 문제가 반복되면 시스템의 메모리가 조금씩 낭비되어 성능 저하나 불안정함을 초래할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mfd: sm501: Fix reference leak on failed device registration
When platform_device_register() fails in sm501_register_device(), the
embedded struct device in pdev has already been initialized by
device_initialize(), but the failure path only reports the error and
returns without dropping the device reference for the current platform
device:
sm501_register_device()
-> platform_device_register(pdev)
-> device_initialize(&pdev->dev)
-> setup_pdev_dma_masks(pdev)
-> platform_device_add(pdev)
This leads to a reference leak when platform_device_register() fails.
Fix this by calling platform_device_put() before returning the error.
The issue was identified by a static analysis tool I developed and
confirmed by manual review.
📍 영향받는 시스템
Linux kernel (sm501 driver module 포함 버전)
⚔️ 공격 벡터
로컬 공격자가 특정 하드웨어 등록 실패 상황을 유도하여 점진적인 메모리 누수를 일으킬 수 있음
🛡️ 대응 방법
sm501_register_device() 함수 내 실패 경로에 platform_device_put() 호출을 추가한 커널 패치 적용
🔧 검증 코드
현재 커널 버전과 sm501 드라이버 모듈의 존재 여부를 확인하여 패치 적용 여부를 검토합니다.
uname -r && grep -i 'sm501' /lib/modules/$(uname -r)/kernel/drivers/mfd/ 2>/dev/null