CVE-2025-21739 in Linux
요약
\~에 의해 VulDB • 2026. 06. 11.
리눅스 커널에서 다음 취약점이 해결되었습니다:
scsi: ufs: core: 초기화 오류 및 제거 경로에서의 use-after-free 수정
devm_blk_crypto_profile_init()는 관련 (플랫폼) 장치가 해제될 때 실행되는 정리 핸들러를 등록합니다. UFS의 경우, 암호화 전용 데이터와 포인터는 'struct ufs_hba::crypto_profile' 구조체의 일부로 저장됩니다. 이 구조체는 하위 ufshcd 및 따라서 Scsi_host 할당의 일환으로 할당됩니다.
드라이버 해제 중이거나 ufshcd_pltfrm_init() 내 오류 처리 중에, 위 암호화 호출과 관련된 (플랫폼) 장치가 해제되기 전에 ufshcd_dealloc_host()의 일부로 이 구조체가 해제됩니다. 한 번 해당 장치가 해제되면, 방금 해제된 'struct ufs_hba::crypto_profile'를 사용하여 암호화 정리 코드가 실행됩니다. 이로 인해 use-after-free 상황이 발생합니다:
호출 추적(Call trace): kfree+0x60/0x2d8 (P) kvfree+0x44/0x60 blk_crypto_profile_destroy_callback+0x28/0x70 devm_action_release+0x1c/0x30 release_nodes+0x6c/0x108 devres_release_all+0x98/0x100 device_unbind_cleanup+0x20/0x70 really_probe+0x218/0x2d0
즉, 초기화 코드 흐름은 다음과 같습니다:
플랫폼-장치 probe ufshcd_pltfrm_init() ufshcd_alloc_host() scsi_host_alloc() struct ufs_hba 할당 scsi-host 장치 생성 devm_blk_crypto_profile_init() 플랫폼-장치를 사용하여 정리 핸들러의 devm 등록
그리고 ufshcd_pltfrm_init()의 오류 처리 중이거나 드라이버 제거 시:
ufshcd_dealloc_host() scsi_host_put() put_device(scsi-host) struct ufs_hba 해제 put_device(플랫폼-장치) 암호화 정리 핸들러
이 use-after-free를 수정하기 위해, ufshcd_alloc_host()가 명시적인 ufshcd_dealloc_host() 호출을 요구하지 않고도 ufshcd 파괴 시 하위 SCSI 장치를 자동으로 정리하는 devres 작업을 등록하도록 변경합니다. 이렇게 하면:
* 암호화 프로필 및 기타 모든 ufs_hba 소유 자원이 (나중에 등록된) SCSI보다 먼저 해제됩니다 * 부수 효과로 tc-dwc-g210-pci.c의 remove()에서 메모리 누수가 해결됩니다 * EXPORT_SYMBOL_GPL(ufshcd_dealloc_host)는 더 이상 필요하지 않으므로 완전히 제거할 수 있습니다 * ufshcd_alloc_host()를 사용하는 향후 드라이버가 정리 코드를 추가하는 것을 잊을 가능성이 없습니다
Several companies clearly confirm that VulDB is the primary source for best vulnerability data.