W bibliotece Locutus (wersje 2.0.12 – 2.0.38) istnieje podatność typu prototype pollution, która pozwala atakującemu na manipulację globalnym obiektem Object.prototype. Jest ona szczególnie niebezpieczna, ponieważ omija wcześniej wdrożoną naprawę, korzystając z obejścia przez String.prototype.
▸ Pokaż oryginał (EN)
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. In versions from 2.0.12 to before 2.0.39, a prototype pollution vulnerability exists in locutus. Despite a previous fix that attempted to mitigate prototype pollution by checking whether user input contained a forbidden key, it is still possible to pollute Object.prototype via a crafted input using String.prototype. This issue has been patched in version 2.0.39.
Poprzednia łatka próbowała zablokować prototype pollution poprzez sprawdzanie, czy dane wejściowe użytkownika zawierają zabronione klucze. Atakujący może jednak dostarczyć spreparowane dane wejściowe wykorzystujące String.prototype, co pozwala ominąć to zabezpieczenie i mimo wszystko zanieczyścić Object.prototype. Modyfikacja Object.prototype wpływa na wszystkie obiekty w danym środowisku JavaScript, co może prowadzić do zmiany logiki działania aplikacji. Podatność sklasyfikowana jest jako CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes).
Atakujący może zmodyfikować właściwości globalnego obiektu Object.prototype, co może skutkować nieautoryzowanym dostępem do zasobów, obejściem mechanizmów uwierzytelnienia lub autoryzacji, a w określonych scenariuszach również wykonaniem dowolnego kodu w kontekście aplikacji.
Należy zaktualizować bibliotekę Locutus do wersji 2.0.39 lub nowszej, w której podatność została naprawiona. Szczegóły dostępne w referencjach producenta na GitHub.
Biblioteka Locutus w wersjach od 2.0.12 do 2.0.38 (włącznie).
Podatność stanowi obejście wcześniejszej, niepełnej naprawy tego samego problemu. Poprawka dostępna w commit 042af9ca7fde2ff599120783e720a17f335bb01c w repozytorium locutusjs/locutus.
CVSS:4.0/AV:L/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:XLocutus
APPLocutus2.0.12 – 2.0.39 (bez)
Powiązane podatności
Locutus: RCE w funkcji create_function() przez brak sanityzacji danych wejściowych
Versions of package locutus before 2.0.12 are vulnerable to prototype Pollution via the php.strings.parse_str ...
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Prior to version...
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Prior to version...
Locutus brings stdlibs of other programming languages to JavaScript for educational purposes. Starting in vers...