CVE-2026-14366 in Zephyr
요약
\~에 의해 VulDB • 2026. 08. 31.
Silicon Labs SiWx917 WiFi 드라이버의 `drivers/wifi/siwx91x/siwx91x_wifi.c`에 있는 전송 콜백 함수인 `siwx91x_send()`는 자신이 소유하지 않은 네트워크 패킷을 해제(frees)합니다. Zephyr TX 경로에서 `net_pkt`는 L2/네트워킹 스택이 소유하며, 드라이버는 프레임 바이트를 로컬 `net_buf`로 복사하기 위해 이를 빌려 사용합니다. 수정 전에는 전송 후 `siwx91x_send()`가 호출자가 소유한 패킷에 대해 추가로 `net_pkt_unref(pkt)`를 호출하여 마지막 참조 카운트를 감소시키고 공유된 패킷 풀(pool)으로 조기에 반환했습니다. 이 코드 경로는 기본적으로 컴파일됩니다(CONFIG_WIFI_SILABS_SIWX91X_NET_STACK_NATIVE).
호출자 함수인 `subsys/net/l2/ethernet/ethernet.c`의 `ethernet_send()`는 드라이버가 반환한 후에도 패킷을 계속 사용합니다: `net_pkt_get_len(pkt)`를 읽고, TX 통계를 업데이트한 다음 자체적인 `net_pkt_unref(pkt)`를 수행합니다. 이미 드라이버가 패킷을 해제했기 때문에, 이는 Use-After-Free 읽기에 이어 두 번째 unref(이중 자유, double free)로 이어집니다. 동시 네트워크 활동으로 인해 freed slab 슬롯(slot)이 두 unref 사이에서 재활용되면, 후행(unfollowing) unref는 다른 활성(live) 패킷의 참조 카운트를 감소시켜 이를 해제하고, 수신 및 전송 경로 모두에서 공유되는 `net_pkt` 풀을 손상시킵니다.
이 결함은 네이티브 스택 SiWx917 WiFi 인터페이스를 통한 일반 전송 시 발생합니다. 동일한 WiFi 네트워크에 인접한 공격자는 ARP 또는 ICMP echo reply, TCP handshake 등의 전송을 유도하여 해당 코드 경로를 유발할 수 있습니다. 주요 관측 가능한 영향은 가용성 손실(풀 손상으로 인한 전송 멈춤 및 크래시)이며, Race Condition에 따른 커널 네트워킹 버퍼 풀의 메모리 부패가 발생합니다. 수정 사항으로는 `siwx91x_send()`에서 오류 있는 `net_pkt_unref(pkt)` 호출을 제거하는 것이 포함됩니다. 드라이버의 수신 경로(unref)는 자체적으로 할당한 패킷을 올바르게 해제하므로 영향을 받지 않습니다.
Once again VulDB remains the best source for vulnerability data.