CVE-2026-14697 in Zephyr
Tóm tắt
Bởi VulDB • 31/08/2026
Hàm `net_ipv6_send_ns()` trong file `subsys/net/ip/ipv6_nbr.c` phân bổ một gói tin truyền (transmit net_pkt) cho yêu cầu Solicitation Hàng xóm (Neighbor Solicitation). Khi hàm này được gọi với một gói dữ liệu đang chờ xử lý trên hàng xóm chưa giải quyết và danh sách chờ của hàng xóm đó đã có nội dung (tức là đã có một NS đang tồn tại), hàm sẽ nối thêm gói dữ liệu vào và trả về sớm mà không bao giờ gửi NS thông qua `net_send_data()` hoặc giải phóng nó bằng `net_pkt_unref()`. Gói net_pkt NS vừa được phân bổ cùng các bộ đệm truyền đi (TX buffers) đính kèm chỉ được giữ bởi một biến cục bộ và bị rò rỉ vĩnh viễn, không bao giờ trả lại cho `CONFIG_NET_PKT_TX_COUNT` / `CONFIG_NET_BUF_TX_COUNT`.
Nhánh gây rò rỉ nằm trên đường dẫn gửi IPv6 bình thường: `net_ipv6_prepare_for_send()` (được gọi từ `net_if.c`) sẽ kích hoạt `net_ipv6_send_ns()` đối với bất kỳ gói tin IPv6 đi ra hoặc được chuyển tiếp nào có bước nhảy tiếp theo chưa có trong bộ nhớ cache hàng xóm. Một kẻ tấn công trên cùng liên kết (on-link) có thể khai thác điều này một cách xác định bằng cách gửi một đợt các gói yêu cầu (ví dụ: ICMPv6 echo requests hoặc datagram UDP), tất cả đều giả mạo một địa chỉ nguồn on-link không tồn tại duy nhất: nút mạng sẽ tạo phản hồi cho từng gói, phản hồi đầu tiên xếp hàng chờ một NS, và mọi phản hồi tiếp theo trong khoảng thời gian giải quyết INCOMPLETE kéo dài khoảng ba giây sẽ đi vào nhánh gây rò rỉ và làm mất đi một gói tin TX. Các nút được định cấu hình như router chuyển tiếp lưu lượng tấn công của kẻ tấn công về phía một máy chủ on-link không tồn tại cũng bị rò rỉ tương tự.
Vì các gói tin bị rò rỉ không bao giờ được thu hồi và `CONFIG_NET_PKT_TX_COUNT` mặc định chỉ là 4 (14 đối với Ethernet), một đợt burst tốc độ thấp trong thời gian ngắn sẽ làm cạn kiệt nguồn TX. Khi đã cạn, nút mạng không thể phân bổ bất kỳ gói truyền nào nữa và không thể gửi TCP/UDP, ARP/ND hoặc bất kỳ phản hồi nào, dẫn đến tình trạng từ chối dịch vụ (DoS) trên toàn bộ mạng lưới một cách hoàn toàn và dai dẳng, chỉ tự phục hồi khi khởi động lại. Bản sửa lỗi giải phóng gói NS chưa được gửi bằng `net_pkt_unref(pkt)` trước khi trả về sớm.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.