FlawOpen

flawopen.com/Referenz/Dependency Confusion

Dependency Confusion: Verwechslungen bei Paketquellen

High Severity CWE-829: Inclusion of Functionality from Untrusted Control Sphere Software-Lieferkette
Einfach erklärt — Der Anbieter mit dem ähnlichen Namen

Stell dir vor, dein Team bestellt eine Komponente in einem Lieferantenkatalog, aber zwei Anbieter verwenden denselben Produktnamen. Wenn die Regeln den maßgeblichen Anbieter nicht festlegen, kann der Build eine unbeabsichtigte Komponente erhalten. Dependency Confusion ist ein Fehler bei der Quellenauswahl: Ein Build löst einen Paketnamen aus einer Registry oder einem Namespace auf, dem die Organisation nicht vertrauen wollte.

Boundary: Paketname, Namespace, Registry-Konfiguration und Herkunft des Lockfiles
Failure: Der Resolver kann ein gleichnamiges Paket aus einer unbeabsichtigten Quelle beziehen
Impact: Ungeprüfter Drittanbieter-Code kann in Builds gelangen; aktivierte Installationsskripte können ausgeführt werden
Remediation: Explizite Namespace-Registry-Regeln, geprüfte Lockfiles und Builds mit minimalen Rechten

Wie Dependency Confusion entsteht

Das genaue Verhalten hängt vom Paketmanager und seiner Konfiguration ab. Ein konkreter Fall ist pip: Die Dokumentation warnt, dass ein privates --index-url zusammen mit einem öffentlichen --extra-index-url dazu führen kann, dass ein gleichnamiges öffentliches Paket ausgewählt wird. npm bestimmt die Registry anhand des Paket-Scopes oder der Standardkonfiguration; es vergleicht nicht grundsätzlich private und öffentliche Versionen und wählt die höhere. Ursache ist eine mehrdeutige Quellenrichtlinie. Sind Paket und Skripte aktiviert, laufen diese mit den für den Build verfügbaren Rechten.

pip.conf und requirements.txt (mehrdeutige Quellen)Riskante Konfiguration
[global]
index-url = https://packages.example.internal/simple
extra-index-url = https://pypi.org/simple

corp-auth-utils
.npmrc und package.json (explizites Scope-Routing)Gehärtetes Beispiel
@corp:registry=https://packages.example.internal/repository/npm/

{
  "dependencies": {
    "@corp/billing-engine": "1.2.0"
  }
}

Ein möglicher Fehlerpfad

Schutzmaßnahmen für die Entwicklung

Weitere Sicherheitsthemen und Vorfallanalysen ansehen:Sicherheitsverzeichnis →

Quellen

Siehe auch Docker-Socket-Offenlegung: Risiken und Schutz GitHub Actions Script-Injection: Eingaben sicher verarbeiten Cosign GHSA-fx35-mq7g-6g98: Bundle-Bypass