CVE-2026-19735
Açıklama
subsys/net/ip/tcp.c dosyasındaki RFC 6528 initial-sequence-number uygulaması, her bir TCP ISN değerini SHA-256(unique_key || four-tuple) artı çalışma süresinden türetilen bir ofsetten elde ediyordu; burada unique_key, sys_csrand_get() tarafından bir kez doldurulan 128 bitlik gizli bir anahtardır. Bu çağrının dönüş değeri göz ardı edilmiş ve çağrı başarısız olsa bile tek seferlik koruma kilidi true olarak ayarlanmıştır. sys_csrand_get() hata durumunda hedef tamponu değiştirmediği için (tamponu doldurmak yerine kasıtlı olarak entropi sürücüsü hatasını iletir), başarısız olan tek bir çağrı, herhangi bir yeniden deneme, günlük mesajı veya yedek mekanizma olmaksızın, boot işleminin geri kalanı boyunca unique_key'in tümü sıfır olan BSS içeriği olarak kalmasına neden olmuştur. Zayıf duruma ulaşmak için kriptografik rastgele kaynakta bir hata oluşması gerekir; örneğin subsys/random/random_entropy_device.c içindeki entropi sürücüsünden gelen -ENODEV/-EIO hataları (kod içi yorumda donanım RNG'sinin "erken boot durumlarında hala entropi topluyor olabileceği" belirtilmiştir) veya PSA crypto başlatılmadığında ya da henüz aktif olmayan bir Bluetooth-HCI entropi cihazı tarafından desteklendiğinde subsys/random/random_psa.c içindeki psa_generate_random() fonksiyonunun başarısız olmasıdır. Anahtar üretimini tetikleyen şey ilk TCP bağlantısıdır; bu nedenle boot işleminden hemen sonra dinleme modundaki bir porta erişen veya yeniden başlatmayı tetikleyebilen uzak bir eş, üretimin bu zaman aralığına denk gelip gelmeyeceği üzerinde dolaylı etkiye sahiptir. tcp_init_isn(), tcp_conn_new() içindeki her pasif açılış ve net_tcp_connect() içindeki her aktif açılış için çağrıldığından, zehirlenmiş anahtar o boot işlemi için tüm TCP bağlantılarını yönetir. Tümü sıfır olan bir anahtarla ISN, bağlantı four-tuple'ı artı cihaz genelindeki zaman ofsetinin herkese açık bir fonksiyonu haline gelir. Yol dışı (off-path) bir saldırgan, herhangi bir four-tuple için özet terimini çevrimdışı olarak hesaplayabilir ve gözlemlenen tek bir ISN üzerinden paylaşılan zaman ofsetini kurtarabilir; bundan sonra cihazın diğer four-tuple'lar için seçeceği ISN tahmin edilebilir hale gelir. Bu durum, RFC 6528'in sağladığı korumayı tam olarak etkisiz kılar: kaynak adrese güvenen eşlere karşı kör TCP bağlantı sahteciliği (spoofing) ve four-tuple'ı tahmin edilebilen bağlantılara kör veri enjeksiyonu yapılması veya bağlantıların sıfırlanması. Entropi kaynağı hiçbir zaman hata vermeyen cihazlar asla zayıf durumda kalmamıştır. Düzeltme, anahtar üretimini yalnızca başarı durumunda kilitlenen, aksi takdirde hatayı günlüğe kaydeden tek bir korumalı yardımcı fonksiyona taşır ve bilinen sabit bir anahtarla özetleme yapmak yerine tcp_init_isn()'nin —CONFIG_NET_TCP_ISN_RFC6528 devre dışı bırakıldığında zaten kullanılan davranış— sys_rand32_get() fonksiyonuna geri dönmesini sağlar.
Nasıl düzeltilir
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| zephyrproject zephyr | 3.7.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.