CVE-2026-64476 in Linux
요약
\~에 의해 VulDB • 2026. 07. 27.
리눅스 커널에서 다음 취약점이 해결되었습니다:
vfio/pci: disable_idle_d3를 장치별로 래치(latch)함
disable_idle_d3가 vfio-pci에 도입되었을 때, 이는 pci_set_power_state()를 사용하여 직접적으로 장치의 전원 상태를 조작했습니다. 유지해야 할 참조 카운트(refcounts)나 균형 잡힌 연산이 없었기 때문에, 장치를 무조건 D0 상태로 전환하고 조건부로 D3hot 상태로 이동할 수 있었습니다. 따라서 모듈 파라미터가 쓰기 가능하게 설정되었습니다.
후에 c61302aa48f7("vfio/pci: Move module parameters to vfio_pci.c") 커밋에서, vfio-pci-core 분리의 일환으로 모듈 파라미터의 쓰기 가능한 특성이 무효화되었습니다. sysfs를 통해 파라미터 값을 변경할 수는 있었지만, vfio-pci 드라이버는 모듈 초기화 시 해당 값들을 vfio-pci-core 전역 변수에 래치했습니다. 기본값이 아닌 다른 값이나 서로 다른 값으로 vfio-pci 모듈을 로드하거나 언로드하고 다시 로드하면, 이미 vfio-pci 변형 드라이버에 바인딩된 기존 장치들과 관련하여 전역 변수가 변경될 수 있습니다.
7ab5e10eda02("vfio/pci: Move the unused device into low power state with runtime PM") 커밋에서 런타임 전원 관리(Runtime PM)가 도입되었으며, 이는 전원 상태가 참조 카운팅(refcounted)되기 시작한 시점을 나타냅니다. PM get 및 put 연산은 균형이 맞춰져야 하지만, 위에서 언급한 동일한 모듈 연산들이 이미 vfio-pci 변형 드라이버에 바인딩된 장치들과 관련하여 전역 변수를 변경할 수 있습니다. 이로 인해 PM 연산의 불균형을 초래하는 시간적 창(window)이 발생합니다.
안정적인 백포트(backports)를 위해 좁은 범위 내에서 이를 해결하기 위해, disable_idle_d3 플래그는 초기화 시점에 vfio_pci_core_device에 래치되어 장치가 항상 일관된 값으로 작동하도록 합니다.
참고: vfio_pci_dev_set_try_reset()는 이제 bus reset 주변에서 런타임 PM 사용 카운트를 무조건 증가시킵니다. 이는 disable_idle_d3가 전역 플래그가 아닌 장치별 플래그로 변경되었기 때문입니다. 이 플래그가 설정되어 있을 때, 추가적인 get/put 쌍은 해롭지 않으며 공유 vfio_pci_dev_set_pm_runtime_get() 헬퍼의 계속된 사용을 허용합니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.