Cyber Security Academy · Les

Bedreigingen in de supply chain

Hoe afhankelijkheden aanvalsvectoren worden

Les 1 van 413 stappen

Bedreigingen in de supply chain is een gratis Cyber Security Academy-les op CoddyKit. Dit is les 1 van 4. Je kunt 3 lessen uit dit leerpad gratis volledig lezen — daarna ontgrendelt CoddyKit PRO alle lessen, plus praktische oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cyber Security Academy. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cyber Security Academy bevat in totaal 4 lessen.

Wat is een aanval op de softwaretoeleveringsketen

Een aanval op de softwaretoeleveringsketen brengt een organisatie in gevaar, niet door die rechtstreeks binnen te dringen, maar door iets te beschadigen waarop de organisatie vertrouwt en dat ze gebruikt: een bibliotheek, een bouwtool, een basisimage van een container of een updateserver.

Moderne software wordt samengesteld uit honderden onderdelen van derden. Daarom wordt één vergiftigde schakel overgenomen door elke afnemer verderop in de keten. De aanvaller investeert één keer en bereikt veel slachtoffers.

  • Omkering van vertrouwen — de beveiligingsgrens ligt buiten je eigen code
  • Transitieve reikwijdte van de schade — één slecht pakket stroomt door naar duizenden bouwresultaten

De ijsberg van afhankelijkheden

Wanneer je één rechtstreekse afhankelijkheid toevoegt, haal je vaak tientallen transitieve afhankelijkheden binnen die je nooit zelf hebt gekozen. Een typische Node- of Python-toepassing vermeldt een handvol pakketten, maar komt uiteindelijk uit op honderden.

Geef de volledige opgeloste afhankelijkheidsboom weer, niet alleen het manifest, om te zien wat je werkelijk uitlevert:

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

# Python: pinned transitive closure
pip freeze

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

Typosquatting en naamsverwarring

Aanvallers publiceren kwaadaardige pakketten met namen die op populaire namen lijken, in de hoop op een fatale typefout.

  • Typosquatting — reqeusts in plaats van requests
  • Combosquatting — python-requests doet de echte naam na
  • Afhankelijkheidsverwarring — een openbaar pakket publiceren met dezelfde naam als je interne privé-pakket, zodat een verkeerd geconfigureerde oplosser de versie van de aanvaller ophaalt

Bescherm jezelf door een vertrouwd intern register vast te zetten en privé-pakketten met een scope of naamruimte te gebruiken.

Overname van accounts en beheerders

Een legitiem en breed vertrouwd pakket kan kwaadaardig worden wanneer het account van de beheerder wordt overgenomen of een kwaadwillende bijdrager publicatierechten krijgt.

Recente incidenten uit de praktijk laten zien dat aanvallers via phishing inloggegevens van beheerders buitmaken en daarna een besmette patchversie publiceren die tijdens de installatie tokens steelt.

  • Verplicht 2FA op alle accounts die publiceren
  • Geef de voorkeur aan pakketten met publicatietokens met een scope en beveiligde uitgaven
  • Let op onverwachte nieuwe beheerders bij kritieke afhankelijkheden

Kwaadaardige installatiescripts

In veel ecosystemen wordt tijdens de installatie code uitgevoerd, nog voordat je toepassing zelf draait. Met npm install kan een postinstall-hook worden uitgevoerd die omgevingsvariabelen of SSH-sleutels steelt.

Schakel willekeurige installatiescripts uit in CI en controleer elk pakket dat ze nodig heeft:

# 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

Gecompromitteerde bouwtools

De bouwomgeving zelf is een waardevol doelwit. Als een aanvaller een compiler, CI-uitvoeringsimage of bouwplug-in besmet, krijgt elk artefact dat daarmee wordt geproduceerd een achterdeur, zelfs wanneer je broncode schoon is.

Een klassiek voorbeeld is een met een trojan besmet update-mechanisme dat malware ondertekent met een legitieme code-ondertekeningssleutel, zodat slachtoffers die als authentiek accepteren.

  • Behandel de bouwinfrastructuur als een productieomgeving en beveilig die volledig
  • Gebruik tijdelijke, reproduceerbare bouwuitvoerders
  • Houd ondertekeningssleutels gescheiden van de bouwserver

Vergrendelingsbestanden en integriteitshashes

Een vergrendelingsbestand legt exacte versies en hashes van de inhoud vast, zodat het opnieuw oplossen van afhankelijkheden niet ongemerkt een ander artefact kan invoegen. Leg het altijd vast in versiebeheer en laat CI het controleren in plaats van afhankelijkheden vrijelijk opnieuw op te lossen.

Het integriteitsveld bevat een hash. Als het gedownloade tar-archief daar niet mee overeenkomt, mislukt de installatie.

# 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

Afhankelijkheden scannen op kwetsbaarheden

Versies met bekende kwetsbaarheden, bijgehouden als CVE's, vormen de meest voorkomende zwakke plek in de toeleveringsketen. Hulpmiddelen voor analyse van softwaresamenstelling (SCA) vergelijken je opgeloste afhankelijkheden met kwetsbaarheidsdatabases.

Voer scans uit in CI en laat het bouwen mislukken bij kritieke bevindingen:

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

Versies vastzetten en afhankelijkheden meeleveren

Zwevende versiebereiken (^1.2.0) laten nieuwe uitgaven automatisch binnenkomen. Dat is handig, maar stelt je bloot aan een kwaadaardige patch.

  • Zet vast op exacte versies en beoordeel upgrades bewust
  • Zet vast met een digest voor containerimages, niet met veranderlijke tags zoals latest
  • Neem kritieke afhankelijkheden op in je eigen codeopslag of spiegel, zodat het verwijderen ervan door de upstreambron je niet kan hinderen of besmetten
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613f

Doorlopende bewaking en herkomst

Het beveiligen van de toeleveringsketen is voortdurend werk, geen eenmalige scan. Je moet weten wat je uitlevert, waar het vandaan komt en wanneer het kwetsbaar wordt.

  • Genereer voor elke uitgave een SBOM (volgende les)
  • Leg de bouwherkomst vast, zodat je kunt aantonen hoe een artefact is geproduceerd
  • Abonneer je op beveiligingsadviezen, zodat een nieuw bekendgemaakte CVE leidt tot een nieuwe beoordeling van al uitgeleverde bouwresultaten

Dreigingsmodellering van de bouwstraat

Breng elke fase in kaart waarin niet-vertrouwde invoer binnenkomt: machines van ontwikkelaars, broncodebeheer, registers voor afhankelijkheden, het bouwsysteem, artefactopslag en het updatekanaal. Elk daarvan is een mogelijk injectiepunt.

Vraag bij elke fase: wie kan hier schrijven, wat zouden ze bij een overname kunnen doen en hoe zou ik dat detecteren? Zo ontstaat een geprioriteerde lijst met beheersmaatregelen in plaats van een algemene controlelijst.

Korte controle: afhankelijkheidsverwarring

Test je begrip van een veelvoorkomende categorie aanvallen op de toeleveringsketen.

Samenvatting: bedreigingen voor de toeleveringsketen

Je hebt geleerd waarom afhankelijkheden aanvalsoppervlakken vormen en hoe je die blootstelling kunt beperken.

  • Omkering van vertrouwen betekent dat je beveiliging afhankelijk is van derden die je niet beheert
  • Belangrijke bedreigingen zijn typosquatting, afhankelijkheidsverwarring, overname van beheerdersaccounts, kwaadaardige installatiescripts en gecompromitteerde bouwtools
  • Belangrijke verdedigingen zijn vergrendelingsbestanden met integriteitshashes, SCA-scans, exacte versies vastzetten met een digest, 2FA voor uitgevers en doorlopende bewaking

Vervolgens inventariseer je precies wat je software bevat met een SBOM.

Gratis beginnen

Leer Cyber Security Academy met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
76
Lessen
303

Veelgestelde vragen

Is de les “Bedreigingen in de supply chain” gratis?

Ja — je kunt hier op het web alle 3 lessen van het leerpad Cyber Security Academy, waaronder “Bedreigingen in de supply chain”, gratis volledig lezen. Daarna ontgrendelt CoddyKit PRO alle lessen, plus interactieve oefeningen met een ingebouwde code-editor en een AI-tutor die 24/7 beschikbaar is. De cursus Cyber Security Academy bevat in totaal 4 lessen.

Wat leer ik in “Bedreigingen in de supply chain”?

Hoe afhankelijkheden aanvalsvectoren worden Je oefent met Cyber Security Academy door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Cyber Security Academy te beginnen?

Ervaring vooraf is niet nodig. Cyber Security Academy op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 1 van 4.

Hoe lang duurt de les “Bedreigingen in de supply chain”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Cyber Security Academy?

Ja. Elke les over Cyber Security Academy bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. Bedreigingen in de supply chain
  2. Software Bill of Materials (SBOM)
  3. Dependencies en artefacten ondertekenen
  4. CI/CD-pipelines beveiligen
← Terug naar Cyber Security Academy