CVE-2023-24536

Yüksek

Açıklama

Çok parçalı (multipart) form ayrıştırma işlemi, çok sayıda parça içeren form girdilerini işlerken yüksek miktarda CPU ve bellek tüketebilir. Bu durum birkaç nedenden kaynaklanmaktadır: 1. mime/multipart.Reader.ReadForm, ayrıştırılan bir multipart formun tüketebileceği toplam belleği sınırlar. ReadForm, tüketilen bellek miktarını eksik hesaplayabilir ve bu da amaçlanandan daha büyük girdilerin kabul edilmesine yol açabilir. 2. Toplam belleğin sınırlandırılması, çok sayıda parçaya sahip formlardaki çok sayıdaki küçük tahsisatın çöp toplayıcı (garbage collector) üzerindeki artan baskısını hesaba katmaz. 3. ReadForm, çok sayıda kısa ömürlü tampon (buffer) tahsis edebilir ve bu da çöp toplayıcı üzerindeki baskıyı daha da artırır. Bu faktörlerin birleşimi, bir saldırganın multipart formları ayrıştıran bir programın yüksek miktarda CPU ve bellek tüketmesine neden olmasına izin verebilir ve potansiyel olarak hizmet reddi (denial of service) ile sonuçlanabilir. Bu durum, mime/multipart.Reader.ReadForm kullanan programların yanı sıra net/http paketindeki Request metodları olan FormFile, FormValue, ParseMultipartForm ve PostFormValue ile gerçekleştirilen form ayrıştırmalarını etkiler. Düzeltme ile birlikte ReadForm artık ayrıştırılan formların bellek tüketimini daha iyi tahmin etmekte ve çok daha az kısa ömürlü tahsisat gerçekleştirmektedir. Ek olarak, düzeltilmiş mime/multipart.Reader, ayrıştırılan formların boyutuna şu sınırları getirir: 1. ReadForm ile ayrıştırılan formlar 1000'den fazla parça içeremez. Bu sınır GODEBUG=multipartmaxparts= ortam değişkeni ile ayarlanabilir. 2. NextPart ve NextRawPart ile ayrıştırılan form parçaları 10.000'den fazla başlık alanı içeremez. Ayrıca, ReadForm ile ayrıştırılan formlar tüm parçalar genelinde 10.000'den fazla başlık alanı içeremez. Bu sınır GODEBUG=multipartmaxheaders= ortam değişkeni ile ayarlanabilir.

ÖnemYüksek
CVSS7.5
İstismar olasılığı—
ÜrünGo
Yayın6 Nis 2023
İlk görülme6 Nis 2023

Nasıl düzeltilir

Güncelleyin
  • golang go1.19.8, 1.20.3 ya da sonraki bir sürüm
  • stdlib1.19.8, 1.20.3 ya da sonraki bir sürüm

Etkilenen ürünler

ÜrünEtkilenen sürümlerDüzeltildiği sürüm
golang gov < 1.19.8, 1.20.0 ≤ v < 1.20.31.19.8, 1.20.3
stdlibGov < 1.19.8, 1.20.0-0 ≤ v < 1.20.31.19.8, 1.20.3

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.

Intelligence 360 paketinde

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.

CVE-2023-24536 · Go · Dark Radar