CVE-2023-26158
Açıklama
mockjs paketinin tüm sürümleri, özniteliğin nesne prototipine çözümlenip çözümlenmediğine dair kontrol eksikliği nedeniyle Util.extend fonksiyonu üzerinden Prototype Pollution zafiyetine sahiptir. Bir nesne prototipinin öznitelikleri eklenerek veya değiştirilerek, her nesnede mevcut olan öznitelikler oluşturulabilir veya kritik öznitelikler kötü amaçlı olanlarla değiştirilebilir. Yazılımın belirli özniteliklerin varlığına veya yokluğuna bağımlı olması ya da nesne prototipinin önceden tanımlanmış özniteliklerini (hasOwnProperty, toString veya valueOf gibi) kullanması durumunda bu durum sorun teşkil edebilir. Mock.Handler, Mock.Random, Mock.RE.Handler veya Mock.Util içerisindeki extend() metodundaki kullanıcı kontrollü girdiler, bir saldırganın bu zafiyeti istismar etmesine olanak tanır. Geçici Çözüm Tehlikeli özniteliklerden oluşan bir kara liste (denylist) kullanılarak bu zayıflık giderilebilir. Util.extend fonksiyonuna aşağıdaki satırı ekleyin: js if (["__proto__", "constructor", "prototype"].includes(name)) continue js // src/mock/handler.js Util.extend = function extend() { var target = arguments[0] || {}, i = 1, length = arguments.length, options, name, src, copy, clone if (length === 1) { target = this i = 0 } for (; i < length; i++) { options = arguments[i] if (!options) continue for (name in options) { if (["__proto__", "constructor", "prototype"].includes(name)) continue src = target[name] copy = options[name] if (target === copy) continue if (copy === undefined) continue if (Util.isArray(copy) || Util.isObject(copy)) { if (Util.isArray(copy)) clone = src && Util.isArray(src) ? src : [] if (Util.isObject(copy)) clone = src && Util.isObject(src) ? src : {} target[name] = Util.extend(clone, copy) } else { target[name] = copy } } } return target }
Nasıl düzeltilir
Kaynaklarda bu zafiyet için düzeltilmiş sürüm ya da yama bağlantısı yok.
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| mockjsnpm | v ≤ 1.1.0 | — |
| mockjs mock.js | v ≤ 1.1.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.