Vulnerability w NPM prowadząca do nadpisywania plików w systemie

Firma GitHub ujawnila szczegóły dotyczące siedmiu luk w pakietach tar i @npmcli/arborist, które oferują funkcje do pracy z archiwami tar oraz obliczania drzewa zależności w Node.js. Luki pozwalają na nadpisanie plików poza głównym katalogiem, do którego prowadzi rozpakowywanie, w zależności od bieżących uprawnień. Problemy te stwarzają możliwość wykonania dowolnego kodu w systemie, na przykład poprzez dodanie poleceń do ~/ .bashrc lub ~/ .profile podczas wykonywania operacji przez użytkownika bez uprawnień, lub przez zastąpienie plików systemowych, gdy uruchamiane są z uprawnieniami root.

Niebezpieczeństwo luk spotęgowane jest tym, że wadliwy kod jest wykorzystywany w menedżerze pakietów npm podczas operacji z pakietami npm, co pozwala na przeprowadzenie ataku na użytkowników poprzez umieszczenie w repozytorium specjalnie przygotowanego pakietu npm, podczas przetwarzania którego w systemie zostanie wykonany kod złośliwego oprogramowania. Atak może być możliwy nawet przy instalacji pakietów w trybie „—ignore-scripts”, wyłączającym wykonywanie wbudowanych skryptów. Łącznie npm dotyczy czterech luk (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 i CVE-2021-39135) z siedmiu. Pierwsze dwie problemy dotyczą pakietu tar, a pozostałe dwa pakietu @npmcli/arborist.

Najbardziej niebezpieczna luka CVE-2021-32804 spowodowana jest tym, że przy czyszczeniu wskazanych w archiwum tar bezwzględnych ścieżek nieprawidłowo obsługiwane są powtarzające się znaki „/” — usuwany jest tylko pierwszy znak, a pozostałe pozostają. Na przykład, ścieżka „/home/user/.bashrc” zostanie przekształcona w „home/user/.bashrc”, a ścieżka „//home/user/.bashrc” w „/home/user/.bashrc”. Druga luka CVE-2021-37713 objawia się tylko na platformie Windows i związana jest z nieprawidłowym czyszczeniem względnych ścieżek, które zawierają nierozdzielony znak dysku („C:some\path”) oraz sekwencję do powrotu do poprzedniego katalogu („C:../foo”).

Luki CVE-2021-39134 i CVE-2021-39135 są specyficzne dla modułu @npmcli/arborist. Pierwszy problem występuje tylko w systemach, które nie rozróżniają wielkości liter w systemie plików (macOS i Windows) i pozwala na zapisanie plików w dowolnej części systemu plików, wskazując wśród zależności dwa moduły ‘»foo»: «file:/some/path»‘ i ‘FOO: «file:foo.tgz»‘, co prowadzi do usunięcia zawartości katalogu /some/path i zapisania w nim zawartości foo.tgz. Drugi problem pozwala na nadpisanie plików poprzez manipulację z symlinkami.

Luki zostały usunięte w wersjach Node.js 12.22.6 i 14.17.6, npm CLI 6.14.15 i 7.21.0, a także w poszczególnych wersjach pakietu tar 4.4.19, 5.0.11 i 6.1.10. Otrzymując informacje o problemie w ramach inicjatywy „bug bounty”, GitHub wypłacił badaczom 14500 dolarów i przeskanował zawartość repozytorium, w którym nie stwierdzono prób wykorzystania luk. Aby chronić przed wskazanymi problemami, GitHub wprowadził również zakaz publikowania w repozytorium pakietów NPM zawierających symlinki, twarde linki i ścieżki absolutne.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster