Cyber Security Academy · Oppitunti

Toimitusketjun uhat

Miten riippuvuuksista tulee hyökkäysvektoreita

Oppitunti 1/413 vaihetta

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 -l

Typosquatting ja sekaannuksen aiheuttaminen

Hyökkääjät julkaisevat haitallisia paketteja, joiden nimet muistuttavat suosittuja paketteja, ja luottavat kohtalokkaaseen kirjoitusvirheeseen.

  • Typosquatting — reqeusts requests-paketin sijaan
  • Combosquatting — python-requests jä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-scripts

Vaarantuneet 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-lockfile

Riippuvuuksien 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:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

Jatkuva 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.

Aloita maksutta

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

  1. Toimitusketjun uhat
  2. Ohjelmiston materiaaliluettelo (SBOM)
  3. Riippuvuuksien ja artefaktien allekirjoittaminen
  4. CI/CD-putkien suojaaminen
← Takaisin: Cyber Security Academy