> ## Documentation Index
> Fetch the complete documentation index at: https://docs.corgea.app/llms.txt
> Use this file to discover all available pages before exploring further.

# Dependency-Scanning (SCA)

> Dependency-Scanning (Software Composition Analysis, SCA) erkennt bekannte Schwachstellen in Drittanbieterabhängigkeiten und Bibliotheken.

## Übersicht

* **Funktion**: Dependency-Scanning (Software Composition Analysis, SCA) erkennt bekannte Schwachstellen in Drittanbieterabhängigkeiten und Bibliotheken. Es analysiert Manifestdateien wie `package.json`, `requirements.txt` und `pom.xml` und liefert CVE-IDs, CVSS-Scores sowie Hinweise zur Behebung.

* **Zielgruppe**: Die Funktion richtet sich an Sicherheitsteams, Entwickler, DevOps Engineers und andere Verantwortliche für Anwendungssicherheit. Besonders hilfreich ist sie für Projekte mit zahlreichen Drittanbieterabhängigkeiten.

## Zentrale Funktionen und Vorteile

* **Umfassende Ökosystemabdeckung**: Scannt Abhängigkeiten in mehr als 25 Programmiersprachen und Ökosystemen, darunter Python, JavaScript/Node.js, Java, Go, Ruby, PHP, C# und Swift

<Accordion title="Alle Schwachstellen-Datenquellen anzeigen">
  - **Autoritative Datenquellen**: Nutzt mehrere vertrauenswürdige Schwachstellendatenbanken, darunter:
    * GitHub Advisory Database (CC-BY 4.0)
    * PyPI Advisory Database (CC-BY 4.0)
    * Go Vulnerability Database (CC-BY 4.0)
    * Rust Advisory Database (CC0 1.0)
    * Global Security Database (CC0 1.0)
    * OSS-Fuzz (CC-BY 4.0)
    * Rocky Linux (BSD)
    * AlmaLinux (MIT)
    * Haskell Security Advisories (CC0 1.0)
    * RConsortium Advisory Database (Apache 2.0)
    * OpenSSF Malicious Packages (Apache 2.0)
    * Python Software Foundation Database (CC-BY 4.0)
    * Bitnami Vulnerability Database (Apache 2.0)
    * Ubuntu (GPL v3)
    * Und viele weitere maßgebliche Quellen
</Accordion>

* **Umfangreiche Schwachstelleninformationen**: Bietet detaillierte Informationen zu Schwachstellen, einschließlich:
  * CVE-Kennungen und alternative Schwachstellen-IDs
  * CVSS-Scores und Schweregrade (Critical, High, Medium, Low)
  * Betroffene Paketversionen und verfügbare Updates
  * Detaillierte Beschreibungen von Schwachstellen und Referenzen
  * Hinweise von Quellen wie dem GitHub Advisory Database, NVD und Sicherheitsbulletins der Anbieter, sofern verfügbar
  * Veröffentlichungsdaten und externe Links
* **Intelligente Scan-Logik**: Erkennt vorhandene Abhängigkeitsdateien automatisch und optimiert die Scan-Performance

## Einrichtung

<Info>Das Projekt muss mindestens eine unterstützte Abhängigkeitsdatei enthalten. Außerdem benötigen Sie die Berechtigung zum Ausführen von Security-Scans.</Info>

### Konfigurationsschritte

<Steps>
  <Step title="Abhängigkeitsdateien überprüfen">
    Stellen Sie sicher, dass Ihr Projekt unterstützte Abhängigkeitsdateien enthält:

    <Tabs>
      <Tab title="Python">
        ```text theme={null}
        requirements.txt
        Pipfile
        Pipfile.lock
        pyproject.toml
        poetry.lock
        ```
      </Tab>

      <Tab title="JavaScript/Node.js">
        ```text theme={null}
        package.json
        package-lock.json
        yarn.lock
        pnpm-lock.yaml
        ```
      </Tab>

      <Tab title="Java">
        ```text theme={null}
        pom.xml
        build.gradle
        build.gradle.kts
        gradle.lockfile
        ```
      </Tab>

      <Tab title="Go">
        ```text theme={null}
        go.mod
        go.sum
        ```
      </Tab>

      <Tab title="Ruby">
        ```text theme={null}
        Gemfile
        Gemfile.lock
        ```
      </Tab>

      <Tab title="PHP">
        ```text theme={null}
        composer.json
        composer.lock
        ```
      </Tab>

      <Tab title="C#">
        ```text theme={null}
        *.csproj
        packages.config
        ```
      </Tab>

      <Tab title="Swift">
        ```text theme={null}
        Package.swift
        Package.resolved
        ```
      </Tab>
    </Tabs>
  </Step>

  <Step title="Scan-Bereich konfigurieren">
    Wählen Sie aus, ob die Abhängigkeitsprüfung in vollständigen oder teilweisen Scans enthalten sein soll
  </Step>

  <Step title="Benachrichtigungen einrichten">
    Konfigurieren Sie, wie Sie über neue Schwachstellen benachrichtigt werden möchten
  </Step>
</Steps>

## Verwendung

<Note>Zum Anzeigen von Scan-Abhängigkeiten sowie zum Herunterladen von SBOM- und CSV-Dateien ist die Berechtigung **View SCA Issue** erforderlich. Bei aktiviertem Project Access Control benötigen Sie außerdem Zugriff auf das Projekt.</Note>

### Zentrale Workflows

1. **Automatische Erkennung**: Das System identifiziert automatisch Abhängigkeitsdateien in Ihrem Projektverzeichnis
2. **Umfassende Überprüfung**: Analysiert alle unterstützten Abhängigkeitsdateien und gleicht sie mit Schwachstellendatenbanken ab
3. **Schwachstellenverarbeitung**: Reichert Scan-Ergebnisse mit zusätzlichen Sicherheitsinformationen an
4. **Issue-Erstellung**: Erstellt für jede gefundene Schwachstelle ein nachverfolgbares Security-Issue
5. **Reporting**: Erstellt Schwachstellenberichte mit konkreten Empfehlungen zur Behebung

### Filter der Dependencies-Ansicht

<img src="https://mintcdn.com/corgea/Ol14XvOQ0I7r7nLK/images/dependencies/dependencies_view.png?fit=max&auto=format&n=Ol14XvOQ0I7r7nLK&q=85&s=407616b72ca6c9419a9d4c7ae9ff35e3" alt="Ansicht der Abhängigkeiten" width="3586" height="2066" data-path="images/dependencies/dependencies_view.png" />

Verwenden Sie Filter in der Abhängigkeitsansicht, um SCA-Ergebnisse einzugrenzen:

* **Suche**: Finden Sie Probleme nach CVE, Paketname oder Zusammenfassung
* **Schweregrad**: Konzentration auf Kritisch, Hoch, Mittel oder Niedrig
* **SLA-Status**: Konzentration auf Abhängigkeitsprobleme, die überfällig oder eskaliert sind, wenn ein SCA-SLA gilt
* **Ökosystem**: Ergebnisse auf ein bestimmtes Paketökosystem beschränken
* **Projekt**: Nach einem bestimmten Projekt nach Namen filtern (zeigt nur Projekte, auf die Sie zugreifen können)
* **Lizenz**: Nach Abhängigkeitslizenz filtern
* **Abhängigkeitstyp**: Direkte, transitive, Entwicklungs- oder optionale Abhängigkeiten anzeigen
* **Erreichbarkeit**: Zeigt Probleme an, die erreichbar, unerreichbar, ungenutzt oder noch in der Analyse sind (siehe [Erreichbarkeitsanalyse](#reachability-analysis))
* **Verfügbare Fixes**: Zeigt nur Probleme mit bekanntem Fix an

**Scans Affected** zählt die unterschiedlichen Scans, in denen eine Schwachstelle erkannt wurde, auch wenn derselbe Scan sie in mehreren Paketen oder Manifesten findet.

### Abhängigkeiten in CSV exportieren

Klicken Sie in der Dependencies-Ansicht auf **Export CSV**, um die Ergebnisse der aktuellen Suche und Filter herunterzuladen. Der Export enthält Paket- und Schwachstellendetails, Abhängigkeitstyp, Reachability, Projekt, Branch und den betroffenen Manifestpfad. Bei aktiviertem Project Access Control enthält er nur zugängliche Projekte.

### Transitive Abhängigkeiten

Die meisten Schwachstellen moderner Projekte befinden sich in **transitiven** Abhängigkeiten: Paketen, die nicht direkt hinzugefügt, sondern von anderen Abhängigkeiten eingebunden wurden. Corgea löst den vollständigen Abhängigkeitsgraphen auf und zeigt, wodurch jedes Paket eingebunden wird.

#### Abhängigkeitstypen

In den Scan-Ergebnissen enthalten Paketgruppen Abzeichen, die anzeigen, woher eine verwundbare Abhängigkeit stammt:

* **Direkt**: Das verwundbare Paket ist eine direkte Abhängigkeit, die in Ihrem Manifest deklariert ist (zum Beispiel `package.json` oder `pom.xml`).
* **Transitiv**: Das verwundbare Paket wird indirekt über eine andere Abhängigkeit eingebunden.
* **Entwickler**: Das verwundbare Paket wird als Entwicklungsabhängigkeit (Build, Test oder Tooling) und nicht zur Laufzeit verwendet.
* **Optional**: Das verwundbare Paket ist als optionale Abhängigkeit gekennzeichnet.

Auf der Detailseite eines SCA-Issues wird der Abhängigkeitstyp zusammen mit den Issue-Details angezeigt. Bei verschachtelten Abhängigkeiten erscheint das Badge **Sub-dependencies**.

#### Wie der Abhängigkeitsgraph erstellt wird

Corgea erstellt den Abhängigkeitsbaum, indem die von Ihnen deklarierten Pakete mit den Paketen kombiniert werden, die Ihr Build tatsächlich auflöst:

1. **Direkte Abhängigkeiten** werden aus Ihren Manifestdateien gelesen (`package.json`, `pom.xml`, `requirements.txt`, `go.mod`, `Gemfile` und andere).
2. **Transitive Abhängigkeiten** werden aus Lockfiles wie `package-lock.json`, `yarn.lock`, `poetry.lock` oder `go.sum` und einer generierten Software Bill of Materials (SBOM) aufgelöst. Diese enthalten die exakten Versionen und Parent-Child-Beziehungen.
3. Fehlt ein Lockfile, versucht Corgea für unterstützte Ökosysteme, **automatisch eines zu generieren**, damit transitive Pakete dennoch analysiert werden können.

Für jede Abhängigkeit speichert Corgea das einbindende **Parent-Paket** und die **direkte Root-Abhängigkeit**. Dadurch kann Corgea den vollständigen Pfad vom Manifest bis zum verwundbaren Paket anzeigen.

#### Abhängigkeitsbaum-Ansicht

Die Ansicht "Abhängigkeiten" kann Ihre Abhängigkeiten als zusammenklappbaren **Baum** darstellen, sodass Sie eine direkte Abhängigkeit erweitern können, um alles zu sehen, was sie mitbringt:

```text theme={null}
express@4.17.1 (direct)
├── lodash@4.17.15 (transitive)
└── qs@6.7.0 (transitive)
    └── side-channel@1.0.4 (transitive)
```

Die Suche in der Baumansicht hebt übereinstimmende Pakete hervor und hält deren übergeordnete Elemente sichtbar, sodass Sie immer sehen können, *warum* ein verwundbares Paket vorhanden ist. Bei sehr großen Projekten (mehr als \~10.000 Abhängigkeiten) wird die Baumansicht aus Leistungsgründen nicht gerendert; verwenden Sie stattdessen die Listen- und Suchansichten.

### Unterstützte Ökosysteme

<Accordion title="Alle 25+ unterstützten Ökosysteme anzeigen">
  Die Funktion zur Abhängigkeitsüberprüfung unterstützt die folgenden Ökosysteme:

  * **AlmaLinux** - Enterprise Linux Pakete
  * **Alpine** - Alpine Linux Pakete
  * **Android** - Android App-Abhängigkeiten
  * **Bitnami** - Bitnami Anwendungspakete
  * **crates.io** - Rust Pakete
  * **Curl** - cURL-Bibliotheksschwachstellen
  * **Debian GNU/Linux** - Debian-Pakete
  * **Git** - Git-Repositories (einschließlich C/C++)
  * **GitHub Actions** - GitHub Action-Workflows
  * **Go** - Go-Module und Pakete
  * **Haskell** - Haskell-Pakete
  * **Hex** - Elixir-Pakete
  * **Linux-Kernel** - Linux-Kernel-Schwachstellen
  * **Maven** - Java-Maven-Abhängigkeiten
  * **npm** - Node.js-Pakete
  * **NuGet** - .NET-Pakete
  * **OSS-Fuzz** - Googles kontinuierlicher Fuzzing-Dienst
  * **Packagist** - PHP-Pakete
  * **Pub** - Dart-Pakete
  * **PyPI** - Python-Pakete
  * **Python** - Sicherheitslücken in der Python-Sprache
  * **R** - R-Pakete (CRAN und Bioconductor)
  * **Rocky Linux** - Rocky Linux-Pakete
  * **RubyGems** - Ruby-Pakete
  * **SwiftURL** - Swift-Pakete
  * **Ubuntu OS** - Ubuntu-Pakete
</Accordion>

### Beispiel für ein Multi-Ökosystem-Projekt

```text Enterprise Application Structure theme={null}
Enterprise Application:
├── backend/
│   ├── requirements.txt        ✓ Python dependencies
│   ├── pom.xml                 ✓ Java dependencies
│   └── go.mod                  ✓ Go dependencies
├── frontend/
│   ├── package.json            ✓ Node.js dependencies
│   └── package-lock.json       ✓ Lock file
├── mobile/
│   └── Gemfile                 ✓ Ruby dependencies
└── infrastructure/
    └── docker-compose.yml      ✓ Container dependencies
```

### Aufschlüsselung der Schwere von Sicherheitslücken

<Warning>**Kritisch**: Sofortiges Handeln erforderlich, potenziell vollständige Systemkompromittierung</Warning>

* **Hoch**: Sollte zeitnah adressiert werden, erheblicher Sicherheitsimpact
* **Mittel**: Sollte in regelmäßigen Wartungszyklen behoben werden
* **Niedrig**: Geringfügige Probleme, die bei Gelegenheit behoben werden können

## Erreichbarkeitsanalyse

Ein verwundbares Paket in Ihrem Abhängigkeitsbaum bedeutet nicht immer, dass Ihre Anwendung tatsächlich gefährdet ist. Die Erreichbarkeitsanalyse hilft Ihnen, Prioritäten zu setzen, indem sie bestimmt, ob eine Schwachstelle tatsächlich durch Ihren Code ausgelöst werden kann.

Für jede verwundbare **direkte** Abhängigkeit beantwortet Corgea zwei Fragen:

1. **Wird das Paket verwendet?** Corgea sucht nach Importen und Verwendungen des Pakets in Ihrem Code. Ein Paket, das deklariert, aber nie importiert wird, birgt ein wesentlich geringeres Risiko.
2. **Ist die verwundbare Funktion erreichbar?** Für verwendete Pakete analysiert Corgea, ob Ihr Code tatsächlich die spezifischen Funktionen aufruft, die von der Schwachstelle betroffen sind.

Corgea behandelt Utility-Bibliotheken und Frameworks unterschiedlich. Bei **Utility-Bibliotheken** kann es direkte Aufrufe verwundbarer Funktionen erkennen. Bei **Frameworks**, deren verwundbarer Code tief in internen Abläufen ausgeführt wird, lautet der Reachability-Status *unsure*, da sich allein anhand Ihres Codes keine eindeutige Aussage treffen lässt.

<Note>Die Erreichbarkeitsanalyse wird für direkte Abhängigkeiten durchgeführt. Schwachstellen in transitiven Abhängigkeiten werden gemeldet und können behoben werden (siehe [Empfohlene Korrekturen](#fix-recommendations)), werden jedoch nicht einzeln auf Erreichbarkeit analysiert.</Note>

### Erreichbarkeitszustände

Jedes analysierte Problem wird einem der folgenden Zustände zugeordnet, die Sie auch als Filter in der Ansicht "Abhängigkeiten" verwenden können:

* **Erreichbar**: Ihr Code ruft die anfällige Funktionalität auf. Diese haben die höchste Priorität – insbesondere bei direkten Abhängigkeiten.
* **Unerreichbar**: Das Paket wird verwendet, aber die anfälligen Funktionen werden nicht aufgerufen.
* **Unbenutzt**: Das Paket ist deklariert, wird jedoch in Ihrem Code nicht verwendet.
* **Analyse**: Die Erreichbarkeitsanalyse für das Problem läuft noch.

### Erreichbarkeitsvisualisierung

Für erreichbare Probleme kann Corgea den Pfad von den Einstiegspunkten Ihrer Anwendung zum verwundbaren Code darstellen – und zeigen, wie die Ausführung sich von **Endpunkten** über Zwischen-**Funktionen** zur **verwundbaren** Funktion bewegt. So ist es leicht zu verstehen und genau zu überprüfen, warum ein Problem erreichbar ist.

## Fix-Empfehlungen

Wenn ein Fix verfügbar ist, empfiehlt Corgea die **nächstgelegene korrigierte Version**, also die niedrigste Version ohne die Schwachstelle. Ein möglichst kleines Upgrade reduziert das Risiko von Breaking Changes.

Für **direkte** Abhängigkeiten können Sie die Korrektur anwenden, indem Sie die Version in Ihrem Manifest aktualisieren.

Für **transitive** Abhängigkeiten können Sie die Version oft nicht direkt erhöhen, da sie von einem übergeordneten Paket gesteuert wird. In diesen Fällen zeigt Corgea den **Abhängigkeitspfad** und die **übergeordnete Abhängigkeit** an, die Sie aktualisieren müssen, damit die korrigierte transitive Version übernommen wird. Siehe [Transitive Abhängigkeiten](#transitive-dependencies), um zu sehen, wie der Abhängigkeitspfad erstellt wird.

<Note>Empfehlungen zur Behebung von Abhängigkeiten sind Anleitungen zur Behebung. Überprüfen Sie Upgrades auf Kompatibilität, bevor Sie sie anwenden.</Note>

## Lizenzprüfung

Während des Abhängigkeits-Scans erfasst Corgea die **Softwarelizenz**, die jeder Abhängigkeit zugeordnet ist, und gibt Ihnen so einen Überblick über die in Ihrem Projekt vorhandenen Lizenzen.

Lizenzen werden auf zwei Arten angezeigt:

* **Lizenzfilter**: Im Abhängigkeits-Ansichtsbereich können Probleme nach einer bestimmten Lizenz gefiltert werden (siehe [Abhängigkeitsansichts-Filter](#dependencies-view-filters)).
* **CSV-Export**: Lizenzinformationen werden beim [Export von Abhängigkeiten nach CSV](#export-dependencies-to-csv) einbezogen.

<Note>Lizenz-Scans bieten ein Lizenzinventar zur Transparenz und Berichterstattung. Sie erzwingen nicht automatisch Richtlinien zur Lizenzkonformität.</Note>

## Container-Image-Scanning

Corgea scannt auch die Container-Images, von denen Ihr Projekt abhängt, und identifiziert Schwachstellen in Basisbetriebssystempaketen und anderer Software, die in den Image-Schichten installiert ist. Images werden automatisch aus `Dockerfile` und Docker Compose-Dateien entdeckt — keine Konfiguration erforderlich.

Für Details zu Entdeckung, unterstützten Registrierungen und Grenzen siehe [Container Image Scanning](/de/container-scanning).

## Erkennung bösartiger Pakete

Im Rahmen des Dependency-Scannings kennzeichnet Corgea bekannte **bösartige und kompromittierte Pakete** — wie Typosquats, gehackte Releases und mit Backdoor versehene Versionen — mithilfe der OpenSSF Malicious Packages-Datenbank und verwandter Beratungs-Feeds.

Für Details siehe [Malicious Package Detection](/de/malware-scanning).

## Best Practices

<Tip>Automatisches Scannen aktivieren, um neue Schwachstellen in Echtzeit zu erkennen, sobald sie veröffentlicht werden.</Tip>

* **Regelmäßiges Scannen**: Automatisches Scannen aktivieren, um neue Schwachstellen zu erfassen, sobald sie bekannt werden
* **Abhängigkeits-Updates**: Aktualisieren Sie Abhängigkeiten umgehend, wenn Korrekturen für identifizierte Schwachstellen verfügbar sind
* **Priorisierung nach Schweregrad**: Konzentrieren Sie sich darauf, zuerst Schwachstellen mit kritischer und hoher Schwere zu beheben
* **Risikobewertung**: Bewerten Sie, ob Schwachstellen tatsächlich die Angriffsfläche Ihrer Anwendung betreffen
* **Abhängigkeits-Hygiene**: Überprüfen und entfernen Sie regelmäßig ungenutzte Abhängigkeiten, um die Angriffsfläche zu reduzieren
* **Version Pinning**: Verwenden Sie feste Versionsnummern in Abhängigkeitsdateien für konsistente Scan-Ergebnisse
* **Überwachung**: Richten Sie Benachrichtigungen für neue in Ihren Abhängigkeiten entdeckte Schwachstellen ein
* **Dokumentation**: Führen Sie Aufzeichnungen über akzeptierte Risiken und Entscheidungsprozesse zur Behebung

## Fehlerbehebung

<AccordionGroup>
  <Accordion title="Keine Schwachstellen gefunden, aber Abhängigkeiten sind vorhanden">
    **Lösung**: Überprüfen Sie, ob die Abhängigkeitsdateien in unterstützten Formaten vorliegen und gültige Paketinformationen enthalten

    **Prüfung**: Stellen Sie sicher, dass die Abhängigkeitsdateien nicht beschädigt sind oder Syntaxfehler enthalten
  </Accordion>

  <Accordion title="Scan-Ergebnisse scheinen unvollständig zu sein">
    **Lösung**: Überprüfen Sie, dass alle Abhängigkeitsdateien im Scan-Bereich enthalten sind

    **Prüfung**: Stellen Sie sicher, dass die Abhängigkeitsdateien korrekt formatiert und zugänglich sind
  </Accordion>

  <Accordion title="False Positive Schwachstellen gemeldet">
    **Lösung**: Überprüfen Sie die Details der Schwachstellen, um festzustellen, ob sie tatsächlich Ihre Anwendung betreffen

    **Überprüfung**: Berücksichtigen Sie die spezifischen Nutzungsmuster und Angriffsvektoren in Ihrer Anwendung
  </Accordion>

  <Accordion title="Scan-Leistung ist langsam">
    **Lösung**: Dies ist normal bei großen Projekten mit vielen Abhängigkeiten

    **Überprüfung**: Erwägen Sie, nur geänderte Dateien inkrementell zu scannen
  </Accordion>
</AccordionGroup>
