CVE-2026-50029
Açıklama
js-toml, JavaScript için bir TOML ayrıştırıcısıdır. Versiyon 1.1.2 öncesinde yorumlayıcı, bir anahtarın ayrıştırıcı tarafından oluşturulan kapsayıcıda zaten mevcut olup olmadığını `if (key in object)` yerine `if (object[key])` ile kontrol eder. Önceki değer falsy bir primitif (`false`, `0`, `0n`, `0.0`, `-0` veya `""`) olduğunda, yinelenen anahtar dalı atlanır ve değer, aynı adı paylaşan daha sonraki bir alt tablo, noktalı anahtarlı alt tablo veya tablolar dizisi tarafından sessizce üzerine yazılarak değiştirilir. TOML 1.0.0 spesifikasyonuna göre ("Bir anahtarın birden fazla kez tanımlanması geçersizdir"; "Herhangi bir anahtar veya tabloyu birden fazla kez tanımlayamazsınız"), bu durum bir ayrıştırma hatası olmalıdır. Bunun sonucu, `load()` tarafından döndürülen değerdeki saldırgan tarafından adlandırılmış anahtarların yapısal tip karmaşasına yol açmasıdır. Boolean türündeki `false` (veya sayısal `0`), truthy bir nesneye dönüşür. Davranışı `if (config.flag)`, `if (!user.banned)`, `if (config.allowDelete)` veya `if (config.publicMode)` üzerinden denetleyen ana uygulamalar, sessizce truthy dalını takip edecektir. Bu durum, GHSA-65fc-cr5f-v7r2'den (1.0.2 prototip kirliliği düzeltmesi) farklıdır. `Object.prototype` kirletilmez. 1.0.2 sürümünden gelen `Object.create(null)` hafifletmesi geçerliliğini korumaktadır; buradaki hata kapsayıcı oluşturmada değil, yinelenen anahtar durum makinesindedir. Versiyon 1.1.2 hatalı karşılaştırmayı yamalamaktadır.
Nasıl düzeltilir
- js-toml1.1.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| js-tomlnpm | v < 1.1.2 | 1.1.2 |
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.