WebAssembly kodunu tarayıcı dışında çalıştırmak için kullanılan Wasmtime çalışma zamanında, saldırganların kontrol ettiği modüllerin sandbox kısıtlamalarını aşmasına zemin hazırlayan iki kritik güvenlik açığı keşfedildi. Projeyi yöneten Bytecode Alliance, her iki açığı da CVSS ölçeğinde 9,9 puan olarak derecelendirdi ve 19 Ekim tarihli güvenlik duyurularında ayrıntıları kamuoyuyla paylaştı. Düzeltilmiş sürümler 19 ve 20 Ekim'de kullanıma sunuldu; bakımcılar bu açıklarla ilgili henüz herhangi bir saldırı bildirmedi.
Açıklar Nerede ve Nasıl Ortaya Çıkıyor?
Her iki güvenlik açığı da Wasmtime'ın varsayılan derleyicisi olan Cranelift'te bulunuyor. Cranelift, WebAssembly kodunu makine diline dönüştürme görevini üstleniyor. Sandbox mekanizması bir modülün yalnızca kendi belleğini kullanmasını, yalnızca kendisine tanınan ana bilgisayar işlevlerine erişmesini ve kodun yalnızca denetlenmiş konumlara atlayabilmesini sağlıyor. Her iki açık da saldırganın kendi kontrolündeki bir modülü derlemeyi gerektirdiğinden risk, başka kişilerin yazdığı modülleri derleyen hizmetler için özellikle yüksek. Fastly'nin Compute platformu, müşteri kodunu Wasmtime kullanarak çalıştıran hizmetlere örnek gösteriliyor.
CVE-2026-115889: Tüm Mimarileri Etkileyen Taşma Hatası
CVE-2026-115889, Cranelift'in bir işlev içindeki değerleri izlemek için kullandığı sayıları saklama biçiminden kaynaklanıyor. Sürüm 43 öncesinde bu sayılar 24 bitlik alanlara sıkıştırılıyordu; üretim derlemelerinde alana sığmayan bir sayı herhangi bir hata üretmeden taşıyordu. Bu durum Cranelift'in yanlış değere başvurmasına ve hatalı makine kodu üretmesine yol açıyordu. Çok sayıda değer kullanan ya da bu amaçla özel olarak hazırlanmış büyük bir WebAssembly işlevi, tür karışıklığına (type confusion) neden olarak sandbox'tan çıkmayı mümkün kılıyor. Alanları 32 bite genişleten değişiklik, 18 Şubat'ta ana geliştirme dalına eklendi ve 20 Mart'ta yayımlanan Wasmtime 43.0.0 ile birlikte geldi; ancak bu değişikliğin güvenlik boyutu o sırada duyurulmadı. 36.x uzun vadeli destek (LTS) hattı aynı düzeltmeyi 19 Ekim'de aldı.
CVE-2026-115893: Yalnızca ARM64'ü Etkileyen Dal Hatası
CVE-2026-115893 ise yalnızca ARM64 (aarch64) mimarisini etkiliyor ve Wasmtime'ın ARM64 desteğini ilk kez sunduğu 2020 yılından bu yana mevcut. Sorun, br_table adlı WebAssembly talimatıyla ilgili; bu talimat bir dizine göre kodun birçok farklı yerine atlama yapıyor, tablo dışı dizinler ise varsayılan hedefe yönlendiriliyor. ARM64'te Cranelift, tablo dışı dizinleri yaklaşık 1 MiB menzile sahip bir dal komutuyla varsayılan hedefe gönderiyordu. Yaklaşık 256.000'den fazla hedef içeren bir br_table, atlama tablosunu bu menzili aşacak kadar büyütüyor ve dal komutu sessiz sedasız yanlış konuma işaret ediyordu. Güvenlik duyurusuna göre varsayılan ayarlarla çalışan ARM64 üzerindeki herhangi bir Wasmtime motoru, kullanıcı denetimindeki bir WebAssembly modülü tarafından rastgele koda atlamaya zorlanabiliyor. Düzeltme, tablo dışı dizinleri uzun dal yerine atlama tablosunun kendisi üzerinden yönlendiriyor; düzeltilmiş sürümler aynı zamanda 65.520'den fazla hedef içeren br_table derlemeyi reddediyor.
Hangi Sürümler Etkileniyor, Ne Yapılmalı?
İki açık farklı zamanlarda giderildiğinden etkilenen sürümler hat ve mimariye göre değişiyor. Wasmtime, 12'nin katı numaralı sürümleri iki yıl boyunca LTS olarak destekliyor; diğer sürümler iki ay destek görüyor. Güvenlik düzeltmeleri yalnızca desteklenen sürümler için garanti ediliyor. Hâlâ desteklenen hatlar 36, 48, 49 ve 50; 24 Ağustos 2026'da desteği sona eren 24.x LTS hattı dahil diğer tüm hatlar düzeltme almadı.
- 36.0.19 öncesi (24.x dahil): Her iki açıktan da etkileniyor. 36.0.19, 48.0.7, 49.0.4 veya 50.0.0 sürümüne geçilmeli.
- 36.0.19: Her iki açık da kapatılmış, ek işlem gerekmiyor.
- 37.0.0 – 42.x: Her iki açıktan da etkileniyor. 48.0.7, 49.0.4 veya 50.0.0 sürümüne geçilmeli.
- 43.0.0 – 47.x: Yalnızca CVE-2026-115893'ten etkileniyor (ARM64). 48.0.7, 49.0.4 veya 50.0.0 sürümüne geçilmeli.
- 48.0.0 – 48.0.6: Yalnızca CVE-2026-115893'ten etkileniyor. 48.0.7'ye güncellenmeli.
- 49.0.0 – 49.0.3: Yalnızca CVE-2026-115893'ten etkileniyor. 49.0.4'e güncellenmeli.
- 49.0.4, 48.0.7 ve 50.0.0 ve sonrası: Her iki açık da kapatılmış, ek işlem gerekmiyor.
\nNisan ayında daha önceki bir Cranelift sandbox kaçışı için 36.0.7, 42.0.2 veya 43.0.1 sürümlerine geçen ARM64 kullanıcıları CVE-2026-115893'ten hâlâ etkileniyor. Wasmtime bir kütüphane olarak başka programlara eklenebileceğinden yalnızca komut satırı aracını güncellemek yeterli değil; Wasmtime içeren her programın düzeltilmiş sürümle yeniden derlenmesi gerekiyor. Her iki güvenlik duyurusu da geçici bir çözüm önermiyor.
Araç Desteği ve Ekosistem Güncellemeleri
Her iki açık, cargo-audit aracının Cargo.lock dosyalarını denetlemek için kullandığı RustSec veritabanında RUSTSEC-2026-0380 ve RUSTSEC-2026-0379 kimlikleriyle listeleniyor. 26 Ekim itibarıyla GitHub'ın güvenlik açığı veritabanında CVE-2026-115889 için incelenmiş bir kayıt bulunurken CVE-2026-115893 için böyle bir kayıt yer almıyordu. GitHub yalnızca incelenmiş kayıtların Dependabot uyarısı tetiklediğini belirttiğinden ARM64 açığı için Dependabot bildirimi beklenmemeli. Wasmtime üzerinde çalışan sunucusuz WebAssembly uygulamaları geliştirmeye yarayan açık kaynaklı Spin aracı, 21 Ekim'de yayımlanan 4.2.4 sürümüyle Wasmtime 50.0.0'a geçti. 26 Ekim itibarıyla her iki açık da ABD Siber Güvenlik ve Altyapı Güvenliği Ajansı'nın (CISA) Bilinen İstismar Edilen Güvenlik Açıkları kataloğunda yer almıyordu.
Sıkça Sorulan Sorular
Wasmtime nedir ve bu güvenlik açıkları neden önemlidir?
Wasmtime, WebAssembly kodunu web tarayıcıları dışında çalıştırmaya yarayan bir çalışma zamanıdır. Başka yazılımlara kütüphane olarak eklenebilir. Tespit edilen açıklar, saldırganın denetimindeki bir WebAssembly modülünün sandbox kısıtlamalarını aşmasına olanak tanıdığından, özellikle dışarıdan gelen modülleri derleyen hizmetler için ciddi risk oluşturuyor.
CVE-2026-115889 ile CVE-2026-115893 arasındaki temel fark nedir?
CVE-2026-115889 tüm işlemci mimarilerini etkilerken CVE-2026-115893 yalnızca ARM64 (aarch64) sistemleri etkiliyor. CVE-2026-115889, Cranelift'teki 24 bitlik alan taşmasından; CVE-2026-115893 ise br_table talimatının ARM64'te yanlış dal hedefine yönlenmesinden kaynaklanıyor.
Hangi Wasmtime sürümleri her iki açıktan da tamamen korunmuş durumda?
36.0.19, 48.0.7, 49.0.4 ve 20 Ekim'de yayımlanan 50.0.0 sürümleri her iki açık için de düzeltme içeriyor. Bu sürümlerden birine geçen kullanıcıların ek işlem yapmasına gerek bulunmuyor.
Wasmtime'ı bir kütüphane olarak kullanan geliştiriciler ne yapmalı?
Wasmtime'ı kütüphane olarak içeren her programın düzeltilmiş sürümle yeniden derlenmesi gerekiyor. Yalnızca komut satırı aracını güncellemek, Wasmtime'ı bünyesinde barındıran diğer uygulamaları korumaya yetmiyor. Her iki güvenlik duyurusu da geçici bir çözüm sunmuyor.
Dependabot kullanıcıları ARM64 açığı için otomatik uyarı alabilecek mi?
26 Ekim itibarıyla GitHub'ın güvenlik açığı veritabanında CVE-2026-115893 için incelenmiş bir kayıt bulunmuyordu. GitHub yalnızca incelenmiş kayıtların Dependabot uyarısı tetiklediğini belirttiğinden, Dependabot kullananların bu ARM64 açığı için otomatik bildirim beklememelidir.
Yorumlar (0)
Yorum yapmak için giriş yapmalısınız.