CVE-2023-28638
Açıklama
Snappier, Snappy sıkıştırma algoritmasının yüksek performanslı bir C# uygulamasıdır. Bu, Snappier 1.1.0 kullanan tüm kullanıcıları etkileyebilecek bir arabellek taşması (buffer overrun) zafiyetidir. Bu sürümde, kodun büyük bir kısmı sabitlenmiş arabellek işaretçileri yerine bayt referanslarını kullanacak şekilde yeniden yazılmıştır. Bu değişiklik genel olarak performansı artırır ve çöp toplayıcı (garbage collector - GC) üzerindeki iş yükünü azaltır. Ancak, çöp toplayıcı sıkıştırma işlemi gerçekleştirdiğinde ve belleği yeniden düzenlediğinde, yığındaki (stack) tüm bayt referanslarını güncellenmiş konuma yönlendirecek şekilde güncellemelidir. .NET çöp toplayıcısı, bu bayt referanslarını yalnızca hala arabellek içinde veya arabelleğin sonundan bir bayt sonrasını gösteriyorlarsa güncelleyebilir. Eğer bu alanın dışını gösteriyorlarsa, bayt referansı aynı kalırken arabelleğin kendisi taşınabilir. 1.1.0 sürümünde, bayt referanslarının çok kısa süreliğine arabelleklerin geçerli alanlarının dışını gösterdiği birkaç yer bulunmaktadır. Bunlar, kodda arabellek aralık kontrolleri için kullanılan konumlardır. Geçersiz referanslara hiçbir zaman doğrudan erişilmese de, bunlar yığındayken kısa bir süre içinde bir GC sıkıştırması gerçekleşirse, bu durum arabellek aralık kontrolünü geçersiz kılabilir ve diğer işlemlerin arabelleği aşmasına izin verebilir. Bir saldırganın bunu kasıtlı olarak tetiklemesi oldukça zor olacaktır; bu, isteklerden birinin tam doğru anında bir GC sıkıştırmasının gerçekleşeceği umuduyla tekrarlayan toplu bir saldırı gerektirecektir. Bununla birlikte, bu soruna sahip aralık kontrollerinden biri, açma arabelleğindeki giriş verilerine dayalı bir kontroldür; yani hatalı biçimlendirilmiş giriş verileri başarı şansını artırmak için kullanılabilir. Ortaya çıkan herhangi bir arabellek taşmasının korumalı belleğe erişime neden olması muhtemeldir, bu da bir istisnaya yol açarak işlemin sonlandırılmasına neden olur. Bu nedenle, bir saldırının en olası sonucu hizmet reddidir (denial of service). Bu sorun 1.1.1 sürümünde düzeltilmiştir. Kullanıcıların yükseltme yapmaları önerilir. Yükseltme yapamayan kullanıcılar, bazı ancak tüm vakaları hafifletmek için sıkıştırma veya açma işlemleri için kullanmadan önce arabellekleri sabit bir konuma sabitleyebilirler. En az bir geçici açma arabelleği kütüphane dahiline aittir ve asla sabitlenmez.
Nasıl düzeltilir
- Snappier1.1.1 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| snappier_project snappier | 1.1.0 | — |
| SnappierNuGet | 1.1.0 ≤ v < 1.1.1 | 1.1.1 |
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.