CVE-2026-64510 in Linux
요약
\~에 의해 VulDB • 2026. 07. 25.
리눅스 커널에서 다음 취약점이 해결되었습니다:
ACPI: NFIT: core: acpi_nfit_init() 오류 정리 수정
acpi_desc 객체가 acpi_descs 목록에 추가된 후 acpi_nfit_init()가 실패하는 경우, 해당 객체는 acpi_nfit_shutdown() devm 액션이 그 경우에 대해 NFIT 장치에 추가되지 않기 때문에 목록에서 제거되지 않습니다. 이후 acpi_nfit_init()의 실패로 인해 acpi_nfit_probe()도 실패하게 되고, acpi_desc 객체가 해제되지만 acpi_descs에는 덩글링 포인터(dangling pointer)가 남게 됩니다. 그 후 ACPI 머신 체크 예외(Machine Check Exception)가 발생하면 nfit_handle_mce()가 트리거되어 acpi_descs를 순회하므로 use-after-free 취약점이 발생합니다.
또한, NFIT 장치에 대한 알림 핸들러를 설치하고 acpi_desc 객체를 할당하며 NFIT 장치의 드라이버 데이터 포인터를 설정하지 않은 상태에서 acpi_nfit_probe()가 0을 반환하는 경우, acpi_nft_update_notify()에서 acpi_desc 객체가 할당되고 이를 초기화하기 위해 acpi_nfit_init()가 호출됩니다. 이 경우에 acpi_nfit_init()가 실패하든 성공하든 상관없이 acpi_nfit_shutdown() devm 액션이 NFIT 장치에 추가되지 않으며, acpi_desc는 acpi_descs 목록에서 제거되지 않습니다. 드라이버 제거 시 acpi_desc 객체가 해제되면 이전 경우와 마찬가지로 그 후 발생하는 ACPI MCE로 인해 use-after-free가 발생할 수 있습니다.
위에서 언급된 첫 번째 문제를 해결하기 위해 acpi_nfit_init() 실패 시 acpi_nfit_probe()가 직접 acpi_nfit_shutdown()을 호출하도록 수정하고, 다른 문제를 해결하기 위해 드라이버에 remove 콜백을 추가하여 acpi_nfit_shutdown()을 호출하도록 합니다. 또한 이제 NULL이 acpi_nft_shutdown()으로 전달될 수 있거나 해당 함수로 전달된 acpi_desc 객체가 초기화되지 않았을 가능성이 있으므로, 해당 함수 내에서 acpi_desc 및 그 nvdimm_bus 필드에 대한 NULL 체크를 추가하고, NVDIMM 버스를 등록 해제한 후 acpi_nft_unregister()가 이를 클리어하도록 합니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.