🇰🇷 한글 설명
Linux 커널의 mmc: sunplus 드라이버에서 mmc_add_host() 함수의 반환값을 확인하지 않던 문제가 해결되었습니다. 해당 함수가 실패해도 무시되어 메모리 누수와 등록되지 않은 장치 제거 시 널 포인터 역참조가 발생할 수 있었습니다. 이에 반환값 검사를 추가하고 spmmc_drv_probe()의 오류 처리 경로를 정리했습니다.
💡 쉬운 설명
Sunplus 기반 SD/eMMC 저장장치 드라이버가 장치 등록 실패를 제대로 확인하지 않아 메모리가 새고 시스템이 비정상 종료될 수 있었습니다. 이번 패치로 등록 실패 시 정상적으로 오류를 처리하도록 수정되었습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
mmc: sunplus: fix return value check of mmc_add_host()
mmc_add_host() may return error, if we ignore its return value,
1. the memory allocated in mmc_alloc_host() will be leaked
2. null-ptr-deref will happen when calling mmc_remove_host()
in remove function spmmc_drv_remove() because deleting not
added device.
Fix this by checking the return value of mmc_add_host(). Moreover,
I fixed the error handling path of spmmc_drv_probe() to clean up.
📍 영향받는 시스템
Sunplus SoC 기반 MMC/SD 컨트롤러를 사용하는 Linux 커널 (수정 이전 버전, Sunplus 드라이버 포함 빌드)
⚔️ 공격 벡터
직접적인 원격 공격 경로는 확인되지 않으며, 장치 등록 실패 상황에서 발생하는 안정성(메모리 누수, 널 포인터 역참조) 결함입니다.
🛡️ 대응 방법
커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하거나 벤더 배포 패치를 적용하세요.
🔧 검증 코드
커널 버전이 패치 포함 버전 이상인지 확인하고, 소스가 있다면 mmc_add_host 반환값이 검사되는지(if (ret) 형태) 코드에서 확인합니다; 출력이 없으면 Sunplus 드라이버가 해당 시스템에 없는 것입니다.
uname -r && grep -rn 'mmc_add_host' /usr/src/linux/drivers/mmc/host/sunplus* 2>/dev/null | head -5