Bedrohungen der Lieferkette
Wie Abhängigkeiten zu Angriffsvektoren werden
Bedrohungen der Lieferkette ist eine kostenlose Cyber Security Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cyber Security Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Angriff auf die Software-Lieferkette
Ein Angriff auf die Software-Lieferkette kompromittiert eine Organisation nicht durch einen direkten Angriff, sondern indem etwas beschädigt wird, dem sie vertraut und das sie verwendet: eine Bibliothek, ein Build-Tool, ein Container-Basis-Image oder ein Update-Server.
Da moderne Software aus Hunderten Komponenten von Drittanbietern zusammengesetzt wird, wird eine einzige vergiftete Verbindung an alle nachgelagerten Nutzer weitergegeben. Der Angreifer investiert einmal und erreicht damit viele Opfer.
- Vertrauensumkehr — die Sicherheitsgrenze verlagert sich außerhalb Ihres eigenen Codes
- Trans Siver Schadensradius — ein schädliches Paket gelangt in Tausende Builds
Der Abhängigkeits-Eisberg
Wenn Sie eine direkte Abhängigkeit hinzufügen, ziehen Sie oft Dutzende transitive Abhängigkeiten nach, die Sie nie selbst ausgewählt haben. Eine typische Node- oder Python-Anwendung deklariert eine Handvoll Pakete, löst aber Hunderte auf.
Listen Sie den vollständig aufgelösten Abhängigkeitsbaum auf, nicht nur das Manifest, um zu sehen, was Sie tatsächlich ausliefern:
# npm: full resolved dependency tree
npm ls --all
# Python: pinned transitive closure
pip freeze
# count transitive nodes
npm ls --all --parseable | wc -lTyposquatting und Verwechslung
Angreifer veröffentlichen bösartige Pakete mit Namen, die beliebten Paketen ähneln, und setzen auf einen folgenschweren Tippfehler.
- Typosquatting —
reqeustsstattrequests - Combosquatting —
python-requestsahmt den echten Namen nach - Dependency Confusion — ein öffentliches Paket mit demselben Namen wie Ihr internes privates Paket wird veröffentlicht, sodass ein falsch konfigurierter Resolver die Version des Angreifers abruft
Schützen Sie sich, indem Sie eine vertrauenswürdige interne Registry fest vorgeben und private Pakete mit Scope oder Namespace verwenden.
Übernahme von Konten und Maintainer-Zugängen
Ein legitimes, weithin vertrauenswürdiges Paket kann bösartig werden, wenn das Konto seines Maintainers kompromittiert wird oder ein bösartiger Mitwirkender Veröffentlichungsrechte erhält.
Aktuelle Vorfälle aus der Praxis zeigen, dass Angreifer Zugangsdaten von Maintainer-Konten durch Phishing erbeuten und anschließend ein vergiftetes Patch-Release veröffentlichen, das während der Installation Token abgreift.
- Verlangen Sie 2FA für alle Konten, die Pakete veröffentlichen
- Bevorzugen Sie Pakete mit bereichsbezogenen Veröffentlichungstoken und geschützten Releases
- Achten Sie bei kritischen Abhängigkeiten auf unerwartete neue Maintainer
Bösartige Installationsskripte
Viele Ökosysteme führen zum Installationszeitpunkt Code aus, noch bevor Ihre Anwendung überhaupt läuft. Ein npm install kann einen postinstall-Hook ausführen, der Umgebungsvariablen oder SSH-Schlüssel stiehlt.
Deaktivieren Sie beliebige Installationsskripte in CI und prüfen Sie jedes Paket, das solche Skripte benötigt:
# 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-scriptsKompromittierte Build-Werkzeuge
Die Build-Umgebung selbst ist ein besonders lohnendes Ziel. Wenn ein Angreifer einen Compiler, ein CI-Runner-Image oder ein Build-Plugin vergiftet, ist jedes von ihm erzeugte Artefakt mit einer Hintertür versehen, selbst wenn Ihr Quellcode sauber ist.
Das klassische Beispiel ist ein mit einem Trojaner versehener Aktualisierungsmechanismus, der Schadsoftware mit einem legitimen Code-Signaturschlüssel signiert, sodass die Opfer sie als echt akzeptieren.
- Behandeln Sie die Build-Infrastruktur wie die Produktion und härten Sie sie umfassend
- Verwenden Sie kurzlebige, reproduzierbare Build-Runner
- Trennen Sie Signaturschlüssel vom Build-Host
Lockfiles und Integritätshashes
Ein Lockfile legt exakte Versionen und Inhaltshashes fest, sodass eine erneute Auflösung nicht unbemerkt ein anderes Artefakt einschleusen kann. Übernehmen Sie das Lockfile immer in das Versionskontrollsystem und lassen Sie es von der CI prüfen, statt Abhängigkeiten frei neu aufzulösen.
Das Integritätsfeld enthält einen Hash. Wenn das heruntergeladene Tar-Archiv nicht übereinstimmt, schlägt die Installation fehl.
# 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-lockfileSchwachstellenprüfung von Abhängigkeiten
Bekannte verwundbare Versionen, die als CVEs erfasst werden, sind die häufigste Schwachstelle in der Lieferkette. Tools für Software Composition Analysis (SCA) gleichen Ihre aufgelösten Abhängigkeiten mit Schwachstellendatenbanken ab.
Führen Sie die Prüfungen in der CI aus und lassen Sie Builds bei kritischen Befunden fehlschlagen:
# 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 .Pinnen und Vendoring
Flexible Versionsbereiche (^1.2.0) lassen automatisch neue Releases einfließen. Das ist praktisch, setzt Sie aber einem bösartigen Patch-Release aus.
- Pinnen Sie auf exakte Versionen und prüfen Sie Aktualisierungen bewusst
- Pinnen Sie nach Digest bei Container-Images, nicht nach veränderlichen Tags wie
latest - Vendorn Sie kritische Abhängigkeiten in Ihr eigenes Repository oder einen Mirror, damit eine Löschung im Upstream Sie weder blockieren noch gefährden kann
# pin a container image by immutable digest
FROM python:3.12-slim@sha256:1d52838af602b4b5a831beb13a0e4d073280665ea7be7f69ce2382f29c5a613fKontinuierliche Überwachung und Provenienz
Die Absicherung der Lieferkette ist eine fortlaufende Aufgabe und keine einmalige Prüfung. Sie müssen wissen, was Sie ausliefern, woher es stammt und wann es verwundbar wird.
- Erstellen Sie für jedes Release eine SBOM (in der nächsten Lektion)
- Erfassen Sie die Build-Provenienz, damit Sie nachweisen können, wie ein Artefakt erzeugt wurde
- Abonnieren Sie Sicherheitshinweise, damit eine neu veröffentlichte CVE eine erneute Bewertung bereits ausgelieferter Builds auslöst
Bedrohungsmodellierung der Pipeline
Erfassen Sie jede Phase, in der nicht vertrauenswürdige Eingaben hineingelangen: Entwicklerrechner, Quellcodeverwaltung, Paket-Registries, das Build-System, die Artefaktspeicherung und der Update-Kanal. Jede dieser Phasen kann ein möglicher Injektionspunkt sein.
Fragen Sie für jede Phase: Wer kann hier schreiben, was könnte diese Person bei einer Kompromittierung tun, und wie würde ich das erkennen? So entsteht eine priorisierte Liste von Kontrollen statt einer allgemeinen Checkliste.
Kurze Überprüfung: Dependency Confusion
Testen Sie Ihr Verständnis einer häufigen Klasse von Angriffen auf die Software-Lieferkette.
Zusammenfassung: Bedrohungen der Software-Lieferkette
Sie haben gelernt, warum Abhängigkeiten Angriffsvektoren sind und wie Sie dieses Risiko reduzieren.
- Vertrauensumkehr bedeutet, dass Ihre Sicherheit von Drittanbietern abhängt, die Sie nicht kontrollieren
- Zu den wichtigsten Bedrohungen gehören Typosquatting, Dependency Confusion, die Übernahme von Maintainer-Konten, bösartige Installationsskripte und kompromittierte Build-Werkzeuge
- Zu den wichtigsten Schutzmaßnahmen gehören Lockfiles mit Integritätshashes, SCA-Prüfungen, exaktes Pinnen nach Digest, 2FA für Paketveröffentlicher und kontinuierliche Überwachung
Als Nächstes erfassen Sie mit einer SBOM genau, was Ihre Software enthält.
Lerne Cyber Security Academy mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 76
- Lektionen
- 303
Häufig gestellte Fragen
Ist die Lektion „Bedrohungen der Lieferkette“ kostenlos?
Ja — der vollständige Text von „Bedrohungen der Lieferkette“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cyber Security Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cyber Security Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Bedrohungen der Lieferkette“?
Wie Abhängigkeiten zu Angriffsvektoren werden Du übst Cyber Security Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cyber Security Academy zu starten?
Keine Vorkenntnisse erforderlich. Cyber Security Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Bedrohungen der Lieferkette“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cyber Security Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cyber Security Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Bedrohungen der Lieferkette
- Software Bill of Materials (SBOM)
- Signieren von Abhängigkeiten und Artefakten
- CI/CD-Pipelines absichern