🇰🇷 한글 설명
Linux 커널의 vsock/virtio 구성 요소에서 발생한 취약점으로, 장치 일시 중단 및 재개 과정에서 레이스 컨디션이 발생할 수 있습니다. 작업자(worker)가 잠금(lock)을 획득하기 전에 virtqueue를 읽음으로써, 이미 삭제된 큐의 포인터를 참조하여 메모리 오류를 유발할 수 있습니다.
💡 쉬운 설명
컴퓨터의 가상 통신 장치가 잠시 멈췄다가 다시 작동할 때, 시스템이 이미 사라진 통신 통로를 계속 사용하려고 시도하는 오류입니다. 이로 인해 시스템이 충돌하거나 예상치 못한 동작을 할 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
vsock/virtio: read virtqueues under worker locks
Commit bd50c5dc182b ("vsock/virtio: add support for device
suspend/resume") made the *_run flags transition from false to true when
restore installs replacement virtqueues. The RX, TX and event workers
read their virtqueue before locking and checking the corresponding flag,
so a worker delayed across freeze and restore can observe the replacement
queue's running state while retaining a pointer to the deleted queue.
Read each virtqueue under its mutex after checking the run flag, keeping
the pointer and state in the same queue generation.
📍 영향받는 시스템
Linux kernel (vsock/virtio 관련 모듈을 사용하는 시스템)
⚔️ 공격 벡터
가상화 환경에서 장치의 일시 중단(suspend)과 재개(resume)를 유도하여 레이스 컨디션을 발생시킴
🛡️ 대응 방법
커널 패치(commit bd50c5dc182b 이상)가 적용된 최신 버전의 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 해결된 패치 버전 이후인지 확인