package-lock.json - package lock json - npm typosquatting

Package-Lock.json elírás: Hogyan törheti el a buildet

Miért fontos a Package-Lock.JSON a fejlesztők számára?

A Node.js projektekben a package-lock.json nem csupán a package.json kísérőfájlja. Zárolja az összes telepített függőség pontos verzióját, beleértve a beágyazottakat is. Ez a fájl biztosítja a reprodukálhatóságot a különböző környezetekben, és megakadályozza a váratlan változásokat az új csomagverziók közzétételekor. Enélkül a fejlesztők eltérő viselkedést kockáztatnának a fejlesztési, tesztelési és éles szakaszokban az eltolódó függőségi fák miatt, sőt, akár az npm elgépelések kapuját is megnyithatnák, ha hibák csúsznak a zárolási fájlba.


Helyes használat esetén a package-lock.json biztosítja, hogy a csapat minden tagja és a CI/CD pipeline telepítések ugyanaz a kód. De egyetlen elgépelés ebben a fájlban egyenesen egy csapdába irányíthatja az alkalmazásodat.

Hogyan vezetnek az elgépelések NPM elgépelési támadásokhoz?

Tegyük fel, hogy egy legitim csomag van benne csomag.json helyesen van leírva, például páholyDe egy elgépelés a következőben: package-lock.json, Mint például a lodák, továbbra is bekerülhet a függőségi fádba, különösen, ha valaki manuálisan szerkesztette, vagy egy hibás eszköz írta.

A támadók ezekre az elgépelésekre építenek egy npm typosquattingnak nevezett technikával. Kártékony csomagokat töltenek fel, amelyek nevei hasonlítanak a népszerű csomagok nevére (pl. react-domm, expressz, szögletes). Ha a csomagzárolási JSON-od ilyen elírást tartalmaz, az npm kérdés nélkül telepíti a támadó csomagját, mert kifejezetten erre utasítottad.

Az npm elgépelés nem csak elméleti kérdés. A valós npm elgépelési támadások is címlapokra kerültek. Egy ilyen példa volt a Coa-csomag kompromisszuma, Ahol rosszindulatú kód egy megbízható csomag frissítésén keresztül került kiszállításra. A különbség az, hogy az npm elgépelésénél a fejlesztő véletlenül meghívja a támadót egy függőség elgépelésével.

Valódi kockázatok CI/CD Pipelines Csomagzárolási JSON hibák okozta

Modern CI/CD pipelinecsemege package-lock.json az igazság forrásaként. A build vagy a telepítés során a pipeline fut npm ci or npm telepítés, mindkettő a zárolási fájlból olvas. Ha elgépelés van, a rosszindulatú csomag automatikusan betöltődik. Nincsenek riasztások. Nincsenek kérdések.

Ez azt jelenti, hogy a helyi fejlesztés során elkövetett elgépelés észrevétlenül terjedhet egészen a tesztelésig vagy akár az éles környezetig. A támadók beágyazhatnak hitelesítőadat-lopókat, kriptobányászokat vagy hátsó ajtókat, amelyek a telepítés után aktiválódnak. Mindez megtörténhet biztonsági eszközök aktiválása nélkül, mivel a függőséget „deklarálták” a package-lock.json.

Ez nem csak egy hiba. Ez egy ellátási láncban bekövetkező hiba, aminek a lényege, hogy bekövetkezzen, és az npm elgépelések valódi fenyegetést jelentenek.

Függőségi elírások észlelése és megelőzése az NPM elírásainak mérséklése érdekében

Elgépelések a következőben: package-lock.json láthatatlanok, hacsak nem keresed őket aktívan. Így kezdheted:

  • Statikus elemzésNéhány eszköz nem észleli ezeket a problémákat, de a dedikált függőségi szkennerek igen. Integráljon olyan eszközöket, amelyek npm elírási mintákat keresnek, és ellenőrzik a package-lock.json az ellentmondásokért.
  • Linting LockfilesHasználjon egyéni linting szabályokat vagy bővítményeket az érvényesítéshez package-lock.json bejegyzések az ismert biztonságos listákhoz képest.
  • Code ReviewsA szakmai értékelések kritikus fontosságúak. A zárolt fájlok közötti különbségek zajosak, de tanítsd meg a csapatodnak, hogy ezeket is átnézzék, akárcsak a kódot.
  • Automatizált ellenőrzések: Beállít pre-commit hooks vagy CI-feladatok az ellenőrizetlen vagy gyanús bejegyzések elutasításához package-lock.json.

Íme egy gyakorlati példa a GitHub Actions használatára:

Ez nem golyóálló, de furcsa csomagneveket jelöl, amelyek az npm elgépelésre utalhatnak.

Node.js projektek védelme az NPM elgépelések és az ellátási lánc támadásai ellen

A Node.js alkalmazás zárolásához és a támadások megelőzéséhez package-lock.json:

  • Szigorú verziórögzítés: Kerülje a verziótartományokat (^, ~) ben csomag.jsonA váratlan frissítések és az eltolódás csökkentése érdekében minden függőséget a pontos verziókhoz kell rögzíteni.
  • Aláírás ellenőrzéseHasználjon olyan eszközöket, mint a Sigstore és az npm eredetellenőrző funkciói, a csomagok hitelességének és eredetének ellenőrzéséhez.
  • Megváltoztathatatlan buildek: Mindig használja npm ci egy validált package-lock.json fájl éles környezetben. Soha ne hagyatkozzon a npm telepítés a telepítések során, mivel ez ellenőrizetlen változtatásokat eredményezhet.
  • Folyamatos megfigyelésHasználjon olyan monitorozó megoldásokat, amelyek riasztást küldenek, ha:
    • Új csomagok jelennek meg a package-lock.json
    • A meglévő csomagok váratlanul megváltoznak
    • Gyanús minták (pl. csomagnevek, mint például expressz, react-domm, szögletes) észlelhetők
  • Függőségi auditeszközökIntegráljon automatizált eszközöket, például npm audit, Snykvagy Xygeni a CI-be pipeline a sebezhetőségek és az elgépelési jelzések keresésére.
  • Zárfájl-higiénia: kezelni package-lock.json kódként. Tekintse át a folyamat során pull requests, különösen akkor, ha a függőségeket frissítik vagy hozzáadják.
  • Automatizált Pre-Commit EllenőrzésekHasználat pre-commit hooks hogy érvényesítse a zárolási fájlt, mielőtt az elérné a verziókövetést.

package-lock.json egy nagy értékű célpont az npm elgépeléses támadásokban. Egy elgépelés, mint például react-domm or lodák közvetlen hozzáférést biztosít a támadóknak a buildhez pipelineAz ellátási lánc integritásának megőrzése érdekében elengedhetetlen az éberség ezen a fájlon.

Szóval, egyetlen elgépelés is tönkreteheti az építményedet. Ne hagyd!

Egy elgépelés a package-lock.json nem csak hanyag kódolás; ez egy valódi fenyegetést jelent az npm elgépelések számára. A fájl egy kapuőr, és ha veszélybe kerül, a pipeline az is. A megoldás nem túl szexi: lassíts le, nézd át a zárolási fájlt, automatizáld az ellenőrzéseket és figyeld a változásokat. De megéri.

A védelem fokozásához érdemes olyan eszközöket használni, mint a Xygeni, amelyek az elgépelések észlelésére, ellenőrzésére és a szövegek ellenőrzésére szolgálnak. csomagzár JSON fájlokat, és megvédi a csomagok integritását a teljes CI/CD pipelineA nyílt forráskódú szoftverek korában a bizalmat ki kell érdemelni és ellenőrizni kell.

sca-tools-software-composition-elemző-eszközök
Szoftverkockázatok rangsorolása, elhárítása és biztosítása
Szerezd meg az ingyenes fiókodat.
Nem szükséges hitelkártya.

Biztosítsa szoftverfejlesztését és -szállítását

az Xygeni termékcsomaggal