Biblioteka merge-deep przed wersją 3.0.3 dla Node.js jest podatna na atak prototype pollution, umożliwiający nadpisanie lub rozszerzenie właściwości bazowego obiektu Object.prototype. Ze względu na mechanizm dziedziczenia w JavaScript, zmodyfikowane właściwości są następnie dostępne we wszystkich obiektach w aplikacji, co czyni tę podatność szczególnie niebezpieczną.
▸ Pokaż oryginał (EN)
The merge-deep library before 3.0.3 for Node.js can be tricked into overwriting properties of Object.prototype or adding new properties to it. These properties are then inherited by every object in the program, thus facilitating prototype-pollution attacks against applications using this library.
Atakujący może dostarczyć spreparowany obiekt JSON zawierający klucze takie jak '__proto__' lub 'constructor', które podczas operacji głębokiego scalania (deep merge) są nieodpowiednio obsługiwane przez bibliotekę. Prowadzi to do nadpisania lub dodania nowych właściwości do Object.prototype — globalnego prototypu wszystkich obiektów JavaScript. Ponieważ każdy obiekt w programie Node.js dziedziczy właściwości z Object.prototype, zmodyfikowane właściwości stają się widoczne w całej aplikacji, co może prowadzić do przejęcia logiki jej działania.
Atakujący może manipulować zachowaniem aplikacji poprzez wstrzyknięcie arbitralnych właściwości do wszystkich obiektów, co w zależności od kontekstu aplikacji może prowadzić do obejścia mechanizmów autoryzacji, eskalacji uprawnień lub zdalnego wykonania kodu (RCE).
Należy zaktualizować bibliotekę merge-deep do wersji 3.0.3 lub nowszej, w której wprowadzono odpowiednie zabezpieczenia sanityzujące klucze scalanych obiektów. Użytkownicy NetApp E-Series Performance Analyzer powinni zastosować patche zgodnie z zaleceniami producenta dostępnymi w referencjach.
Biblioteka merge-deep w wersjach przed 3.0.3 dla Node.js oraz produkty korzystające z tej biblioteki, w tym NetApp E-Series Performance Analyzer.
Podatność została zidentyfikowana i opisana przez GitHub Security Lab (GHSL-2020-160). Poprawka została wprowadzona w commicie 11e5dd56de8a6aed0b1ed022089dbce6968d82a5 w repozytorium biblioteki.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HMerge Deep Project Merge Deep
APPMerge-Deep Project< 3.0.3Netapp E Series Performance Analyzer
APPNetappwszystkie wersje
Powiązane podatności
GnuTLS: use-after-free w kliencie podczas wysyłania rozszerzenia key_share
In the Linux kernel before 5.1.17, ptrace_link in kernel/ptrace.c mishandles the recording of the credentials ...
An issue was discovered in Python before 3.11.1. An unnecessary quadratic algorithm exists in one path when pr...
A flaw was found in glibc. An off-by-one buffer overflow and underflow in getcwd() may lead to memory corrupti...
Grafana is an open-source platform for monitoring and observability. Versions on the 8.x and 9.x branch prior ...