window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = window if (w.LeadBooster) { console.warn('LeadBooster już istnieje') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() Bezpieczeństwo w pakietach Javascript - The Codest
The Codest
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Branże
    • Fintech i bankowość
    • E-commerce
    • Adtech
    • Healthtech
    • Produkcja
    • Logistyka
    • Motoryzacja
    • IOT
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
  • O nas
  • Nasze Usługi
    • Software Development
      • Frontend Development
      • Backend Development
    • Zespoły IT
      • Programiści frontendowi
      • Backend Dev
      • Inżynierowie danych
      • Inżynierowie rozwiązań chmurowych
      • Inżynierowie QA
      • Inne
    • Konsultacje IT
      • Audyt i doradztwo
  • Wartość dla
    • CEO
    • CTO
    • Delivery Managera
  • Nasz zespół
  • Case Studies
  • Nasze Know How
    • Blog
    • Meetups
    • Webinary
    • Raporty
Kariera Skontaktuj się z nami
Strzałka w tył WSTECZ
2019-03-26
Software Development

Bezpieczeństwo w pakietach Javascript

Daniel Grek

Z każdym dniem ilość pakietów Javascript rośnie. Jest to wynik aktywności społeczności, która z jednej strony domaga się nowych rozwiązań, z drugiej - generuje je w ramach samorozwoju lub realizacji. Tak duży wzrost otwiera nowe drzwi i możliwości, ale niesie ze sobą również zagrożenia, których każdy developer musi być świadomy.

Pod koniec listopada 2018 r. społeczność GitHub poinformowała o poważnej luce w zabezpieczeniach aplikacji event-stream - który pomaga w pracy z węzeł wydarzenia bardziej efektywnie. Była ona dość popularna, ponieważ liczba pobrań w tym konkretnym okresie sięgała ponad 2,2 mln tygodniowo (w porównaniu do React z 3,7 mln). Event-stream, jak i jego zależności, były zależne od innej biblioteki - flatmap-steam, który został zaktualizowany złośliwym oprogramowaniem typu crypto-pocket. Umożliwiało ono kradzież kluczy prywatnych i innych danych z kont użytkowników na komputerach, do których pakiet był dołączony.

Ostatecznie flatmap-stream został usunięty z NPM, co spowodowało problemy czasowe z wieloma innymi bibliotekami. W maju tego samego roku społeczność znalazła backdoora w bibliotece getcookie który był również częścią wielu innych zależności. Takie przykłady można mnożyć, co pokazuje, że ważne jest, aby zwracać uwagę na zależności zainstalowane w pakiecie projektnie tylko od Javascript ale także w kontekście ogólnym.

Poleganie na oficjalnych rozwiązaniach i dużych społecznościach

W miarę możliwości ważne jest, aby polegać na oficjalnych rozwiązaniach w swoim projekcie. Są one nie tylko mniej podatne na ataki ze względu na lepszy proces rozwoju. Duża społeczność, która zwykle wiąże się z lepszą marką, pomaga znacznie szybciej identyfikować problemy i, co ważniejsze, znajdować dobre rozwiązania.

Wykorzystanie trendów NPM

Bezpieczeństwo JavaScript

Rys. 1 Trend Webpack NPM.

Wykres

Rys. 2. Trend NPM w strumieniu zdarzeń.

Czasami znajomość aktualnego stanu pakietu może nie odzwierciedlać jego przeszłości. Szybkie spojrzenie na wykres trendów npm może pokazać rzeczywisty trend pakietu. Pokaże on nie tylko duże szczyty, w których można znaleźć jakąś podatność, ale także ogólny stan danego pakietu (UWAGA: duże szczyty w trendach google w okolicach 24-30 grudnia reprezentują sezon świąteczny, co niekoniecznie musi oznaczać problem). Jako przykład, spójrz na rysunek 1 - przedstawiający trend pobierania Webpacka na tydzień. Widać stabilny wzrost bez żadnych punktów zwrotnych, co może sugerować, że Webpack jest stabilnym i bezpiecznym pakietem do użycia. Z drugiej strony, na rysunku 2 widać duży spadek w listopadzie, co jest wyraźnym sygnałem, że coś złego mogło się wydarzyć w tym okresie (co już wiemy, że jest prawdą).

Audyt zależności

Najlepszym i najbardziej niezawodnym sposobem na sprawdzenie stanu zależności jest wykonanie funkcji audyt. Polecenie to jest teraz dostępne natywnie zarówno dla yarn, jak i npm, choć wymaga ich najnowszych wersji. Wysyła listę aktualnych zależności do odpowiedniego punktu końcowego i zwraca informacje zawierające ich aktualne luki i inne szczegóły użytkowania, w tym odniesienie do dokumentacji. (rysunek 3).

Interesujące dane

Rys. 3. Przykład wyniku polecenia npm audit. Źródło: https://docs.npmjs.com

Zarządzanie zależnościami w Javascript nie jest łatwym zadaniem. Liczba rozwiązań rośnie z każdym dniem, dlatego pamiętaj, aby wybierać zależności mądrze i ostrożnie. Nieustannie kontroluj swój bieżący projekt i regularnie aktualizuj swoje pakiety.

Aby dowiedzieć się więcej o zależnościach javascript i jak rozwiązać niektóre z ich problemów, Sprawdź ten artykuł.

Źródło:

  1. https://github.com/dominictarr/event-stream/issues/116
  2. https://blog.npmjs.org/post/180565383195/details-about-the-event-stream-incident
  3. https://blog.npmjs.org/post/173526807575/reported-malicious-module-getcookies
  4. https://docs.npmjs.com/auditing-package-dependencies-for-security-vulnerabilities
  5. https://docs.npmjs.com/cli/audit
  6. https://yarnpkg.com/lang/en/docs/cli/audit/

Powiązane artykuły

Software Development

Tworzenie przyszłościowych aplikacji internetowych: spostrzeżenia zespołu ekspertów The Codest

Odkryj, w jaki sposób The Codest wyróżnia się w tworzeniu skalowalnych, interaktywnych aplikacji internetowych przy użyciu najnowocześniejszych technologii, zapewniając płynne doświadczenia użytkowników na wszystkich platformach. Dowiedz się, w jaki sposób nasza wiedza napędza transformację cyfrową i biznes...

THEECODEST
Software Development

10 najlepszych firm tworzących oprogramowanie na Łotwie

Dowiedz się więcej o najlepszych łotewskich firmach programistycznych i ich innowacyjnych rozwiązaniach w naszym najnowszym artykule. Odkryj, w jaki sposób ci liderzy technologiczni mogą pomóc w rozwoju Twojej firmy.

thecodest
Rozwiązania dla przedsiębiorstw i scaleupów

Podstawy tworzenia oprogramowania Java: Przewodnik po skutecznym outsourcingu

Zapoznaj się z tym niezbędnym przewodnikiem na temat skutecznego tworzenia oprogramowania Java outsourcing, aby zwiększyć wydajność, uzyskać dostęp do wiedzy specjalistycznej i osiągnąć sukces projektu z The Codest.

thecodest
Software Development

Kompletny przewodnik po outsourcingu w Polsce

Wzrost liczby outsourcing w Polsce jest napędzany przez postęp gospodarczy, edukacyjny i technologiczny, sprzyjający rozwojowi IT i przyjazny klimat dla biznesu.

TheCodest
Rozwiązania dla przedsiębiorstw i scaleupów

Kompletny przewodnik po narzędziach i technikach audytu IT

Audyty IT zapewniają bezpieczne, wydajne i zgodne z przepisami systemy. Dowiedz się więcej o ich znaczeniu, czytając cały artykuł.

The Codest
Jakub Jakubowicz CTO & Współzałożyciel

Subskrybuj naszą bazę wiedzy i bądź na bieżąco!

    O nas

    The Codest - Międzynarodowa firma programistyczna z centrami technologicznymi w Polsce.

    Wielka Brytania - siedziba główna

    • Office 303B, 182-184 High Street North E6 2JA
      Londyn, Anglia

    Polska - lokalne centra technologiczne

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polska

      The Codest

    • Strona główna
    • O nas
    • Nasze Usługi
    • Case Studies
    • Nasze Know How
    • Kariera
    • Słownik

      Nasze Usługi

    • Konsultacje IT
    • Software Development
    • Backend Development
    • Frontend Development
    • Zespoły IT
    • Backend Dev
    • Inżynierowie rozwiązań chmurowych
    • Inżynierowie danych
    • Inne
    • Inżynierowie QA

      Raporty

    • Fakty i mity na temat współpracy z zewnętrznym partnerem programistycznym
    • Z USA do Europy: Dlaczego amerykańskie startupy decydują się na relokację do Europy?
    • Porównanie centrów rozwoju Tech Offshore: Tech Offshore Europa (Polska), ASEAN (Filipiny), Eurazja (Turcja)
    • Jakie są największe wyzwania CTO i CIO?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Warunki korzystania z witryny

    Copyright © 2025 by The Codest. Wszelkie prawa zastrzeżone.

    pl_PLPolish
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish nb_NONorwegian fiFinnish fr_FRFrench arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek pl_PLPolish