🇰🇷 한글 설명
Linux 커널의 storvsc 드라이버에서 Confidential VM 사용 시 swiotlb 바운스 버퍼 메모리 누수가 발생하는 취약점입니다. I/O 제출 실패 시 할당된 버퍼를 해제하지 않아, 지속적인 I/O 부하 상황에서 메모리가 고갈되어 결국 I/O 작업이 불가능해질 수 있습니다.
💡 쉬운 설명
데이터를 주고받기 위해 임시로 빌려 쓰는 메모리 공간을 사용 후 제대로 돌려주지 않는 버그입니다. 이 현상이 반복되면 컴퓨터의 메모리가 가득 차서 더 이상 데이터를 읽거나 쓸 수 없게 됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
scsi: storvsc: Fix swiotlb bounce buffer leak in confidential VM
storvsc_queuecommand() maps the scatter/gather list using scsi_dma_map(),
which in a confidential VM allocates swiotlb bounce buffers. If the I/O
submission fails in storvsc_do_io(), the I/O is typically retried by higher
level code, but the bounce buffer memory is never freed. The mostly like
cause of I/O submission failure is a full VMBus channel ring buffer, which
is not uncommon under high I/O loads. Eventually enough bounce buffer
memory leaks that the confidential VM can't do any I/O. The same problem
can arise in a non-confidential VM with kernel boot parameter
swiotlb=force.
Fix this by doing scsi_dma_unmap() in the case of an I/O submission
error, which frees the bounce buffer memory.
📍 영향받는 시스템
Linux kernel (storvsc driver, Confidential VM or swiotlb=force enabled)
⚔️ 공격 벡터
직접적인 공격보다는 높은 I/O 부하를 유발하여 시스템 자원을 고갈시키는 DoS(서비스 거부) 형태로 발생 가능
🛡️ 대응 방법
I/O 제출 오류 발생 시 scsi_dma_unmap()를 호출하여 메모리를 해제하도록 수정된 최신 Linux 커널로 업데이트
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 패치된 버전인지 배포판 보안 권고문을 통해 확인