CVE-2026-18416
Açıklama
subsys/net/lib/coap/coap_link_format.c dosyasındaki CoAP link-format yardımcısı match_path_uri(), kayıtlı bir kaynak yolunu Uri-Query href= seçeneğinde taşınan URI ile karşılaştırır. Bu URI NUL ile sonlandırılmamıştır ancak iç karakter döngüsü, dizini hiçbir zaman seçenek uzunluğu olan len ile test etmeden her yol karakteri için indeks k'yı ilerletir. Kayıtlı bir yol segmenti sağlanan URI'den daha uzun olduğunda ve URI bunun bir ön eki olduğunda, döngü uri[len] ve ötesini, yani seçenek değerinin sonunun dışını okur. Yola; coap_well_known_core_get_len() ve coap_well_known_core_get() üzerinden match_queries_resource() aracılığıyla, yani /.well-known/core hizmeti veren (CoAP sunucu alt sistemi için CONFIG_COAP_SERVER_WELL_KNOWN_CORE, varsayılan y) ve struct coap_core_metadata niteliklerini beyan eden en az bir kaynağa sahip bir cihaza yapılan herhangi bir kimlik doğrulanmamış GET /.well-known/core?href=/<prefix> isteği ile ulaşılır. Sınır aşımı okuması alım tamponuna ulaşmaz. Well-known-core oluşturucuları sorguyu, değeri sabit bir dizi (value[12] veya CONFIG_COAP_EXTENDED_OPTIONS_LEN_VALUE bayt) olan yığın yerel bir struct coap_option yapısına ayrıştırır ve seçenek baytları buraya kopyalanır; dolayısıyla uri bu kopyayı işaret eder. Bu nedenle len ötesini okumak, dizinin kullanılmayan, başlatılmamış kuyruk kısmını ve seçenek diziyi doldurduğunda aynı yığın çerçevesindeki hemen ardındaki baytları okur. (v1.8.0 ile v1.9.x arasındaki ZoAP kitaplığında seçenek değeri bunun yerine alınan pakete yönelik bir işaretçiydi ve sınır aşımı okuması paket tamponu içindeki seçeneğin ötesine geçiyordu.) Etki sınırlıdır. Sonun ötesinde okunan bayt sayısı kaynak yolu segmentinin uzunluğu ile sınırlıdır ve her ek bayt yalnızca bir sonraki yol karakterine eşit olması durumunda okunur; bu nedenle pratikte sınır aşımı okuması bir bayttır. Ayrıca yanıtı etkileyemez: eşleşme döndürmek, karşılaştırılan nihai indeksin sınırlar dahilinde olan len - 1 veya len olmasını gerektirir, dolayısıyla sınır dışı baytlar döngüyü yalnızca bir sonraki aday kaynağa yönlendirir. Bunun sonucu bilgi ifşası veya bir eşleştirme hatası değil, tanımsız davranıştır. Düzeltme, iç döngünün başına bir k >= len koruması ekler; böylece sondaki * joker karakterinin daha uzun bir yolla eşleşmesine izin verilirken her uri[k] başvurusu seçenek değeri içinde kalır.
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.8.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.