Cyber Security Academy · Lektion

Trusler i supply chain

Se, hvordan dependencies bliver til angrebsvektorer.

Lektion 1 af 413 trin

Trusler i supply chain er en gratis Cyber Security Academy-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Cyber Security Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Cyber Security Academy-kurset indeholder 4 lektioner i alt.

Hvad er et angreb på softwareforsyningskæden

Et angreb på softwareforsyningskæden kompromitterer en organisation ikke ved at bryde direkte ind i den, men ved at ødelægge noget, den stoler på og bruger: et bibliotek, et værktøj til byggeprocessen, et containergrundafbildning eller en opdateringsserver.

Moderne software sammensættes af hundredvis af tredjepartskomponenter, så et enkelt forgiftet led nedarves af alle efterfølgende brugere. Angriberen investerer én gang og når dermed mange ofre.

  • Tillidsinversion — sikkerhedsgrænsen flyttes uden for din egen kode
  • Transitivt skadeomfang — én skadelig pakke føres videre til tusindvis af byggeprocesser

Afhængighedernes isbjerg

Når du tilføjer én direkte afhængighed, trækker du ofte snesevis af transitive afhængigheder ind, som du aldrig selv har valgt. En typisk Node- eller Python-app angiver en håndfuld pakker, men ender med hundredvis.

Vis hele det opløste afhængighedstræ, ikke kun manifestet, så du kan se, hvad du faktisk leverer:

# npm: full resolved dependency tree
npm ls --all

# Python: pinned transitive closure
pip freeze

# count transitive nodes
npm ls --all --parseable | wc -l

Typosquatting og navneforveksling

Angribere udgiver skadelige pakker med navne, der ligner populære pakker, og satser på en fatal tastefejl.

  • Typosquatting — reqeusts i stedet for requests
  • Combosquatting — python-requests efterligner det rigtige navn
  • Afhængighedsforveksling — en offentlig pakke udgives med samme navn som din interne private pakke, så en forkert konfigureret afhængighedsopløser henter angriberens version

Beskyt dig ved at fastlåse et pålideligt internt pakkeregister og bruge private pakker med begrænset rækkevidde eller navnerum.

Overtagelse af konti og vedligeholderadgang

En legitim og bredt betroet pakke kan blive skadelig, hvis vedligeholderens konto kompromitteres, eller hvis en skadelig bidragyder får ret til at udgive pakker.

Nyere hændelser fra den virkelige verden viser, hvordan angribere lokker vedligeholderes loginoplysninger ud af dem og derefter udgiver en kompromitteret programrettelse, der eksfiltrerer tokens under installationen.

  • Kræv 2FA på alle konti, der kan udgive pakker
  • Foretræk pakker med udgivelsestokens med begrænset rækkevidde og beskyttede udgivelser
  • Hold øje med uventede nye vedligeholdere af kritiske afhængigheder

Skadelige installationsscripts

Mange økosystemer kører kode på installationstidspunktet, før din app overhovedet kører. En npm install kan udføre en postinstall-hook, der stjæler miljøvariabler eller SSH-nøgler.

Deaktivér vilkårlige installationsscripts i CI, og gennemgå alle pakker, der har brug for dem:

# 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

Kompromitterede værktøjer til byggeprocessen

Selve byggemiljøet er et mål med høj værdi. Hvis en angriber forgifter en compiler, et CI-kørselafbildning eller et plugin til byggeprocessen, indeholder alle de artefakter, den producerer, en bagdør, selv når din kildekode er ren.

Det klassiske eksempel er en trojaniseret opdateringsmekanisme, der signerer malware med en legitim nøgle til kodesignering, så ofrene accepterer den som ægte.

  • Behandl byggeinfrastrukturen som produktion, og hærd den fuldt ud
  • Brug midlertidige, reproducerbare kørselssystemer til byggeprocessen
  • Adskil signeringsnøgler fra byggeværten

Låsefiler og integritetshashværdier

En låsefil fastlåser præcise versioner og indholdshashværdier, så en ny opløsning ikke ubemærket kan udskifte et artefakt med et andet. Commit den altid, og lad CI verificere den i stedet for frit at opløse afhængighederne igen.

Integritetsfeltet gemmer en hashværdi; hvis den hentede tarball ikke stemmer overens, mislykkes installationen.

# 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

Sårbarhedsscanning af afhængigheder

Kendte sårbare versioner, der registreres som CVE'er, er den mest almindelige svaghed i softwareforsyningskæden. Værktøjer til softwarekompositionsanalyse (SCA) sammenholder dine opløste afhængigheder med sårbarhedsdatabaser.

Kør scanninger i CI, og lad byggeprocesser mislykkes ved kritiske fund:

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

Fastlåsning og indlejring

Flydende versionsintervaller (^1.2.0) lader nye udgivelser komme ind automatisk. Det er praktisk, men udsætter dig for en skadelig programrettelse.

  • Fastlås til præcise versioner, og gennemgå opgraderinger bevidst
  • Fastlås med en digest for containerafbildninger, ikke med ændrelige mærker som latest
  • Indlejr kritiske afhængigheder i dit eget kodelager eller spejl, så en sletning hos den oprindelige leverandør ikke kan ødelægge eller forgifte dig
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

Kontinuerlig overvågning og oprindelsessporbarhed

Sikring af softwareforsyningskæden er en løbende opgave, ikke en scanning, du kun udfører én gang. Du skal vide hvad du leverer, hvor det kommer fra, og hvornår det bliver sårbart.

  • Generér en SBOM for hver udgivelse (i næste lektion)
  • Dokumentér byggeprocessens oprindelse, så du kan bevise, hvordan et artefakt blev produceret
  • Abonnér på sikkerhedsmeddelelser, så en nyoffentliggjort CVE udløser en ny vurdering af byggeprocesser, der allerede er leveret

Trusselsmodellering af leverancekæden

Kortlæg hvert trin, hvor input, du ikke stoler på, kommer ind: udviklermaskiner, versionsstyring, afhængighedsregistre, byggesystemet, artefaktlageret og opdateringskanalen. Hvert af dem er et muligt injektionspunkt.

Spørg ved hvert trin: hvem kan skrive hertil, hvad ville en kompromittering give dem mulighed for, og hvordan ville jeg opdage det? Det giver en prioriteret liste over sikkerhedsforanstaltninger i stedet for en generisk tjekliste.

Hurtig test: afhængighedsforveksling

Test din forståelse af en almindelig type angreb på softwareforsyningskæden.

Opsamling: trusler mod softwareforsyningskæden

Du har lært, hvorfor afhængigheder er angrebsvektorer, og hvordan du kan begrænse denne eksponering.

  • Tillidsinversion betyder, at din sikkerhed afhænger af tredjeparter, du ikke har kontrol over
  • Vigtige trusler er typosquatting, afhængighedsforveksling, overtagelse af vedligeholderadgang, skadelige installationsscripts og kompromitterede værktøjer til byggeprocessen
  • De vigtigste forsvar er låsefiler med integritetshashværdier, SCA-scanning, præcis fastlåsning med digest, 2FA for udgivere og kontinuerlig overvågning

Dernæst registrerer du præcist, hvad din software indeholder, med en SBOM.

Gratis at komme i gang

Lær Cyber Security Academy med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
76
Lektioner
303

Ofte stillede spørgsmål

Er lektionen “Trusler i supply chain” gratis?

Ja — alle 3 lektioner i læringssporet Cyber Security Academy, inklusive “Trusler i supply chain”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Cyber Security Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Trusler i supply chain”?

Se, hvordan dependencies bliver til angrebsvektorer. Du øver dig i Cyber Security Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Cyber Security Academy?

Der kræves ingen tidligere erfaring. Cyber Security Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Trusler i supply chain”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Cyber Security Academy-lektion?

Ja. Alle Cyber Security Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Trusler i supply chain
  2. Software Bill of Materials (SBOM)
  3. Signering af dependencies og artefakter
  4. Sikring af CI/CD-pipelines
← Tilbage til Cyber Security Academy