CVE-2025-68156
Açıklama
Expr, Go için bir ifade dili ve ifade değerlendirme kütüphanesidir. Versiyon 1.17.7 öncesinde, Expr içindeki `flatten`, `min`, `max`, `mean` ve `median` dahil olmak üzere çeşitli yerleşik fonksiyonlar, maksimum özyineleme derinliğini zorunlu kılmadan kullanıcı tarafından sağlanan veri yapıları üzerinde özyinelemeli tarama gerçekleştirir. Değerlendirme ortamı derinlemesine iç içe geçmiş veya döngüsel veri yapıları içeriyorsa, bu fonksiyonlar Go çalışma zamanı yığın sınırını aşana kadar süresiz olarak özyineleme yapabilir. Bu durum, ana uygulamanın çökmesine neden olan bir yığın taşması paniğine (stack overflow panic) yol açar. İstismar edilebilirlik, bir saldırganın değerlendirme ortamına döngüsel veya patolojik düzeyde derin veriler enjekte edip edemeyeceğine bağlı olsa da, bu davranış bir hizmet reddi (DoS) riski oluşturur ve genel kütüphane dayanıklılığını etkiler. Kurtarılabilir bir değerlendirme hatası döndürmek yerine, işlem beklenmedik şekilde sonlanabilir. Etkilenen versiyonlarda, güvenilmeyen veya yetersiz doğrulanmış veri yapıları üzerinde belirli yerleşik fonksiyonları çağıran ifadelerin değerlendirilmesi, yığın tükenmesi nedeniyle işlem düzeyinde çökmelere yol açabilir. Bu sorun özellikle Expr'nin dışarıdan sağlanan veya dinamik olarak oluşturulan ortamlar karşısında ifadeleri değerlendirmek için kullanıldığı, dizilere, haritalara veya yapılara (doğrudan veya dolaylı olarak) döngüsel referansların eklenebildiği ve derinlemesine iç içe geçmiş giriş verilerini önleyen uygulama düzeyinde korumaların olmadığı senaryolarda geçerlidir. Kontrollü, döngüsüz verilerin kullanıldığı tipik kullanım durumlarında sorun ortaya çıkmayabilir. Ancak mevcut olduğunda, ortaya çıkan panik uygulamayı güvenilir bir şekilde çökertmek için kullanılabilir ve bu da bir hizmet reddi teşkil eder. Sorun, Expr'nin v1.17.7 versiyonlarında düzeltilmiştir. Yama, etkilenen yerleşik fonksiyonlar için maksimum bir özyineleme derinliği sınırı getirir. Bu sınır aşıldığında, değerlendirme işlemi düzgün bir şekilde durdurulur ve panik oluşması yerine açıklayıcı bir hata döndürülür. Ek olarak, maksimum derinlik kullanıcılar tarafından `builtin.MaxDepth` aracılığıyla özelleştirilebilir; böylece meşru derin yapılara sahip uygulamalar limiti kontrollü bir şekilde artırabilir. Kullanıcıların, hem özyineleme korumasını hem de regresyonları önlemek için kapsamlı test kapsamını içeren yamalı sürüme yükseltmeleri şiddetle tavsiye edilir. Hemen yükseltme yapamayan kullanıcılar için bazı hafifletici önlemler önerilmektedir: Değerlendirme ortamlarının döngüsel referanslar içermediğinden emin olun, dışarıdan sağlanan veri yapılarını Expr'ye aktarmadan önce doğrulayın veya temizleyin ve/veya tam bir işlem çökmesini önlemek için (son çare savunma önlemi olarak) ifade değerlendirmesini panik kurtarma (panic recovery) ile sarmalayın. Bu geçici çözümler riski azaltır ancak yama olmadan sorunu tamamen ortadan kaldırmaz.
Nasıl düzeltilir
- expr-lang expr1.17.7 ya da sonraki bir sürüm
- github.com/expr-lang/expr1.17.7 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| expr-lang expr | v < 1.17.7 | 1.17.7 |
| github.com/expr-lang/exprGo | v < 1.17.7 | 1.17.7 |
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.