Pakiet uglify-js w wersjach przed 2.4.24 dla Node.js niepoprawnie obsługuje wartości nieboolowskie podczas przepisywania wyrażeń boolowskich. Może to pozwolić atakującym na ominięcie mechanizmów bezpieczeństwa w aplikacjach korzystających z tego minifikatora JavaScript.
▸ Pokaż oryginał (EN)
The uglify-js package before 2.4.24 for Node.js does not properly account for non-boolean values when rewriting boolean expressions, which might allow attackers to bypass security mechanisms or possibly have unspecified other impact by leveraging improperly rewritten Javascript.
Podatność wynika z błędu w logice minifikacji kodu JavaScript — narzędzie uglify-js nieprawidłowo przepisuje wyrażenia boolowskie, gdy napotyka wartości nieboolowskie. W wyniku tego procesu generowany jest zminifikowany kod JavaScript, który semantycznie różni się od oryginału. Aplikacje polegające na poprawności zminifikowanego kodu mogą przez to wykonywać go w sposób niezgodny z intencją programisty, co może prowadzić do obejścia zaimplementowanych zabezpieczeń.
Atakujący może potencjalnie ominąć mechanizmy bezpieczeństwa w aplikacjach, których kod JavaScript został nieprawidłowo zminifikowany przez podatną wersję uglify-js. Możliwy jest również bliżej nieokreślony wpływ na poufność, integralność i dostępność danych.
Należy zaktualizować pakiet uglify-js do wersji 2.4.24 lub nowszej. Aktualizacji można dokonać poprzez menedżer pakietów npm: `npm update uglify-js`. Zaleca się również ponowne zminifikowanie kodu JavaScript zbudowanego przy użyciu podatnych wersji narzędzia.
Pakiet uglify-js w wersjach przed 2.4.24 dla Node.js (projekt Uglifyjs).
Podatność została ujawniona publicznie na liście oss-security w dniu 20 kwietnia 2016 roku. Pomimo oceny CVSS 9.8 (CRITICAL), rzeczywisty wpływ zależy od kontekstu użycia zminifikowanego kodu i architektury aplikacji.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:HUglifyjs Project Uglifyjs
APPUglifyjs Project< 2.4.24