0Pricing
Cloud & IT Cert Prep · Lektion

Abhängigkeitssicherheit und Software Composition Analysis

Prüfen Sie Bibliotheken von Drittanbietern mit SCA-Tools, erzwingen Sie das Fixieren von Abhängigkeiten und integrieren Sie automatisierte Schwachstellenwarnungen in die CI/CD-Pipeline.

Abhängigkeitssicherheit und Software Composition Analysis ist eine kostenlose Cloud & IT Cert Prep-Lektion auf CoddyKit. Dies ist Lektion 3 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 Cloud & IT Cert Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Das Risiko von Open-Source-Abhängigkeiten

Moderne Anwendungen bestehen zu großen Teilen aus Bibliotheken und Frameworks von Drittanbietern aus dem Open-Source-Bereich. Eine typische Node.js-Anwendung kann über 1.000 transitive Abhängigkeiten haben; ein Java-Projekt bindet möglicherweise Hunderte Maven-Artefakte ein. Jede Abhängigkeit ist eine potenzielle Angriffsfläche. Die Log4Shell-Sicherheitslücke (CVE-2021-44228) in der Log4j-Bibliothek zeigte, dass eine einzige Abhängigkeit innerhalb weniger Tage nach ihrer Bekanntgabe Millionen von Anwendungen weltweit unmittelbar ausnutzbar machen konnte.

Was ist Software Composition Analysis?

Tools für die Software Composition Analysis (SCA) erfassen automatisch alle Open-Source-Komponenten einer Anwendung – einschließlich transitiver Abhängigkeiten (Abhängigkeiten Ihrer Abhängigkeiten) – und gleichen sie kontinuierlich mit Schwachstellendatenbanken auf bekannte CVEs ab. SCA erstellt eine Software Bill of Materials (SBOM), in der jede Komponente und Version aufgeführt ist. Dadurch lassen sich betroffene Systeme schnell identifizieren, wenn neue Schwachstellen bekannt gegeben werden.

# SCA tool usage examples:

# npm audit (Node.js):
# npm audit
# -> Reports vulnerabilities in package.json dependencies
# -> Shows severity, CVE ID, affected package, fix version

# OWASP Dependency-Check (Java/Python/etc.):
# dependency-check --project 'MyApp' --scan ./lib/
# -> Generates HTML/XML report with CVE findings

# Snyk scan:
# snyk test
# -> Reports vulns + 'snyk fix' applies patches automatically

Transitive Abhängigkeiten: das verborgene Risiko

Transitive Abhängigkeiten sind Bibliotheken, von denen Ihre direkten Abhängigkeiten abhängen und die Sie nicht ausdrücklich ausgewählt haben. Sie können direkt von Paket A abhängen, das von Paket B (Version 1.2) abhängt, das wiederum Paket C (Version 3.0 – eine anfällige Version) benötigt. Sie sind sich Paket C nicht bewusst, aber Ihre Anwendung führt es aus. SCA-Tools durchlaufen den vollständigen Abhängigkeitsbaum und machen diese verborgenen Schwachstellen sichtbar, auf die Entwickler keinen direkten Einblick haben.

# Dependency tree example:
# Your package.json:
#   'express': '^4.18.0'     (direct dependency)
#   'lodash':  '^4.17.21'   (direct dependency)

# Transitive dependencies (you didn't choose these):
#   express -> 'qs' 6.11.0       (URL parsing)
#   express -> 'body-parser' 1.20 -> 'qs' 6.11.0
#   lodash (self-contained in this case)

# If 'qs' 6.10.x had a prototype pollution CVE,
# you are vulnerable via express even though
# you never directly imported 'qs'.

Die Software Bill of Materials (SBOM)

Eine Software Bill of Materials (SBOM) ist ein formales, maschinenlesbares Verzeichnis aller Komponenten eines Softwareprodukts – vergleichbar mit einer Zutatenliste auf einem Lebensmittel. Zu den SBOM-Formaten gehören SPDX (Linux Foundation) und CycloneDX (OWASP). Die US Executive Order 14028 (2021) schrieb SBOMs für Software vor, die an die US-Bundesregierung verkauft wird. Mit einer SBOM können Sicherheitsteams sofort die Frage beantworten: „Welche unserer Produkte enthalten Log4j?“ – und erhalten innerhalb weniger Minuten statt nach tagelanger manueller Suche eine Antwort.

# Generate SBOM with syft:
# syft packages . -o spdx-json > sbom.spdx.json

# SBOM content example (SPDX JSON):
# {
#   'packages': [
#     { 'name': 'express',  'version': '4.18.2', 'license': 'MIT' },
#     { 'name': 'lodash',   'version': '4.17.21','license': 'MIT' },
#     { 'name': 'log4j-core','version': '2.14.0','license': 'Apache-2.0'}
#   ]
# }

# When Log4Shell announced, query SBOM:
# grep -i 'log4j-core' sbom.spdx.json -> FOUND in 3 projects

Festlegen von Abhängigkeitsversionen und Lock-Dateien

Das Festlegen von Abhängigkeitsversionen gibt exakte Versionen von Abhängigkeiten vor, statt flexible Bereiche zu verwenden (^1.2.3 oder *). Lock-Dateien (package-lock.json, yarn.lock, Pipfile.lock, Gemfile.lock) speichern die beim Installieren exakt aufgelöste Version jeder Abhängigkeit. Sie sollten in die Quellcodeverwaltung übernommen werden, damit jedes Teammitglied und jede CI/CD-Pipeline identische Abhängigkeitsversionen verwendet. So werden Supply-Chain-Angriffe verhindert, bei denen Paketversionen zwischen Installationen manipuliert werden.

# Version range vs pinned versions:

# FLEXIBLE (can pull different versions each install):
# 'express': '^4.0.0'   -> installs latest 4.x.x
# 'lodash': '*'         -> installs any version!

# PINNED (always same version):
# 'express': '4.18.2'   -> always exactly 4.18.2

# Lock file (package-lock.json):
# Records EXACT resolved version of every transitive dep.
# Commit this file! It ensures reproducible builds.
# Never .gitignore lock files (security anti-pattern).

Supply-Chain-Angriffe: Typosquatting und Dependency Confusion

Supply-Chain-Angriffe zielen auf das Ökosystem der Abhängigkeiten. Beim Typosquatting werden schädliche Pakete mit Namen veröffentlicht, die beliebten Paketen ähneln (z. B. lodahs statt lodash), in der Hoffnung, dass Entwickler den Namen falsch eingeben. Dependency-Confusion-Angriffe nutzen die Reihenfolge aus, in der Paketmanager Registries durchsuchen: Ein Angreifer veröffentlicht ein schädliches Paket mit demselben Namen wie ein internes privates Paket, aber mit einer höheren Versionsnummer. Dadurch installiert der Paketmanager stattdessen die schädliche öffentliche Version.

# Dependency Confusion Attack (Alex Birsan 2021):
# Company uses internal package 'company-utils' v1.0.0
# Hosted on: internal.registry.company.com

# Attacker publishes 'company-utils' v9.9.9 to npmjs.com
# (public registry with higher version number)

# npm install resolves: 'find highest version across ALL registries'
# -> Installs v9.9.9 from public npm (attacker's malicious package!)
# -> Instead of v1.0.0 from internal registry

# Defense: use namespace scoping (@company/utils)
# or configure npm to ONLY use internal registry for private packages

SCA-Tools auf dem Markt

In der Branche werden mehrere SCA-Tools häufig eingesetzt. Snyk bietet eine entwicklerfreundliche Prüfung von Abhängigkeiten mit automatischen PRs zur Behebung. OWASP Dependency-Check ist ein kostenloses, weit verbreitetes Tool für Java, .NET, Python und Ruby. GitHub Dependabot erstellt automatisch Pull Requests, um anfällige Abhängigkeiten in GitHub-Repositories zu aktualisieren. JFrog Xray und Sonatype Nexus IQ integrieren SCA in Artefakt-Repositories, um zu verhindern, dass anfällige Builds die Produktion erreichen.

SCA in CI/CD-Pipelines integrieren

SCA ist am wirksamsten, wenn sie als Quality Gate in der CI/CD-Pipeline integriert wird. Bei jedem Pull Request und jedem Build führt die Pipeline das SCA-Tool aus und schlägt fehl, wenn CVEs mit kritischem oder hohem Schweregrad in den Abhängigkeiten gefunden werden. Dieser „Shift-left“-Ansatz erkennt anfällige Abhängigkeiten, bevor sie die Produktion erreichen – nicht erst Monate später bei einer manuellen Sicherheitsprüfung oder nach einem Sicherheitsvorfall. Teams sollten klare Schwellenwerte für den Schweregrad von Schwachstellen festlegen, die bestimmen, welche Befunde ein Deployment blockieren und welche lediglich Warnungen erzeugen.

# GitHub Actions SCA pipeline step:
# - name: Run Snyk SCA scan
#   uses: snyk/actions/node@master
#   env:
#     SNYK_TOKEN: ${{ secrets.SNYK_TOKEN }}
#   with:
#     args: --severity-threshold=high
#             --fail-on=upgradable
# # Build fails if any HIGH or CRITICAL vuln found
# # that has an available fix (--fail-on=upgradable)
# # No fix available? Generates warning, doesn't block
# # (acknowledging risk explicitly is better than blocking forever)

Zustand von Open-Source-Paketen bewerten

Bewerten Sie vor dem Hinzufügen einer Abhängigkeit deren Sicherheitsstatus anhand mehrerer Kriterien. Wartungsaktivität: Wird das Projekt aktiv gepflegt? Wann erfolgten der letzte Commit und die letzte Veröffentlichung? Bekannte Schwachstellenhistorie: Wie viele CVEs gab es und wie schnell wurden sie behoben? Downloadvolumen: Weit verbreitete Pakete stehen stärker unter Sicherheitsbeobachtung. Anzahl der Abhängigkeiten: Pakete mit weniger Abhängigkeiten bringen ein geringeres Transitivitätsrisiko mit sich. Das OpenSSF Scorecard bietet eine automatisierte Bewertung der Sicherheitspraktiken von Open-Source-Projekten.

Strategien zur Behebung von Schwachstellen

Wenn SCA eine anfällige Abhängigkeit identifiziert, gibt es mehrere Strategien zur Behebung. Aktualisieren Sie auf eine gepatchte Version – sofern verfügbar, ist dies die bevorzugte Option. Virtuelles Patching durch WAF-Regeln kann bekannte Angriffswege eindämmen, während ein Update vorbereitet wird. Entfernen Sie die Abhängigkeit, wenn sie nicht mehr benötigt wird. Akzeptieren Sie das Risiko mit einer dokumentierten Begründung, wenn die Schwachstelle im konkreten Nutzungskontext nicht ausnutzbar ist (z. B. eine serverseitige Schwachstelle in einer clientseitigen Bibliothek). Lassen Sie kritische Schwachstellen niemals ohne dokumentierte Risikoakzeptanz unbehandelt.

Lizenz-Compliance bei Abhängigkeiten

SCA-Tools erfüllen einen doppelten Zweck: Sie identifizieren Sicherheitslücken und weisen auf Lizenz-Compliance-Probleme bei Open-Source-Abhängigkeiten hin. Zu den häufig problematischen Lizenzen gehören GPL v2/v3 (Copyleft – bei Weitergabe muss auch Ihr Produkt als Open Source veröffentlicht werden), AGPL (erweitert GPL auf Netzwerkdienste) und SSPL. Die Verwendung einer GPL-lizenzierten Bibliothek in proprietärer kommerzieller Software ohne kommerzielle Lizenz kann erhebliche rechtliche Haftungsrisiken schaffen. SCA-Tools wie FOSSA, Black Duck und WhiteSource automatisieren die Lizenzprüfung parallel zur Erkennung von Schwachstellen und gewährleisten so die Einhaltung der Open-Source-Verpflichtungen.

# License compliance risk levels:
# PERMISSIVE (low risk for commercial use):
#   MIT, Apache 2.0, BSD 2/3-Clause
#   -> Can use in proprietary code, just keep attribution

# WEAK COPYLEFT (medium risk - check usage):
#   LGPL -> can link dynamically without open-sourcing your code
#   MPL 2.0 -> modifications to MPL files must be open-sourced

# STRONG COPYLEFT (high risk for proprietary products):
#   GPL v2, GPL v3 -> if you distribute code using GPL library,
#                     your entire product must also be GPL
#   AGPL -> extends GPL to SaaS/network services

# SCA policy: block AGPL/GPL in commercial product
# -> Review any exception requests manually

Kurzer Wissenstest

Testen Sie Ihr Verständnis der CompTIA-Security+-Konzepte (SY0-701) aus dieser Lektion.

Lektionszusammenfassung

In dieser Lektion haben Sie gelernt: SCA-Tools durchsuchen den vollständigen Abhängigkeitsbaum einschließlich transitiver Abhängigkeiten nach bekannten CVEs, SBOMs liefern ein maschinenlesbares Verzeichnis und ermöglichen eine schnelle Reaktion, wenn neue Schwachstellen bekannt gegeben werden, und die Integration von SCA als Quality Gate in der CI/CD-Pipeline erkennt anfällige Abhängigkeiten, bevor sie die Produktion erreichen. Als Nächstes beschäftigen wir uns mit DevSecOps und damit, wie Sicherheitskontrollen im gesamten CI/CD-Prozess nach links verschoben werden können.

Häufig gestellte Fragen

Ist die Lektion „Abhängigkeitssicherheit und Software Composition Analysis“ kostenlos?

Ja — der vollständige Text von „Abhängigkeitssicherheit und Software Composition Analysis“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cloud & IT Cert Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cloud & IT Cert Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Abhängigkeitssicherheit und Software Composition Analysis“?

Prüfen Sie Bibliotheken von Drittanbietern mit SCA-Tools, erzwingen Sie das Fixieren von Abhängigkeiten und integrieren Sie automatisierte Schwachstellenwarnungen in die CI/CD-Pipeline. Du übst Cloud & IT Cert Prep 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 Cloud & IT Cert Prep zu starten?

Keine Vorkenntnisse erforderlich. Cloud & IT Cert Prep 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 3 von 4.

Wie lange dauert die Lektion „Abhängigkeitssicherheit und Software Composition Analysis“?

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 Cloud & IT Cert Prep-Lektion Code schreiben und ausführen?

Ja. Jede Cloud & IT Cert Prep-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

  1. Eingabevalidierung und Ausgabekodierung
  2. Sichere Verwaltung von Secrets und Umgebungsvariablen
  3. Abhängigkeitssicherheit und Software Composition Analysis
  4. DevSecOps: Sicherheit in Pipelines nach links verlagern
← Zurück zu Cloud & IT Cert Prep