CVE-2026-16512
Təsvir
subsys/net/l2/ethernet/gptp/gptp.c faylındakı gptp_handle_msg() funksiyası, GPTP_HDR() tərəfindən qaytarılan gPTP başlığını dereference etmiş və qəbul edilən freymin ən azı sizeof(struct gptp_hdr) (34) bayt yük (payload) daşıyıb-daşımadığını yoxlamadan hdr->message_type üzrə keçid etmişdir. Başlıq giriş nöqtəsi olan gptp_get_hdr() qısa bufer üçün qəsdən heç vaxt uğursuzluqla nəticələnmir — o, pkt->frags->data dəyərini qaytarır və validasiyanı çağıranlara həvalə edir — buna görə də kəsilmiş freym, qəbul edilmiş məlumatlardan kənardakı yaddaşa işarə edən başlıq göstəricisi yaratmışdır. Sonrakı hər mesaj növü üzrə yoxlamalar bunu kompensasiya etmir: Ethernet başlığı çıxarıldıqdan sonra GPTP_VALID_LEN() len > 60 şərtinə endirilir ki, bu da hər bir sabit ölçülü gPTP mesajı üçün yanlışdır, beləliklə GPTP_CHECK_LEN() kəsilmiş SYNC, FOLLOWUP, PDELAY_RESP və ya SIGNALING mesajlarını heç vaxt rədd etmir. Bu qüsura eyni linkdəki autentifikasiya olunmamış qarşı tərəf, CONFIG_NET_GPTP aktiv edilmiş və gPTP portu kimi konfiqurasiya edilmiş interfeysdə PTP multicast ünvanına 0x88F7 ethertype ilə Ethernet freymi göndərməklə nail olur. Standart Ethernet freymləri 60 bayta tamamladığı üçün, 34 baytdan qısa yük, adətən minimumdan kiçik freymləri ötürə bilən link tələb edir — məsələn, host cihazının təmin etdiyi istənilən uzunluğu yönləndirən native_sim TAP drayveri (drivers/ethernet/eth_native_tap.c) və ya kiçik ölçülü freymləri qəbul etmək üçün konfiqurasiya edilmiş MAC. Qısa paket saxlanılır (rcvd_sync_ptr, rcvd_follow_up_ptr, rcvd_pdelay_resp_ptr və ya rcvd_announce_ptr daxilinə net_pkt_ref()) və daha sonra subsys/net/l2/ethernet/gptp/gptp_md.c və subsys/net/l2/ethernet/gptp/gptp_mi.c fayllarındakı mediadan asılı və mediadan asılı olmayan vəziyyət maşınları tərəfindən analiz edilir; onlar daha onlarla baytı oxuyur və onlardan bəzilərini (announce prioritet vektoru, hdr->port_id) sonradan ötürüləcək vəziyyətə köçürür. Defolt sabit ölçülü bufer allokatoru altında (CONFIG_NET_BUF_FIXED_DATA_SIZE, 128 baytlıq fraqmentlər) müraciətlər ayrılmış fraqment daxilində qalır və köhnə təkrar istifadə edilmiş bufer məzmununu ifşa edir; fraqmentlərin dəqiq freym uzunluğunda heap-də ayrıldığı eksperimental CONFIG_NET_BUF_VARIABLE_DATA_SIZE allokatoru altında isə bunlar real sərhədlərdən kənar oxumalar (out-of-bounds reads) hesab olunur. Yazma əməliyyatı və əlçatanlığa təsir yoxdur.
Necə düzəltmək olar
- zephyrproject zephyr4.4.2 və ya daha yeni versiya
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| zephyrproject zephyr | 1.13.0 ≤ v < 4.4.2 | 4.4.2 |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.