Pakiet NPM query-parser-string w wersji 1.0.0 jest podatny na atak Prototype Pollution. Brak odpowiedniej sanityzacji parametrów zapytania pozwala atakującemu na modyfikację prototypu obiektów JavaScript, co może prowadzić do poważnych konsekwencji w aplikacji.
▸ Pokaż oryginał (EN)
NPM package query-parser-string 1.0.0 is vulnerable to Prototype Pollution. The package does not properly sanitize user supplied query parameters and merges them to the newly created object.
Pakiet pobiera parametry zapytania dostarczone przez użytkownika i scala je bezpośrednio z nowo tworzonym obiektem bez odpowiedniej walidacji ani sanityzacji. Atakujący może spreparować złośliwe parametry zawierające klucze takie jak '__proto__' lub 'constructor', które modyfikują globalny prototyp obiektów JavaScript. W wyniku tego właściwości wstrzyknięte przez atakującego są dziedziczone przez wszystkie obiekty w aplikacji, co może prowadzić do nieoczekiwanego zachowania kodu lub jego przejęcia.
Atakujący może zmodyfikować właściwości globalnego prototypu obiektów JavaScript, co może skutkować nieautoryzowanym dostępem do danych, manipulacją logiką aplikacji, a w określonych warunkach nawet wykonaniem zdalnego kodu (RCE). Podatność może prowadzić do naruszenia poufności, integralności i dostępności aplikacji.
Należy zastosować patche dostępne u producenta zgodnie z referencjami. Do czasu pojawienia się poprawki należy rozważyć zastąpienie pakietu alternatywnym rozwiązaniem lub ręczną sanityzację parametrów zapytania przed ich przetwarzaniem — w szczególności blokowanie kluczy '__proto__', 'constructor' oraz 'prototype'.
Pakiet NPM query-parser-string w wersji 1.0.0
Podatność została zgłoszona w repozytorium GitHub projektu (issue #3). Dostępny jest publiczny proof-of-concept w serwisie GitHub Gist pod adresem wskazanym w referencjach.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H