Toimitusketjun uhat
Miten riippuvuuksista tulee hyökkäysvektoreita
Toimitusketjun uhat on ilmainen Cyber Security Academy-oppitunti CoddyKitissä. Tämä on oppitunti 1/4. Voit lukea tästä oppimispolusta kokonaan mitkä tahansa 3 oppituntia ilmaiseksi — sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä käytännön harjoittelun sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Oppitunti kuuluu Cyber Security Academy-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mikä on toimitusketjuhyökkäys
Ohjelmistojen toimitusketjuhyökkäyksessä organisaatio vaarannetaan rikkomatta sen tietoturvaa suoraan, vaan turmelemalla jokin, johon se luottaa ja jota se käyttää: kirjasto, build-työkalu, kontin peruslevykuva tai päivityspalvelin.
Koska nykyaikaiset ohjelmistot koostetaan sadoista kolmansien osapuolten komponenteista, yksi myrkytetty lenkki periytyy kaikille myöhemmille käyttäjille. Hyökkääjä tekee investoinnin kerran ja saavuttaa monia uhreja.
- Luottamuksen kääntyminen — tietoturvaraja siirtyy oman koodinne ulkopuolelle
- Transitiivinen vaikutusalue — yksi haitallinen paketti päätyy tuhansiin koonteihin
Riippuvuusjäävuori
Kun lisäätte yhden suoran riippuvuuden, vedätte usein mukaan kymmeniä transitiivisia riippuvuuksia, joita ette ole itse valinneet. Tyypillinen Node- tai Python-sovellus ilmoittaa muutaman paketin, mutta ratkaistuja riippuvuuksia on lopulta satoja.
Luetelkaa koko ratkaistu riippuvuuspuu, ei vain manifestia, jotta näette, mitä todellisuudessa toimitatte:
# npm: full resolved dependency tree
npm ls --all
# Python: pinned transitive closure
pip freeze
# count transitive nodes
npm ls --all --parseable | wc -lTyposquatting ja sekaannuksen aiheuttaminen
Hyökkääjät julkaisevat haitallisia paketteja, joiden nimet muistuttavat suosittuja paketteja, ja luottavat kohtalokkaaseen kirjoitusvirheeseen.
- Typosquatting —
reqeustsrequests-paketin sijaan - Combosquatting —
python-requestsjäljittelee oikeaa nimeä - Dependency confusion — julkinen paketti julkaistaan samalla nimellä kuin sisäinen yksityinen pakettinne, jolloin väärin määritetty ratkaisija hakee hyökkääjän version
Suojautukaa määrittämällä luotettu sisäinen rekisteri kiinteästi ja käyttämällä scope- tai nimiavaruusmääritteisiä yksityisiä paketteja.
Tilin ja ylläpitäjän haltuunotto
Laillinen ja laajasti luotettu paketti voi muuttua haitalliseksi, jos sen ylläpitäjän tili vaarantuu tai haitallinen osallistuja saa julkaisuoikeudet.
Viimeaikaiset tosielämän tapaukset osoittavat, että hyökkääjät kalastelevat ylläpitäjien tunnistetietoja ja julkaisevat sitten saastutetun korjausjulkaisun, joka varastaa tunnisteita asennuksen aikana.
- Edellyttäkää 2FA:ta kaikilta julkaisutileiltä
- Suosikaa paketteja, joissa on rajatut julkaisutunnisteet ja suojatut julkaisut
- Seuratkaa kriittisten riippuvuuksien uusia, odottamattomia ylläpitäjiä
Haitalliset asennusskriptit
Monet ekosysteemit suorittavat koodia asennuksen yhteydessä, ennen kuin sovelluksenne käynnistyy. npm install voi suorittaa postinstall-koukun, joka varastaa ympäristömuuttujia tai SSH-avaimia.
Poistakaa mielivaltaiset asennusskriptit käytöstä CI:ssä ja tarkastakaa kaikki niitä tarvitsevat paketit:
# npm: block lifecycle scripts during install
npm ci --ignore-scripts
# inspect what a package would run
npm view <package> scripts
# pnpm equivalent
pnpm install --ignore-scriptsVaarantuneet build-työkalut
Build-ympäristö itsessään on arvokas kohde. Jos hyökkääjä saastuttaa kääntäjän, CI-suorittimen levykuvan tai build-laajennuksen, jokainen sen tuottama artefakti sisältää takaoven, vaikka lähdekoodinne olisi puhdas.
Klassinen esimerkki on troijattu päivitysmekanismi, joka allekirjoittaa haittaohjelman aidolla koodin allekirjoitusavaimella, jolloin uhrit hyväksyvät sen aidoksi.
- Käsitelkää build-infrastruktuuria tuotantoympäristönä ja koventakaa se kattavasti
- Käyttäkää lyhytikäisiä ja toistettavia build-suorittimia
- Erotelkaa allekirjoitusavaimet build-palvelimesta
Lukitustiedostot ja eheystiivisteet
Lukitustiedosto kiinnittää täsmälliset versiot ja sisältötiivisteet, joten riippuvuuksien uudelleenratkaisu ei voi vaihtaa toista artefaktia huomaamatta. Viekää se aina versionhallintaan ja antakaa CI:n varmistaa se sen sijaan, että riippuvuudet ratkaistaisiin vapaasti uudelleen.
Eheyskenttä sisältää tiivisteen; jos ladattu tar-paketti ei vastaa sitä, asennus epäonnistuu.
# package-lock.json integrity entry
# "resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
# "integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="
# CI must install from lock, never re-resolve
npm ci
yarn install --frozen-lockfileRiippuvuuksien haavoittuvuuksien skannaus
Tunnetut haavoittuvat versiot, joita seurataan CVE-tunnisteilla, ovat yleisin toimitusketjun heikkous. Software Composition Analysis (SCA) -työkalut vertaavat ratkaistuja riippuvuuksianne haavoittuvuustietokantoihin.
Suorittakaa skannaukset CI:ssä ja epäonnistuttakaa koonnit kriittisten havaintojen yhteydessä:
# npm built-in audit
npm audit --audit-level=high
# OSV scanner across ecosystems
osv-scanner --lockfile=package-lock.json
# Trivy for filesystem and images
trivy fs --severity HIGH,CRITICAL .Versioiden kiinnitys ja vendoring
Joustavat versioalueet (^1.2.0) päästävät uudet julkaisut automaattisesti mukaan. Se on kätevää, mutta altistaa teidät haitalliselle päivitysversiolle.
- Kiinnittäkää riippuvuudet täsmällisiin versioihin ja tarkastakaa päivitykset harkiten
- Kiinnittäkää tiivisteen perusteella konttikuvat, älkää muuttuvien tunnisteiden, kuten
latest, perusteella - Vendoroikaa kriittiset riippuvuudet omaan repositorioonne tai peiliin, jotta ylävirran poistaminen ei voi rikkoa tai saastuttaa ympäristöänne
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613fJatkuva valvonta ja alkuperätiedot
Toimitusketjun suojaaminen on jatkuvaa työtä, ei kertaluonteinen skannaus. Teidän on tiedettävä, mitä toimitatte, mistä se on peräisin ja milloin siitä tulee haavoittuva.
- Tuottakaa jokaisesta julkaisusta SBOM (seuraava oppitunti)
- Tallentakaa buildin alkuperätiedot, jotta voitte osoittaa, miten artefakti tuotettiin
- Tilatkaa tietoturvatiedotteet, jotta uusi CVE käynnistää jo toimitettujen buildien uudelleenarvioinnin
Putken uhkamallinnus
Kartoittakaa jokainen vaihe, jossa epäluotettu syöte tulee mukaan: kehittäjien koneet, lähdekoodin hallinta, riippuvuusrekisterit, build-järjestelmä, artefaktien tallennus ja päivityskanava. Jokainen niistä on mahdollinen injektiopiste.
Kysykää jokaisessa vaiheessa: kuka voi kirjoittaa tähän, mitä vaarantuminen antaisi hänen tehdä ja miten havaitsisin sen? Näin saatte yleisen tarkistuslistan sijaan priorisoidun luettelon hallintakeinoista.
Pikatesti: Dependency confusion
Testatkaa, kuinka hyvin ymmärrätte yleisen toimitusketjuhyökkäysten luokan.
Kertaus: toimitusketjun uhat
Opitte, miksi riippuvuudet ovat hyökkäysvektoreita ja miten niiden aiheuttamaa altistumista voi vähentää.
- Luottamuksen kääntyminen tarkoittaa, että tietoturvanne riippuu kolmansista osapuolista, joita ette hallitse
- Keskeisiä uhkia ovat typosquatting, dependency confusion, ylläpitäjän haltuunotto, haitalliset asennusskriptit ja vaarantuneet build-työkalut
- Keskeisiä suojakeinoja ovat eheystiivisteitä sisältävät lukitustiedostot, SCA-skannaus, täsmällinen kiinnitys tiivisteen perusteella, julkaisijoiden 2FA ja jatkuva valvonta
Seuraavaksi luetteloitte tarkasti, mitä ohjelmistonne sisältää, SBOM:n avulla.
Opi Cyber Security Academy tekoälytuutorin avulla — ilmaiseksi
Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.
- Kurssit
- 76
- Oppitunnit
- 303
Usein kysytyt kysymykset
Onko oppitunti ”Toimitusketjun uhat” ilmainen?
Kyllä — voit lukea täällä verkossa kokonaan ilmaiseksi mitkä tahansa Cyber Security Academy-oppimispolun 3 oppituntia, myös oppitunnin “Toimitusketjun uhat”. Sen jälkeen CoddyKit PRO avaa kaikki oppitunnit sekä interaktiiviset harjoitukset sisäänrakennetulla koodieditorilla ja ympäri vuorokauden toimivalla tekoälytuutorilla. Cyber Security Academy-kurssilla on yhteensä 4 oppituntia.
Mitä opin oppitunnilla ”Toimitusketjun uhat”?
Miten riippuvuuksista tulee hyökkäysvektoreita Harjoittelet Cyber Security Academy-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.
Tarvitsenko kokemusta aloittaakseni Cyber Security Academy-opiskelun?
Aiempi kokemus ei ole tarpeen. CoddyKitin Cyber Security Academy-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 1/4.
Kuinka kauan ”Toimitusketjun uhat”-oppitunnin suorittaminen kestää?
Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.
Voinko kirjoittaa ja suorittaa koodia tällä Cyber Security Academy-oppitunnilla?
Kyllä. Jokainen Cyber Security Academy-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.
Kaikki tämän kurssin oppitunnit
- Toimitusketjun uhat
- Ohjelmiston materiaaliluettelo (SBOM)
- Riippuvuuksien ja artefaktien allekirjoittaminen
- CI/CD-putkien suojaaminen