APM-tietoturvatarkistuslista, joka jokaisen kehittäjän on käytävä läpi ennen julkaisua

APM-tietoturvatarkistuslista, joka jokaisen kehittäjän on käytävä läpi ennen julkaisua

Tou 20, 2026 npm security package management supply chain security developer best practices ci/cd security code review malware prevention open source security

Turvallisuusauditointi ennen julkaisua: mitä jokaisen kehittäjän tulisi tarkistaa

Jos julkaisemme avoimen lähdekoodin paketteja npm:ssä, liikumme samalla alueella jossa viime vuosina on nähty yllättävän kekseliäitä – ja vaarallisia – hyökkäyksiä. Hyökkäyspinta on laajentunut, eikä pelkkä "toimii koneellani" -testaus riitä enää varmistukseksi.

Tässä käsitellään niitä käytännön asioita, jotka erottavat vastuulliset ylläpitäjät niistä, jotka joutuvat selittämään asioita vasta jälkikäteen.

Miksi paketille tarvitaan turvallisuustarkistus ennen julkaisua

npm-ekosysteemi on sekä JavaScriptin vahvuus että sen yksi haavoittuvimmista kohdista. Yksi paketti voi päätyä tuhansiin sovelluksiin ja rakennusputkiin. Tämä laajuus tekee paketeista houkuttelevia kohteita – ei pelkästään tunnusten keräämiseen, vaan myös pysyvyyden luomiseen CI/CD-ympäristöissä, joissa koodi pääsee ajamaan korkeilla käyttöoikeuksilla.

Useimmat hyökkäykset ovat kuitenkin estettävissä huolellisella työllä ja oikeilla työkaluilla.

12 yleisintä hyökkäysvektoria npm-paketeissa

1. Tilin kaappaus ja haitallinen julkaisu

Pahin tilanne syntyy, kun npm-tili kaapataan ja hyökkääjä julkaisee muokatun version paketista. Käyttäjät asentavat sen automaattisesti, ja haitallinen koodi pääsee ajamaan tuotannossa.

Suojautuminen:

  • Ota 2FA käyttöön npm-tilille
  • Käytä erillisiä, rajoitettuja token:eja tilin salasanan sijaan
  • Ota käyttöön julkaisun hyväksyntä herkillä paketeilla
  • Seuraa julkaisulokeja säännöllisesti

2. Lifecycle hookit: asennus muuttuu suoritukseksi

npm antaa paketeille mahdollisuuden käyttää preinstall-, postinstall- ja muita elinkaarihookeja. Koodi voi tällöin ajaa heti asennuksen jälkeen, ennen kuin varsinainen sisältö edes lataudu.

Suojautuminen:

  • Tarkista kaikki lifecycle hookit package.json-tiedostosta
  • Kysy itseltäsi, onko asennusajan koodia tarpeen käyttää
  • Jos hookeja käytetään, pidä ne selkeinä ja pieninä
  • Harkitse vaihtoehtoja, jotka toimivat rakennusajalla

3. Itseään kopioivat npm-madot

Paketti voi muokata muita node_modules-kansion paketteja, ja haitallinen koodi voi levitä koko riippuvuuspuuhun. Tämä on mato-tyyppinen hyökkäys, joka itseäsi kopioi.

Suojautuminen:

  • Älä muokkaa tiedostojärjestelmää asennuksen aikana
  • Älä koske muiden pakettien koodiin
  • Pidä riippuvuudet erillään
  • Aja npm audit ja riippuvuuksien skannaukset säännöllisesti

4. CI/CD-tunnusten kaappaukset

CI/CD-putkessa on usein tunnuksia, kuten deployment token:eja ja GitHub-oikeuksia. Jos paketti pääsee rakennusprosessiin, hyökkääjä voi päästä käsiksi näihin tunnuksiin ja taudinlevittäjänä palata suuriin osa koko ympäristöön.

Suojautuminen:

  • Käytä rajoitettuja tunnuksia kunkin vaiheen varten
  • Vaihda tunnuksia usein
  • Älä kovakoodaa tunnuksia package.jsonissa
  • HARKitse OpenID Connect -menetelmän käyttöisä pakkeissa
  • Tarkista, kuka pääsee käsiksi julkaisutunnuksiin

5. Git-pohjainen salakuljetus

Suoraan Git-repositorioista asennetut riippuvuudet eivät kuulu npm:n turvajärjestelmien suojapiiriin. Hyökkääjä voi julkaista haitallisen haarautteen ja houkutella ihmisiä asentamaan siitä.

Suojautuminen:

  • Kiinnitä riippuvuudet npm-rekisteriin,而不是 Git-repositorioihin
  • Jos Git-repositorioita käytetään, varmistetaan commit hash
  • Älä käytä latest tai haarautteen viittauksia luottamattomista repositorioista
  • Dokumentoi, miksi Git-repositorio tarvitaan

6. Etäiset dynaamiset riippuvuudet

Jotkut paketit saavat koodi ajamaan itse dynamisch während runtime. Tämä luo näkymätön,运行时 attack surface, jossa paketti toimii vain loaderina.

Suojautuminen:

  • Kaikki riippuvuudet on ilmoittautettu package.jsonissa
  • Älä noudata dynaamisesti koodi fetchia ja executeia
  • Käytä static analyysejä dynaamisia riippuvuuksia varten
  • Jos tarvitaan runtime flexibility, suunnitele ilman code execution

7. Phishing-infrastruktuuria näkyvissä

Hyökkääjät voivat käyttää npm:ää ja sen CDN:ää phishing-sivujen tai tunnusten keräämisen varten. Paketti voi näyttäytyä legitiiminä, kun se silti omdirigerer käyttäjä tietyn login pageille.

Suojautuminen:

  • Ole avoin, mikä paketti tekee
  • Selitä viralliset domainit ja dokumentaatiot
  • Ota CSP headerit käyttöön verkkosivuille
  • Seuraa typosquatting-versioita paketin nimestä
  • Raportoi epäilyttävät paketit npm:lle

8. Tunnusten ja salaisuuksien kerääminen

Haitallinen paketti voi kerää ympäristömuuttujia, API-key:tä, token:eja ja salaisuuksia. K<|eos|>

Read in other languages:

RU BG EL CS UZ TR SV RO PT PL NB NL HU IT FR ES DE DA ZH-HANS EN