CVE-2026-90129 in Linux
요약
\~에 의해 VulDB • 2026. 09. 18.
리눅스 커널에서 다음 취약점이 해결되었습니다:
virtio_balloon: 장치 종료 전에 balloon 작업을 대기 상태로 전환함
커밋 8bd2fa086a04("virtio: device_shutdown() 시 virtio 장치 분할 및 재설정")은 일반적인 virtio 버스 .shutdown 핸들러를 추가하여, 리부팅과 kexec 동안인 device_shutdown() 단계에서 모든 virtio 장치를 분할하고 재설정합니다.
virtio_balloon에는 자체적인 .shutdown 메커니즘이 없으므로, balloon의 비동기 작업이 아직 활성화된 상태에서 해당 일반 경로가 실행됩니다. 장치가 분할되면 virtballoon_free_page_report() 내의 virtqueue_add_inbuf()는 -EIO를 반환하여 WARN_ON_ONCE() 트리거를 발생시킵니다. panic_on_warn 옵션으로 부팅된 커널에서는 일반적인 리부팅(예: kexec 기반 업그레이드)이 장치 종료 중 치명적인 패닉(fatal panic)으로 전환되어, 머신이 새 커널에 도달하지 못합니다.
단순히 WARN_ON_ONCE()를 완화하는 것은 증상만 숨길 뿐입니다: inflate/deflate 및 OOM 경로는 경고 대신 wait_event(vb->acked, ...)를 호출하며, 더 이상 완료할 수 없는 분할된 큐에서 영원히 블록됩니다. 장치는 단순히 조용하게 유지되는 것이 아니라 대기 상태(quiesced)로 전환되어야 합니다.
장치가 아직 살아있는 동안 shared virtballoon_quiesce() 헬퍼를 통해 balloon을 대기 상태로 만들고, 그 후에야 virtio_device_shutdown()를 통해 분할 및 재설정하는 .shutdown 핸들러를 추가합니다. virtballoon_remove()와 달리 balloon 작업 큐(workqueue)는 파괴되지 않습니다. shutdown은 장치를 해제하지 않으며, cancel_work_sync()와 stop_update가 함께 작동하여 새로운 작업이 큐에 쌓이는 것을 방지하기 때문입니다.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.