Preorder drugiego tomu książki sekuraka: Wprowadzenie do bezpieczeństwa IT. -15% z kodem: sekurak-book

NPM: 3 miliardy pobrań tygodniowo. Wrzucili małego backdoora.

08 maja 2018, 12:34 | W biegu | komentarze 4
Tagi: ,

Jeśli ktoś używa Node.js czy programuje w JavaScripcie, pewnie zetknął się z popularnym managerem pakietów dla tego języka – npm. Jak czytamy:

npm opens up an entire world of JavaScript talent for you and your team. It’s the world’s largest software registry, with approximately 3 billion downloads per week. The registry contains over 600,000 packages (building blocks of code). Open-source developers from every continent use npm to share and borrow packages, and many organizations use npm to manage private development as well.

Czy ktoś się realnie przejmuje jaki kod ściąga z npm? (dokładniej – czy nie ma tam czegoś złośliwego?). Różnie z tym bywa – niektórzy piszą nawet o masowej konsumpcji pakietów z npm porównywalnej z beztroskim zażywaniem tabletek przeciwbólowych.

Zobaczmy teraz na małego backdoora. Ktoś dodał złośliwy pakiet a niepozornej nazwie getcookies. Tu jeszcze nie ma wielkiej tragedii, choć pewnie i tak wiele osób pokusiło się o użycie tego wspaniałego kodu ;) Gorsza sprawa jest z popularnym pakietem mailparser (około 250 000 pobrań w miesiąc!), który w zależnościach miał  http-fetch-cookies, który z kolei w zależnościach miał express-cookies, a ten jako zależność dołączał złośliwy getcookies.

Tutaj prawdopodobnie konto mailparsera zostało zhackowane. Widzicie już schemat działania? Publikuję pakiet z backdorem, włamuję się na konta popularnych pakietów, ale żeby nie było tam alarmujących od razu śladów, dodaję w zależnościach mojego backdoora.

Wg bloga npm, prawdopodobnie nic się nie stało, bo cały proceder udało się wyłapać poprzez zgłoszenie od społeczności i cała akcja była na etapie przygotowania złośliwej kampanii (ale złośliwy kod + zależności były już dodane w npm).

Podsumowując: sprawdzajcie co jecie, łącznie z zależnościami ;-)

–ms

Spodobał Ci się wpis? Podziel się nim ze znajomymi:



Komentarze

  1. Olaf

    Ale jak niby sprawdzać? Przecież nie przeczytam i nie zanalizuję kodu źródłowego wszystkich modułów, które używa moja aplikacja.

    Odpowiedz
    • To w takim razie olewasz i wrzucasz z netu w swój projekt wszystko jak leci? :-) PS weryfikacja nie jest łatwa i to kwestia bardziej dostarczyciela platformy. Jak takich weryfikacji nie ma = duży problem :/

      Odpowiedz
      • Mateusz

        Analogiczny problem zapewne może wystąpić na nugecie. Tu jest o tyle gorzej, że trzeba by dekompilować zbudowane assembly…

        Odpowiedz
  2. Michał
    Odpowiedz

Odpowiedz