CVE-2024-7884
Açıklama
Bir canister metodu ic_cdk::call* aracılığıyla çağrıldığında, yeni bir Future olan CallFuture oluşturulur ve yürütme sonucunu almak için çağıran tarafından beklenebilir (awaited). Dahili olarak, Future durumu CallFutureState adlı bir struct içinde izlenir ve saklanır. CallFuture'ın polling uygulamasındaki bir hata, bu dahili durum için birden fazla referans tutulmasına izin verir ve tüm referanslar Future çözümlenmeden önce serbest bırakılmaz. Hesaba katılmayan referanslar tutulduğu için, dahili durumun bir kopyası canister'ın heap belleğinde kalır ve böylece bellek sızıntısına neden olur. Etki: ic_cdk ve ic_cdk_timers ile Rust dilinde oluşturulan canister'lar etkilenmektedir. Bu canister'lar bir canister metodunu çağırırsa, zamanlayıcıları veya heartbeat özelliğini kullanırlarsa, her işlemde muhtemelen küçük miktarda bellek sızdıracaklardır. En kötü durumda bu, bir saldırgan tarafından tetiklenen heap bellek tükenmesine yol açabilir. Motoko tabanlı canister'lar bu hatadan etkilenmemektedir. Yamalar: Yama, >= 0.8.0 ve <= 0.15.0 arasındaki tüm ara sürümlere geri port edilmiştir. Mevcut yamalı sürümler 0.8.2, 0.9.3, 0.10.1, 0.11.6, 0.12.2, 0.13.5, 0.14.1, 0.15.1'dir ve önceki sürümleri geri çekilmiştir. Geçici Çözümler: Şu anda bilinen bir geçici çözüm yoktur. Geliştiricilerin, Wasm heap belleğinin tükenmesini önlemek için canister'larını mümkün olan en kısa sürede ic_cdk'nın mevcut en güncel yamalı sürümüne yükseltmeleri önerilir. Canister'ların yükseltilmesi (`ic_cdk` güncellenmeden), sızan belleği de boşaltır ancak bu yalnızca geçici bir çözümdür.
Nasıl düzeltilir
- dfinity canister_developer_kit_for_the_internet_computer0.8.2, 0.9.3, 0.11.6, 0.12.2, 0.13.5 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| dfinity canister_developer_kit_for_the_internet_computer | 0.8.0 ≤ v < 0.8.2, 0.9.0 ≤ v < 0.9.3, 0.11.0 ≤ v < 0.11.6, 0.12.0 ≤ v < 0.12.2, 0.13.0 ≤ v < 0.13.5, 0.10.0, 0.14.0, 0.15.0 | 0.8.2, 0.9.3, 0.11.6, 0.12.2, 0.13.5 |
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.