🇰🇷 한글 설명
Linux 커널의 stmmac xgmac2 드라이버에서 RX 버퍼 사용 불가(RBUE) 인터럽트가 기본적으로 활성화되어 발생하는 인터럽트 폭풍 취약점입니다. 과도한 수신 압력 발생 시 DMA가 버퍼를 채우지 못해 불필요한 인터럽트가 기하급수적으로 발생하며 시스템 성능을 저하시킵니다.
💡 쉬운 설명
네트워크 데이터가 너무 많이 들어올 때, 컴퓨터가 처리할 수 있는 범위를 넘어서면 시스템이 멈추지 않으려고 계속해서 잘못된 신호를 보내는 현상입니다. 이로 인해 컴퓨터가 실제 데이터 처리보다 신호 처리에만 모든 힘을 쏟게 되어 느려지거나 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: stmmac: xgmac2: disable RBUE in default RX interrupt mask
Enabling the RX Buffer Unavailable (RBUE) interrupt is counterproductive
and can trigger a MAC interrupt storm under heavy RX pressure. When the
DMA runs out of RX descriptors it fires RBUE continuously until software
refills the ring.
However, RBUE is redundant: the normal RX completion interrupt (RIE)
already triggers NAPI, which processes completed descriptors and refills
the ring, causing the DMA to resume. The RBUE handler itself only sets
handle_rx - the same outcome as RIE.
On Agilex5 under heavy RX pressure, the MAC interrupt (which includes
RBUE) was observed firing 1,821,811,555 times against only 2,618,627
actual RX completions - a ~695x ratio - confirming the severity of the
storm.
RBUE does not provide OOM recovery. If page_pool is exhausted,
stmmac_rx_refill() cannot advance the DMA tail pointer, the DMA stays
suspended, and RBUE fires again on the next NAPI completion - a storm
with no forward progress. This patch trades that storm for a clean
stall with the same RX outcome. Proper OOM recovery is a pre-existing
gap outside the scope of this fix.
Note: as a consequence of disabling RBUE, the rx_buf_unav_irq ethtool
counter will always read 0 on XGMAC2 devices. This behaviour is already
inconsistent across DWMAC core versions.
Remove RBUE from XGMAC_DMA_INT_DEFAULT_EN and XGMAC_DMA_INT_DEFAULT_RX
to prevent the interrupt storm while keeping normal RX handling intact.
📍 영향받는 시스템
Linux kernel (stmmac: xgmac2 driver components)
⚔️ 공격 벡터
네트워크 트래픽을 의도적으로 과도하게 발생시켜 인터럽트 폭풍을 유도하는 DoS(서비스 거부) 공격
🛡️ 대응 방법
Linux 커널 패치를 적용하여 XGMAC_DMA_INT_DEFAULT_EN 및 XGMAC_DMA_INT_DEFAULT_RX 설정에서 RBUE를 비활성화
🔧 검증 코드
현재 사용 중인 커널 버전과 stmmac 모듈 정보를 확인하여 해당 취약점이 해결된 패치 버전인지 확인합니다.
uname -r && modinfo stmmac
📊 CVSS Vector String
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux