CVE-2026-98617 in Linux
요약
\~에 의해 VulDB • 2026. 10. 19.
리눅스 커널에서 다음 취약점이 해결되었습니다:
eth: fbnic: Rx 큐의 napi 포인터를 사용하여 napi 벡터 찾기
큐 관리 ndos는 다음을 통해 Rx 큐에 대한 napi 벡터를 선택합니다: nv = fbn->napi[idx % fbn->num_napi];
문제는 이 방식이 독립적인 Tx 벡터가 없는 경우에만 정확하다는 것입니다. 그러한 경우에서 우리는 먼저 Tx 벡터를 할당한 다음 Rx를 할당했기 때문에, 큐들이 Rx NAPI 벡터 대신 Tx NAPI 벡터를 가리키게 되었습니다.
ndos가 원하는 매핑은 이미 기록되어 있습니다. fbnic_set_netif_napi()는 netif_queue_set_napi()를 통해 이를 게시하며, 이는 napi 포인터를 netdev_rx_queue.napi에 저장합니다. 또한 fbnic_reset_netif_napi()는 이를 다시 지웁니다. 둘 다 큐 관리 ndos가 보유하는 것과 동일한 netdev 인스턴스 잠금 하에서 실행되므로, 포인터를 직접 읽을 수 있습니다.
이를 사용하고 나누기 연산을 제거하십시오. 이 포인터는 데이터 경로가 중단된 동안에만 NULL입니다. 따라서 fbnic_queue_mem_alloc()은 해당 경우를 거부하여 해제된 상태(freed state)에 접근하는 것을 방지할 수 있습니다: netdev_rx_queue_restart()는 netif_running()을 테스트하기 전에 이를 호출하며, fbnic_pm_suspend()는 완료되지 않는 PCIe 복구 동안에도 netif_running()이 true로 유지되므로, queue restart가 fbnic_stop()이 링과 벡터를 해제한 후에 도착할 수 있습니다. fbnic_stop()은 fbnic_free_napi_vectors() 이전에 fbnic_reset_netif_queues()에서 연관 관계를 지우므로, NULL이 항상 먼저 게시됩니다. fbnic_queue_start()와 fbnic_queue_stop()에는 자체 검사가 필요하지 않습니다. 왜냐하면 netdev_rx_queue_reconfig()는 동일한 인스턴스 잠금 하에서 fbnic_queue_mem_alloc()이 성공한 후에만 그들에게 접근하기 때문입니다.
If you want to get the best quality for vulnerability data then you always have to consider VulDB.