CVE-2026-44645
Açıklama
LiquidJS, saf JavaScript ile yazılmış bir Shopify/GitHub Pages uyumlu şablon motorudur. 10.25.7 ve altı sürümlerde, gövdesi boş olan bir {% for %} (veya {% tablerow %}) etiketiyle renderLimit seçeneği tamamen atlatılabilir. renderLimit seçeneği, docs/source/tutorials/dos.md dosyasında "her render() çağrısı tarafından tüketilen süreyi sınırlayarak bunu hafifleten" mekanizma olarak belgelenmiştir. Yineleme başına süre kontrolüne yalnızca gövde en az bir şablon düğümü içerdiğinde ulaşılır; bu nedenle {%- for i in (1..N) -%}{%- endfor -%} gibi bir şablon, renderLimit'e hiç danışmadan tüm koleksiyon üzerinde yineleme yapar. 50 ms olarak yapılandırılmış bir renderLimit ile, tek bir parseAndRenderSync çağrısının 2,26 saniye (limitin yaklaşık 45 katı) tükettiği gözlemlenmiş olup, bu durum memoryLimit değerine kadar N ile doğrusal olarak ölçeklenmekte ve düşük yetkili bir şablon yazarının, saldırgan tarafından belirlenen bir süre boyunca olay döngüsü (event-loop) iş parçacığını kilitlemesine izin vermektedir. Hizmet reddi (DoS) koruması için sonlu bir renderLimit'e güvenen dağıtımlar (çok kiracılı şablon yazma ortamlarında yaygındır), özel olarak hazırlanmış tek bir şablonla, bir Node.js olay döngüsü çalışanını saldırgan kontrollü bir süre boyunca tekeline almaya zorlanabilir; bu durum potansiyel olarak devam eden isteklerin duraksamasına yol açarak yalnızca kullanılabilirlik etkisine neden olur. Bu sorun 10.26.0 sürümünde düzeltilmiştir.
Nasıl düzeltilir
- liquidjs10.26.0 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| liquidjsnpm | v < 10.26.0 | 10.26.0 |
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.