W bibliotece RequireJS w wersji 2.3.6 odkryto podatność typu prototype pollution w funkcji s.contexts._.configure, umożliwiającą wykonanie dowolnego kodu lub wywołanie odmowy usługi. Podatność uzyskała maksymalny wynik CVSS 10.0, co czyni ją wyjątkowo krytyczną.
▸ Pokaż oryginał (EN)
jrburke requirejs v2.3.6 was discovered to contain a prototype pollution via the function s.contexts._.configure. This vulnerability allows attackers to execute arbitrary code or cause a Denial of Service (DoS) via injecting arbitrary properties.
Atakujący może wstrzyknąć dowolne właściwości do prototypu obiektu JavaScript poprzez funkcję s.contexts._.configure. Prototype pollution polega na modyfikacji globalnego prototypu Object.prototype, co wpływa na zachowanie wszystkich obiektów w aplikacji. Poprzez odpowiednio spreparowane dane wejściowe atakujący może doprowadzić do wykonania arbitralnego kodu (RCE) lub spowodować awarię aplikacji (DoS). Podatność jest możliwa do wykorzystania zdalnie, bez uwierzytelnienia i bez interakcji użytkownika.
Atakujący może wykonać dowolny kod po stronie serwera lub aplikacji klienckiej korzystającej z podatnej biblioteki, a także całkowicie uniemożliwić jej działanie poprzez wywołanie Denial of Service.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Zaleca się jak najszybszą aktualizację biblioteki RequireJS do wersji wyższej niż 2.3.6 oraz weryfikację wszystkich zależności projektu korzystających z tej biblioteki.
jrburke RequireJS w wersji 2.3.6
Szczegółowe informacje techniczne dotyczące podatności zostały opublikowane w formie publicznego gist przez użytkownika mestrtee, co może ułatwić opracowanie exploitu. Wektor ataku jest w pełni sieciowy, bez wymagań uwierzytelnienia (PR:N, UI:N), a zakres podatności jest rozszerzony (S:C), co uzasadnia maksymalny wynik CVSS 10.0.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H