- 1 Section
- 10 Lessons
- unbegrenzt
- Sichere Softwareentwicklung (Secure Coding)10
Dependency Management & Supply Chain Security
Moderne Anwendungen bestehen zu 80–90 % aus fremdem Code. Ein Node.js-Projekt mit drei direkten Abhängigkeiten hat typischerweise 500–1.000 transitive Abhängigkeiten – Pakete, die von den Paketen abhängen, die von den Paketen abhängen. Jedes davon ist ein potenzielles Angriffsziel. Die Schwachstelle muss nicht in deinem eigenen Code liegen: Sie liegt in einer Bibliothek, die du vor drei Jahren installiert hast und seitdem vergessen hast.
Supply Chain Security (Lieferkettensicherheit) hat durch Vorfälle wie Log4Shell (2021, Log4j – Remote Code Execution in einer Java-Logging-Bibliothek, die von Tausenden Anwendungen verwendet wurde) und SolarWinds (2020, kompromittiertes Update eines IT-Management-Tools) internationales Aufsehen erlangt. Das BSI und NIST betonen Supply Chain Security als einen der kritischsten Sicherheitsbereiche der nächsten Jahre.
1) Transitive Abhängigkeiten: ein Beispiel
Der folgende Abhängigkeitsbaum zeigt ein kleines Node.js-Projekt mit drei direkten Abhängigkeiten – und den transitiven Abhängigkeiten darunter. Klicke auf ein Paket für Details. Rot markierte haben bekannte Schwachstellen.
npm audit (Node.js) analysiert alle installierten Pakete gegen die npm-Schwachstellendatenbank und listet bekannte CVEs mit Schweregrad. Ähnliches bieten pip audit (Python), bundler-audit (Ruby), mvn dependency-check (Java). Diese Tools sollten in jeder CI/CD-Pipeline laufen.2) Supply Chain Angriffs-Typen
Angreifer haben verschiedene Wege, Schadcode über Abhängigkeiten einzuschleusen. Das Verstehen der Angriffsvektoren hilft bei der richtigen Gegenmaßnahme.
3) Schutzmaßnahmen
package-lock.json (npm), Pipfile.lock (Python), go.sum (Go) fixieren exakte Versionen inklusive Prüfsummen. Nur diese Versionen werden installiert – kein automatisches Upgrade auf potenziell kompromittierte Folgeversionen.npm audit, Dependabot (GitHub), Snyk, OWASP Dependency-Check in jeder Build-Pipeline. Bei kritischen CVEs: Build schlägt fehl und blockiert das Release.--ignore-scripts verhindert automatische Ausführung von Install-Scripts. Subresource Integrity (SRI) für CDN-Ressourcen: <script src="..." integrity="sha256-..."> – Browser prüft Hash.Zusammenfassung
Moderne Anwendungen haben hunderte transitive Abhängigkeiten – jede ist ein potenzielles Angriffsziel. Wichtigste Maßnahmen: Lockfiles nutzen, automatisierte CVE-Scans in CI/CD (npm audit, Dependabot, Snyk), SBOM erstellen, Paket-Anzahl minimieren, Integrität prüfen (SRI, Signaturverifikation). Eng verwandt mit OWASP A06 (Outdated Components) und A08 (Software Integrity Failures). Für das Testen von Anwendungen auf bekannte Schwachstellen: Penetration Testing.
