🇰🇷 한글 설명
Linux 커널의 gve 드라이버에서 XSK 풀을 비활성화할 때 napi_disable/napi_enable의 잠금 없는 버전을 호출하여 교착상태(deadlock)가 발생하는 문제입니다. 해당 함수 호출 전에 이미 netdev 락이 획득되어 있어, 스레드가 자신이 보유한 락을 다시 획득하려 시도하게 됩니다. 이 문제는 실제 운영 환경에서 발견되었습니다.
💡 쉬운 설명
네트워크 카드 드라이버가 특정 기능을 끌 때 서로 기다리며 멈추는 버그입니다. 운영 환경에서 실제로 발견되었고, 커널 패치로 해결됩니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
gve: fix napi_disable deadlock when attempting to disable XSK pools
When disabling XSK pools, GVE calls the unlocked versions of
napi_disable and napi_enable. However, the netdev lock has already been
acquired before ndo_bpf is called because GVE supports queue management
ops. Calling the unlocked versions of napi_disable/enable results in a
deadlock when attempting to disable XSK pools, as the thread attempts to
re-acquire a lock it already holds.
Update the NAPI calls to use the locked versions.
This issue was found in production.
📍 영향받는 시스템
Google Compute Engine의 gve(Google Virtual Ethernet) 드라이버를 사용하는 Linux 커널 (패치 이전 버전, 정확한 범위는 커널 변경 이력 확인 필요)
⚔️ 공격 벡터
공격자가 원격에서 직접 악용하기보다는 XSK 풀 비활성화 작업이 수행될 때 발생하는 서비스 거부(교착상태) 결함으로, 로컬 권한 또는 해당 작업을 유발할 수 있는 조건이 필요합니다.
🛡️ 대응 방법
커널을 해당 수정이 포함된 최신 안정 버전으로 업데이트하고 재부팅합니다.
🔧 검증 코드
출력된 커널 버전을 배포판 보안 공지 또는 Linux 커널 git 로그에서 이 수정이 포함된 버전과 비교하여, 같거나 높으면 패치된 것으로 판단합니다.