CVE-2023-26158
Təsvir
mockjs paketinin bütün versiyaları, atributun obyekt prototipinə həvailə edib-etmədiyini yoxlamadığı üçün Util.extend funksiyası vasitəsilə Prototype Pollution zəifliyinə məruzdur. Obyekt prototipinin atributlarını əlavə etməklə və ya dəyişdirməklə hər bir obyektdə mövcud olan atributlar yaratmaq və ya kritik atributları zərərli olanlarla əvəz etmək mümkündür. Əgər proqram təminatı müəyyən atributların mövcudluğundan və ya mövcud olmamasından asılıdırsa və ya obyekt prototipinin öncədən təyin edilmiş atributlarından (məsələn, hasOwnProperty, toString və ya valueOf) istifadə edirsə, bu problem yarada bilər. Mock.Handler, Mock.Random, Mock.RE.Handler və ya Mock.Util daxilindəki extend() metoduna ötürülən istifadəçi tərəfindən idarə olunan girişlər hücumçuya bu zəiflikdən istifadə etməyə imkan verəcəkdir. Müvəqqəti həll yolu Təhlükəli atributların qara siyahısından (denylist) istifadə etməklə bu zəiflik aradan qaldırıla bilər. Util.extend funksiyasına aşağıdakı sətri əlavə edin: 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 }
Necə düzəltmək olar
Mənbələrdə bu zəiflik üçün düzəldilmiş versiya və ya yamaq keçidi yoxdur.
Təsirlənən məhsullar
| Məhsul | Təsirlənən versiyalar | Düzəldildiyi versiya |
|---|---|---|
| mockjsnpm | v ≤ 1.1.0 | — |
| mockjs mock.js | v ≤ 1.1.0 | — |
Versiyanızı yoxlayın
Məhsulu seçin və istifadə etdiyiniz versiyanı yazın; versiyanın təsirlənən aralıqda olub-olmadığını görün.
Attack Surface Management
Domenlərinizə bağlı aktivləri, onlarda işləyən texnologiyaları və məlum zəiflikləri bir siyahıda görün.