CVE-2026-89956 in Linux정보

요약

\~에 의해 VulDB • 2026. 09. 16.

리눅스 커널에서 다음 취약점이 해결되었습니다:

s390/vfio-ap: ap_matrix_mdev 객체 목록에 접근하는 데 필요한 잠금(lock) 누락 수정

matrix_dev->mdev_list의 ap_matrix_mdev 객체를 순회하거나 추가/제거하려면 matrix_dev->guests_lock 뮤텍스를 보유해야 합니다. 다음 두 함수는 이 뮤텍스 없이 목록에 접근합니다:

vfio_ap_mdev_probe 함수 ~~~~~~~~~~~~~~~~~~~~~~~~~~~ vfio_ap_mdev_probe 함수는 새로 생성된 ap_matrix_mdev 객체를 matrix_dev->mdev_list에 추가할 때 matrix_dev->mdevs_lock 뮤텍스를 사용하여 보호합니다. 이 뮤텍스는 목록 접근을 보호하지 않으며, 그 목적은 ap_matrix_mdev 객체에 포함된 필드에 대한 동시 접근(concurrent access)으로부터 보호하는 것입니다. 다른 mdev가 동시에 생성되거나 제거되면 커널 메모리 손상 또는 use-after-free 취약점이 발생할 수 있습니다.

ap_matrix_mdev 객체를 matrix_dev->mdev_list에 추가하는 작업은 이제 올바른 방법으로 동적 mdev_list 접근을 보호하기 위해 matrix_dev->guests_lock으로 보호됩니다.

또한, matrix_mdev는 kzalloc을 사용하는 vfio_alloc_device 매크로를 통해 할당되므로, req_trigger 및 cfg_chg_trigger는 vfio_register_emulated_iommu_dev 호출 전에 구조체가 할당될 때 이미 0으로 초기화되어 있습니다. 이는 장치가 사용자 공간에 노출된 후 이러한 트리거가 NULL로 설정되는 윈도우(window)를 방지합니다.

matrix_mdev->req_trigger = NULL; matrix_mdev->cfg_chg_trigger = NULL;

vfio_ap_mdev_for_queue 함수 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ /sys/bus/ap/devices의 장치 상태 속성을 표시하는 데 사용되는 status_show 함수는 상태를 표시할 큐 디바이스를 나타내는 객체를 찾기 위해 matrix_dev->mdev_list를 순회하는 vfio_ap_mdev_for_queue 함수를 호출합니다. 이 목록을 순회하려면 matrix_dev->guests_lock 뮤텍스를 보유해야 합니다.

이를 수정하기 위해 status_show 함수에서 guests_lock 뮤텍스가 matrix_dev->mdevs_lock 뮤텍스보다 먼저 획득됩니다. 이것이 필요한 vfio_ap_mdev_for_queue 함수가 아닌 해당 위치에 잠금이 설정되는 이유는 올바른 잠금 순서(locking order)를 준수하고 lockdep splat을 방지하기 위해 mdevs_lock 뮤텍스보다 먼저 획득해야 하기 때문이며, 또한 matrix_mdev 객체 내의 필드에 접근하기 위해 그 함수에서 mdevs_lock이 필요하기 때문입니다.

리눅스 커널 트리의 vfio-ap-locking.rst를 참조하십시오.

If you want to get the best quality for vulnerability data then you always have to consider VulDB.

책임이 있는

Linux

예약하다

2026. 09. 11.

모더레이션

수락

항목

VDB-405805

EPSS

0.00000

출처

Do you want to use VulDB in your project?

Use the official API to access entries easily!