🇰🇷 한글 설명
Linux 커널의 ice 드라이버에서 PF VSI가 아닌 CTRL VSI 타입에 대해 tstamp_ring이 잘못 할당되는 취약점이 발견되었습니다. PCI 리셋이 발생할 때마다 적절히 해제되지 않는 메모리 누수가 발생하여 시스템 자원을 소모할 수 있습니다.
💡 쉬운 설명
컴퓨터 부품을 다시 설정하는 과정에서 시스템이 사용하지 않는 메모리를 계속 붙잡고 놓아주지 않는 오류가 있습니다. 이 문제가 반복되면 컴퓨터의 메모리가 조금씩 줄어들어 성능이 떨어질 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
ice: prevent tstamp ring allocation for non-PF VSI types
The pf->txtime_txqs bitmap tracks which Tx queues have ETF (Earliest
TxTime First) offload enabled. This bitmap is indexed by queue number
and is set by ice_offload_txtime(), which only operates on PF VSI
queues.
However, ice_is_txtime_ena() does not check the VSI type before
consulting the bitmap. When ETF offload is enabled on PF Tx queue 0,
bit 0 is set in pf->txtime_txqs. During a subsequent PCI reset
rebuild, the CTRL VSI's Tx queue 0 is reconfigured and
ice_is_txtime_ena() is called for that ring. Since it only checks
pf->txtime_txqs by queue index without distinguishing VSI type, it
finds bit 0 set and returns true, matching the PF VSI's ETF queue,
not the CTRL VSI's. This causes ice_vsi_cfg_txq() to spuriously
allocate a tstamp_ring for the CTRL VSI ring.
Since CTRL VSI rings have no associated netdev, ice_clean_tx_ring()
takes an early return at the !netdev check before reaching
ice_free_tx_tstamp_ring(), leaking the allocation. Each PCI reset
leaks one 64-byte tstamp_ring.
Fix this by restricting ice_is_txtime_ena() to return true only for
PF VSI rings, since txtime_txqs is only meaningful for PF VSI queues.
📍 영향받는 시스템
Linux kernel (ice driver 사용 환경)
⚔️ 공격 벡터
로컬 공격자가 PCI 리셋을 유도하여 반복적인 메모리 누수 발생 가능
🛡️ 대응 방법
ice_is_txtime_ena() 함수가 PF VSI 링에 대해서만 true를 반환하도록 커널 패치 적용
🔧 검증 코드
출력된 커널 버전이 해당 취약점이 수정된 최신 패치 버전인지 확인
💻 영향받는 소프트웨어
NVIDIA vGPU Guest Driver for Linux