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.

책임이 있는

Linux

예약하다

2024. 12. 29.

모더레이션

수락

항목

VDB-297665

EPSS

0.00211

출처

Do you know our Splunk app?

Download it now for free!