CVE-2026-16512
Açıklama
subsys/net/l2/ethernet/gptp/gptp.c dosyasındaki gptp_handle_msg() fonksiyonu, alınan çerçevenin en az sizeof(struct gptp_hdr) (34) bayt yük taşıyıp taşımadığını önceden kontrol etmeden, GPTP_HDR() tarafından döndürülen gPTP başlığını dereference etmiş ve hdr->message_type üzerinden işlem yapmıştır. Başlık erişim fonksiyonu olan gptp_get_hdr(), kısa bir tampon için kasıtlı olarak asla hata vermez; pkt->frags->data değerini döndürür ve doğrulamayı çağıran taraflara bırakır; bu nedenle kesilmiş bir çerçeve, alınan verilerin ötesindeki belleği kapsayan bir başlık işaretçisi oluşturmuştur. Ardından gelen mesaj türüne özel kontroller bunu telafi etmemektedir: Ethernet başlığı çıkarıldıktan sonra GPTP_VALID_LEN() ifadesi len > 60 şekline indirgenir ki bu durum her sabit boyutlu gPTP mesajı için yanlıştır; dolayısıyla GPTP_CHECK_LEN(), kesilmiş bir SYNC, FOLLOWUP, PDELAY_RESP veya SIGNALING mesajını hiçbir zaman reddetmez. Bu kusura, CONFIG_NET_GPTP etkinleştirilmişken, gPTP portu olarak yapılandırılmış bir arayüzdeki PTP çok yayın adresine 0x88F7 ethertype değerine sahip bir Ethernet çerçevesi gönderen aynı bağlantıdaki kimliği doğrulanmamış bir eş aracılığıyla ulaşılabilir. Standartlara uygun Ethernet çerçeveleri 60 bayta tamamladığından, 34 bayttan kısa bir yük genellikle minimum altı çerçeveleri iletebilen bir bağlantı gerektirir; örneğin ana bilgisayar cihazının sağladığı herhangi bir uzunluğu ileten native_sim TAP sürücüsü (drivers/ethernet/eth_native_tap.c) veya küçük boyutlu çerçeveleri kabul edecek şekilde yapılandırılmış bir MAC adresi. Kısa paket tutulur (rcvd_sync_ptr, rcvd_follow_up_ptr, rcvd_pdelay_resp_ptr veya rcvd_announce_ptr içine net_pkt_ref()) ve daha sonra subsys/net/l2/ethernet/gptp/gptp_md.c ve subsys/net/l2/ethernet/gptp/gptp_mi.c dosyalarındaki ortama bağımlı ve ortamdan bağımsız durum makineleri tarafından ayrıştırılır; bu makineler onlarca ek bayt okur ve bunlardan bazılarını (duyuru öncelik vektörü, hdr->port_id) daha sonra iletilecek olan duruma kopyalar. Varsayılan sabit boyutlu tampon ayırıcısı altında (CONFIG_NET_BUF_FIXED_DATA_SIZE, 128 baytlık fragmanlar), erişimler tahsis edilen fragmanın içinde kalır ve geri dönüştürülmüş eski tampon içeriklerini ifşa eder; fragmanların tam çerçeve uzunluğunda yığın üzerinde tahsis edildiği deneysel CONFIG_NET_BUF_VARIABLE_DATA_SIZE ayırıcısı altında ise bunlar gerçek sınır dışı okumalardır (out-of-bounds reads). Herhangi bir yazma işlemi veya kullanılabilirlik etkisi yoktur.
Nasıl düzeltilir
- zephyrproject zephyr4.4.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| zephyrproject zephyr | 1.13.0 ≤ v < 4.4.2 | 4.4.2 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.