🇰🇷 한글 설명
Linux 커널의 ibm emac 드라이버 내 mal_remove() 함수에서 시스템이 멈추는 취약점이 발견되었습니다. NAPI가 이미 비활성화된 상태에서 napi_disable()을 호출할 경우 커널이 무한 루프에 빠져 시스템이 응답하지 않게 됩니다.
💡 쉬운 설명
특정 네트워크 장치 드라이버를 제거할 때, 이미 꺼져 있는 기능을 다시 끄려고 시도하면서 컴퓨터가 완전히 멈춰버리는 문제입니다. 이로 인해 시스템이 재부팅이 안 되거나 먹통이 될 수 있습니다.
🇺🇸 원문 (English)
In the Linux kernel, the following vulnerability has been resolved:
net: ibm: emac: mal: fix potential system hang in mal_remove()
napi_disable() is not idempotent and calling it on an already-disabled
or unenabled NAPI context will cause the kernel to spin indefinitely
waiting for the NAPI_STATE_SCHED bit to clear.
In mal_remove(), napi_disable() is called unconditionally. If no MACs were
registered, NAPI was never enabled. Also, if they were registered but
subsequently unregistered, NAPI was already disabled in
mal_unregister_commac(). In either case, calling napi_disable() causes
the kernel to hang upon module removal.
Fix this by only calling napi_disable() in mal_remove() if the commac list
is not empty (which implies NAPI is enabled).
📍 영향받는 시스템
Linux kernel (ibm emac driver module)
⚔️ 공격 벡터
로컬 권한을 가진 사용자가 관련 커널 모듈을 제거(unload)할 때 발생
🛡️ 대응 방법
커널 패치를 적용하여 mal_remove() 함수가 commac 리스트가 비어있지 않을 때만 napi_disable()을 호출하도록 수정
🔧 검증 코드
현재 실행 중인 커널 버전을 확인하여 해당 취약점이 수정된 패치 버전인지 확인
💻 영향받는 소프트웨어
NVIDIA Cloud Gaming Guest Driver for Linux