🇰🇷 한글 설명
Linux 커널의 nvme-pci 드라이버에서 프로브(probe) 실패 시 디스크립터 DMA 풀을 해제하지 않아 발생하는 메모리 누수 취약점입니다. 관리자 태그 세트가 할당된 후 오류가 발생하면 dma_pool 객체가 적절히 파괴되지 않고 남게 됩니다.
💡 쉬운 설명
컴퓨터 부품을 인식하는 과정에서 오류가 발생했을 때, 사용했던 메모리를 제대로 돌려주지 않고 계속 붙잡고 있는 문제입니다. 이 문제가 반복되면 시스템의 메모리가 점차 부족해질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
nvme-pci: release descriptor pools on probe failure
The per-NUMA-node descriptor DMA pools are created lazily from
nvme_init_hctx_common() once the admin tag set is allocated, but they are
only destroyed in nvme_remove() via nvme_release_descriptor_pools(). Any
probe failure after the admin tag set has been allocated unwinds through
the out_disable label and nvme_pci_free_ctrl(), neither of which releases
the pools, leaking the dma_pool objects.
Release the descriptor pools in the out_disable error path. It must not
be added to nvme_pci_free_ctrl(), as that would double-free against
nvme_remove() on the normal teardown path.
📍 영향받는 시스템
Linux kernel (nvme-pci driver)
⚔️ 공격 벡터
로컬 공격자가 특정 조건에서 NVMe 장치의 프로브 실패를 유도하여 메모리 누수를 발생시킬 수 있음
🛡️ 대응 방법
커널 패치를 적용하여 프로브 실패 경로(out_disable)에서 디스크립터 풀을 해제하도록 업데이트
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 해결된 패치 버전인지 확인