CVE-2026-17054
Açıklama
Espressif ESP-hosted Wi-Fi sürücüsü (drivers/wifi/esp_hosted/), esp_hosted_event_task() fonksiyonunda ESP yardımcı işlemcisinden SPI üzerinden alınan çerçeveleri ayrıştırır. Kontrol çerçeveleri için, 16 bitlik TLV alanı olan data_length değerini doğrudan hattan alır ve bunu çerçeve uzunluğu veya alma tamponu ile karşılaştırmadan pb_istream_from_buffer(frame.data_value, frame.data_length) fonksiyonuna aktarır. frame.data_value, 3188 baytlık bir yığın nesnesinin 26 bayt içerisindedir; bu nedenle 0xFFFF'e kadar olan bir data_length değeri, pb_decode()'un söz konusu nesnenin sonunun yaklaşık 62 KB ötesini okumasına neden olur. Parçalanmış bir kontrol yanıtının yalnızca ilk parçası bir TLV üst bilgisi taşır; önceki sürücü yarı çift yönlü (half-duplex) SPI işlemleri gerçekleştiriyordu ve ana bilgisayar iletim yaparken yardımcı işlemcinin kuyruğa aldığı tüm çerçeveleri sessizce atıyordu (esp_hosted_hal_spi_transfer(), RX tamponunu TX tamponu üzerine eşliyordu). Atılan çerçeve, parçalanmış bir yanıtın ilk parçası olduğunda, sürücü bir sonraki parçayı yeni bir çerçeve olarak değerlendirir —parça başına düşen üst bilgi ve sağlama toplamı gerçek olduğu için her iki doğrulama adımı da geçer— ve TLV üst bilgisini ham protobuf devam baytlarından okur. Bu baytlar, yakınındaki kimliği doğrulanmamış bir saldırganın boyutunu ve içeriğini etkileyebileceği kontrol yanıtlarından gelir; özellikle de radyo menzilindeki erişim noktalarının sayısı ve SSID uzunluğuyla büyüyen AP tarama listesi buna örnektir. Etkisi, bilgi ifşasından ziyade hizmet reddidir (DoS). RAM bölgesinin sonunun ötesini okumak cihazda hataya yol açar ve sürücü tarafından CONFIG_NANOPB_ENABLE_MALLOC seçildiği için sınır dışından okunan hatalı uzunluk ön ekleri aynı zamanda yığın (heap) tahsislerini tetikler. Sınır dışındaki baytların kendileri uygulamaya ulaşmaz: pb_decode() ham protobuf devam baytları üzerinde akış ortasında başlatılır ve bu nedenle neredeyse her zaman doğrudan başarısız olur; çözümlenebilen herhangi bir veri ise önce bekleyen istekle tam bir msg_id eşleşmesi gerektiren esp_hosted_response() fonksiyonundan, ardından başarılı bir yanıt gerektiren esp_hosted_ctrl_response() fonksiyonundan geçmek zorundadır —saldırgan meşru kontrol yanıtlarının boyutunu ve içeriğini etkiler, hizalanmamış baytlardan çözümlenen yapıyı değil. Aynı alma yolundaki iki ilgili kusur, hizmet reddini kalıcı hale getirir: parça yeniden birleştirme koruması ESP_FRAME_MAX_PAYLOAD yerine ESP_FRAME_SIZE ile boyutlandırılmıştır ve tetiklendiğinde çerçeveyi atmak yerine tek RX iş parçacığından geri döner; ayrıca işlenmeyen kontrol olayları, hiçbir şeyin boşaltmadığı sekiz girişli bir kuyrukta k_msgq_put(..., K_FOREVER) ile kuyruğa alınarak aynı iş parçacığını engeller. Sürücünün bir bekçi köpeği (watchdog) veya yeniden başlatma yolu yoktur, bu nedenle her iki durum da cihaz yeniden başlatılana kadar tüm Wi-Fi alımını durdurur.
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 | 4.2.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.