🔍 CVE-2026-31691

5.5
CVSS Score
MEDIUM
2026-04-27
2026-11-06 16:18
✅ 완료

🇰🇷 한글 설명

Linux 커널 igb 드라이버에서 AF_XDP 제로카피 애플리케이션이 비정상 종료(kill -9)될 때, igb_down()이 napi_synchronize()에서 무한 대기하여 TX 워치독이 발생하고 TX 큐가 영구적으로 멈추는 문제가 수정되었습니다. 해당 napi_synchronize() 호출을 제거하고 napi_disable() 순서를 조정했습니다.

💡 쉬운 설명

고속 네트워크 기능을 쓰는 프로그램이 강제로 꺼지면 네트워크 카드가 멈춰 송신이 끊길 수 있습니다. 이 수정으로 카드가 정상적으로 꺼지고 멈춤 현상이 해결됩니다.

🇺🇸 원문 (English)

In the Linux kernel, the following vulnerability has been resolved: igb: remove napi_synchronize() in igb_down() When an AF_XDP zero-copy application terminates abruptly (e.g., kill -9), the XSK buffer pool is destroyed but NAPI polling continues. igb_clean_rx_irq_zc() repeatedly returns the full budget, preventing napi_complete_done() from clearing NAPI_STATE_SCHED. igb_down() calls napi_synchronize() before napi_disable() for each queue vector. napi_synchronize() spins waiting for NAPI_STATE_SCHED to clear, which never happens. igb_down() blocks indefinitely, the TX watchdog fires, and the TX queue remains permanently stalled. napi_disable() already handles this correctly: it sets NAPI_STATE_DISABLE. After a full-budget poll, __napi_poll() checks napi_disable_pending(). If set, it forces completion and clears NAPI_STATE_SCHED, breaking the loop that napi_synchronize() cannot. napi_synchronize() was added in commit 41f149a285da ("igb: Fix possible panic caused by Rx traffic arrival while interface is down"). napi_disable() provides stronger guarantees: it prevents further scheduling and waits for any active poll to exit. Other Intel drivers (ixgbe, ice, i40e) use napi_disable() without a preceding napi_synchronize() in their down paths. Remove redundant napi_synchronize() call and reorder napi_disable() before igb_set_queue_napi() so the queue-to-NAPI mapping is only cleared after polling has fully stopped.

📍 영향받는 시스템

igb 네트워크 드라이버를 사용하고 AF_XDP 제로카피 기능을 쓰는 수정 전 Linux 커널 버전

⚔️ 공격 벡터

로컬 사용자가 AF_XDP 애플리케이션을 강제 종료하여 네트워크 송신 큐를 중단시키는 서비스 거부(DoS) 상황

🛡️ 대응 방법

패치된 Linux 커널 버전으로 업데이트하거나 배포판의 보안 업데이트를 적용하세요.

🔧 검증 코드

커널 버전을 확인해 배포판 보안 공지에 나온 패치 버전 이상인지 비교하고, igb 모듈이 로드되어 있지 않다면 이 취약점의 영향을 받지 않습니다.

Shell / Script
uname -r && (lsmod | grep -w igb || echo 'igb 모듈 미로드')

📊 CVSS Vector String

CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

💻 영향받는 소프트웨어

Linux Kernel