CVE-2026-76788
Açıklama
subsys/mgmt/osdp/src/osdp_cp.c dosyasındaki OSDP Kontrol Paneli yanıt ayrıştırıcısı cp_decode_response(), bir Çevresel Cihazdan gelen yanıtları yığın tahsisli (stack-allocated) bir struct osdp_event yapısına çözer. REPLY_KEYPPAD ve REPLY_RAW yanıt türleri için yük uzunluğu alınan çerçeveden alınır ve gerçekleştirilen tek doğrulama, beyan edilen uzunluğun çerçevede mevcut olan yük baytlarının sayısı ile tutarlı olduğudur. Saldırgan hem uzunluk alanını hem de çerçeve uzunluğunu kontrol edebildiği için bu kontrol herhangi bir sınır getirmez ve ardından gelen memcpy() işlemi, struct osdp_event_keypress / struct osdp_event_cardread yapısının sabit 64 baytlık veri dizilerine (OSDP_EVENT_MAX_DATALEN) yazım yapar. Aynı switch bloğundaki kardeş REPLY_FMT işleyicisi halihazırda eksik olan > OSDP_EVENT_MAX_DATALEN sınırını içermekteydi. Hata, OSDP RS-485 kanalından baytları okuyan ve bunları yanıt kimliğine göre yönlendirmeden önce osdp_phy_check_packet() ve osdp_phy_decode_packet() üzerinden geçiren cp_process_reply() aracılığıyla tetiklenir. Bunu tetiklemek için CONFIG_OSDP'nin CONFIG_OSDP_MODE_CP ile birlikte yapılandırılması ve kayıtlı bir uygulama olay geri çağırma fonksiyonunun bulunması (normal Kontrol Paneli entegrasyonu) gerekir; ayrıca doğru bir SOM, geçerli bir CRC-16 ve eşleşen 2 bitlik bir sıra numarası taşıyan bir çerçeve gereklidir ki bunların tamamı veriyolundaki herkes tarafından hesaplanabilir veya gözlemlenebilir. Yanıt kimliğini bekleyen komuta bağlayan hiçbir kontrol yoktur, bu nedenle aşırı boyutlu bir REPLY_KEYPPAD veya REPLY_RAW, rutin bir CMD_POLL'a cevap olarak kabul edilir. Kötü niyetli veya ele geçirilmiş bir kart okuyucu ya da RS-485 kablolamasına erişimi olan herhangi biri böyle bir çerçeve sağlayabilir; CONFIG_OSDP_SC_ENABLED yalnızca güvenli bir kanal aktifken yardımcı olur ve hatalı bir MAC taşıyan tek bir kimlik doğrulanmamış çerçeve sc_deactivate() işlemini tetikler, bunun ardından düz metin yanıtlar yeniden kabul edilmeye başlanır. Varsayılan 256 baytlık CONFIG_OSDP_UART_BUFFER_LENGTH ile, tipik Cortex-M ve RISC-V çerçeve düzenlerinde (Zephyr varsayılan olarak stack canary özelliğini etkinleştirmez), tamamen saldırgan tarafından seçilen yaklaşık 180 baytlık veri, yığın tahsisli olay nesnesinin sonuna yazılarak kaydedilmiş yazmaçların ve dönüş adresinin üzerine yazılabilir. Etki, erişim kontrol panelinin tamamen çökmesinden, OSDP alma iş parçacığı bağlamında potansiyel bir kontrol akışı ele geçirmeye kadar değişmektedir. Düzeltme, her iki işleyiciye de OSDP_EVENT_MAX_DATALEN sınırı ekleyerek her memcpy() işlemini hedef boyutla sınırlandırır.
Nasıl düzeltilir
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| zephyrproject zephyr | 3.3.0 ≤ v ≤ 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.