CVE-2023-24538

Kritik

Açıklama

Şablonlar, ters tırnakları (`) Javascript dize ayırıcıları olarak uygun şekilde değerlendirmemekte ve bunları beklendiği gibi kaçırmamaktadır. Ters tırnaklar, ES6'dan beri JS şablon literaalleri için kullanılmaktadır. Eğer bir şablon, bir Javascript şablon litterali içinde bir Go şablon eylemi içeriyorsa, eylemin içeriği litterali sonlandırmak için kullanılabilir ve Go şablonuna rastgele Javascript kodu enjekte edilebilir. ES6 şablon litteralleri oldukça karmaşık olduğundan ve kendileri de dize interpolasyonu yapabildiğinden, bu davranışa izin vermenin belirgin olarak güvenli bir yolu olmadığı için bunların içinde Go şablon eylemlerinin kullanılmasına (örneğin "var a = {{.}}") basitçe izin verilmemesine karar verilmiştir. Bu durum, github.com/google/safehtml ile aynı yaklaşımı benimsemektedir. Düzeltme ile birlikte Template.Parse, bu tür şablonlarla karşılaştığında değeri 12 olan bir ErrorCode ile bir Error döndürür. Bu ErrorCode şu anda dışa aktarılmamıştır ancak Go 1.21 sürümünde dışa aktarılacaktır. Önceki davranışa güvenen kullanıcılar, ters tırnakların artık kaçırılacağı uyarısıyla, bunu GODEBUG bayrağı jstmpllitinterp=1 kullanarak yeniden etkinleştirebilirler. Bunun dikkatle kullanılması gerekir.

ÖnemKritik
CVSS9.8
İstismar olasılığı83. yüzdelik%2,3
ÜrünGo
Yayın6 Nis 2023
İlk görülme6 Nis 2023
Zayıflık türüCWE-94Kod enjeksiyonu

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.