In this article
Sicherheitsrisiken durch Python-Paketnamenskonventionen: Typosquatting und mehr
Ein einziger scheinbar harmloser Befehl wie pip install kann die Sicherheit Ihrer gesamten Umgebung gefährden und zu Backdoors, Trojanern und einer Katastrophe durch schädliche Pakete führen. Aber warum? Bei der Sicherheit der Open-Source-Supply-Chain liegt der Fokus häufig auf Paketmanagern und Paket-Repositories.
Was ist die Open-Source-Supply-Chain? Sie umfasst alle Komponenten, Bibliotheken und Tools, die zu einem Softwareprodukt beitragen. Für Python-Entwicklerinnen und -Entwickler gehören dazu häufig Pakete aus dem Python Package Index (PyPI). Diese Pakete bieten zwar viel Komfort und Funktionalität, können aber auch Sicherheitslücken mit sich bringen. Böswillige Akteure können solche Schwachstellen beispielsweise ausnutzen, um schädlichen Code in Anwendungen einzuschleusen. Das kann zu Datenschutzverletzungen, unbefugtem Zugriff und weiteren Sicherheitsvorfällen führen.
Typosquatting als Angriffsvektor
Ein verbreiteter Angriffsvektor im Python-Ökosystem ist Typosquatting. Diese Technik ist aus dem npm-Register für JavaScript bekannt und kommt auch im PyPI-Register vor. Dabei erstellen Angreifer schädliche Pakete mit Namen, die legitimen Paketen stark ähneln. Sie wollen Entwicklerinnen und Entwickler dazu verleiten, diese Pakete versehentlich zu installieren – etwa durch einen kleinen Tippfehler oder weil der genaue Paketname falsch erinnert wird. Nach der Installation können die Pakete Code ausführen, der das jeweilige System angreift, beispielsweise indem er vertrauliche Informationen aus den Umgebungsvariablen des Rechners ausliest.
Verwechslung des Python-Paketnamens PyYAML
Angreifer nutzen häufig ähnliche Paketnamen, um schädlichen Code zu verbreiten. Nehmen Sie das beliebte Paket PyYAML. Für die Installation verwenden Entwicklerinnen und Entwickler den Befehl pip install pyyaml, im Code wird es jedoch mit import yaml eingebunden. Diese Abweichung kann zu Verwechslungen führen: Eine Entwicklerin oder ein Entwickler könnte versehentlich pip install yaml ausführen und dadurch möglicherweise ein anderes, eventuell schädliches Paket installieren.
Das zeigt sich auch in der offiziellen PyYAML-Dokumentation:

FAQ: Was sollte ich tun, wenn ich vermute, dass ein installiertes Paket schädlich ist?
Wenn Sie vermuten, dass ein Paket schädlich ist, sollten Sie folgende Schritte unternehmen:
Paket nicht mehr verwenden: Verwenden Sie das Paket in Ihrem Projekt umgehend nicht mehr.
Paket melden: Melden Sie das verdächtige Paket den Verantwortlichen des Repositorys (z. B. PyPI), damit es untersucht werden kann. Stellen Sie außerdem sicher, dass Ihre lokalen AppSec- und TrustSec-Teams die Verfahren für Sicherheitsverletzungen befolgen (z. B. Geheimnisse zurücksetzen und rotieren).
System überprüfen: Prüfen Sie Ihr System auf unbefugte Änderungen oder verdächtige Aktivitäten.
Code überprüfen: Stellen Sie sicher, dass das schädliche Paket weder Ihre Codebasis noch Ihr Remote-Code-Repository kompromittiert hat. Prüfen Sie dabei auch das Remote-Register und alle weiteren Artefakte, in denen Register gespeichert sind.
Verfahren bei Datenschutzverletzungen: Das System gilt wahrscheinlich als kompromittiert und sollte entsprechend behandelt werden.
Weitere Verwechslungen von Paketnamen mit pip
Ein weiteres Beispiel für Paketverwechslungen ergibt sich aus der PURL-Spezifikation und dem Umgang des Paketmanagers pip mit Unterstrichen und Bindestrichen. Werden beispielsweise pip install langchain-community und pip install langchain_community ausgeführt, wird trotz der unterschiedlichen Schreibweise dasselbe Paket installiert. Angreifer können dieses Verhalten ausnutzen und Pakete mit subtil abweichenden Namen erstellen. Dadurch steigt das Risiko, versehentlich schädliche Software zu installieren.

Außerdem behandelt pip Paketnamen ohne Berücksichtigung der Groß- und Kleinschreibung. Daher führen pip install PackageName und pip install packagename zum selben Ergebnis. Das unterscheidet sich vom npmjs-Register, das zunächst zwischen Groß- und Kleinschreibung unterschied, später aber ebenfalls auf eine Schreibweise ohne Unterscheidung umstellte. Angreifer können die fehlende Unterscheidung bei pip nutzen, um schädliche Pakete noch besser zu verschleiern.
FAQ: Was bedeutet Typosquatting bei Python-Paketen?
Typosquatting ist eine böswillige Praxis, bei der Angreifer Pakete mit Namen erstellen, die beliebten oder legitimen Paketen ähneln. Sie wollen Entwicklerinnen und Entwickler durch häufige Tippfehler oder Namenskonventionen dazu verleiten, diese schädlichen Pakete zu installieren. Wer beispielsweise das beliebte Paket requests installieren möchte, aber versehentlich requsets eingibt, könnte unwissentlich ein schädliches Paket installieren.
Zusammenfassung und weiterführende Informationen
Um eine sichere Software-Supply-Chain zu gewährleisten, müssen Sie die Risiken kennen, die von schädlichen Python-Paketen ausgehen. Damit Sie Typosquatting und anderen Namensverwechslungen nicht zum Opfer fallen, sollten Sie bei der Installation von Paketen aufmerksam sein und Namen sowie Quellen stets überprüfen. Weitere Informationen zu Risiken für die Supply-Chain finden Sie in Beiträgen über Dependency Confusion und die Übernahme von Maintainer-Konten auf PyPI.
Wie können Entwicklerinnen und Entwickler sich vor der Installation schädlicher Python-Pakete schützen?
Mit den folgenden Vorsichtsmaßnahmen können Sie sich schützen:
Paketnamen genau prüfen: Überprüfen Sie vor der Installation stets die Schreibweise des Paketnamens.
Paketmetadaten überprüfen: Achten Sie in den Metadaten und der Dokumentation auf Unstimmigkeiten und Warnsignale.
Vertrauenswürdige Quellen verwenden: Installieren Sie Pakete nur aus vertrauenswürdigen Repositorys wie PyPI.
Sicherheitstools einsetzen: Verwenden Sie Snyk Open Source, um nach Schwachstellen und schädlichen Paketen zu suchen.
Hier finden Sie weitere Hinweise zu sicheren Open-Source-Praktiken und wirksamen Maßnahmen für die Supply-Chain-Sicherheit, mit denen Sie Ihre Projekte schützen können:
Stärken Sie Ihre Sicherheitslage mit Snyk
Für Entwicklerinnen und Entwickler sowie DevOps-Fachleute hat der Schutz ihrer Projekte vor Supply-Chain-Angriffen höchste Priorität. Die Risiken durch schädliche Pakete – etwa solche, die über Typosquatting eingeschleust werden – zeigen, wie wichtig robuste Sicherheitsmaßnahmen sind. Mit Snyk können Sie Ihre Sicherheitslage verbessern und Ihre Projekte vor diesen Bedrohungen schützen.
Abhängigkeiten proaktiv verwalten
Nutzen Sie die umfassende Tool-Suite von Snyk, um Ihre Abhängigkeiten proaktiv zu verwalten. Snyk bietet Schwachstellen-Scans und Warnmeldungen in Echtzeit, damit Sie über alle Risiken im Zusammenhang mit Ihren Paketen informiert sind. So können Sie potenzielle Bedrohungen eindämmen, bevor sie Ihre Projekte beeinträchtigen.
Die Integrationsmöglichkeiten von Snyk nutzen
Snyk lässt sich nahtlos in Ihre bestehenden Entwicklungsabläufe integrieren. So können Sie Sicherheitsprüfungen in Ihre CI/CD-Pipelines, Ihre Python-IDE und Ihr Git-SCM wie GitHub, GitLab und BitBucket einbinden. Dadurch wird Sicherheit zu einem kontinuierlichen Prozess und nicht zu einem nachträglichen Gedanken.
Informiert bleiben und dazulernen
Haben Sie schon eine kurze Python-Sicherheitslektion auf Snyk Learn absolviert? Snyk bietet zahlreiche Lernressourcen, die Sie über aktuelle Sicherheitsbedrohungen und Best Practices informieren. Wenn Sie diese Ressourcen nutzen und auf dem neuesten Stand bleiben, können Sie die sich wandelnde Landschaft der Anwendungssicherheit und Open-Source-Sicherheit besser verstehen und fundierte Maßnahmen zum Schutz Ihrer Projekte ergreifen.
Machen Sie bei Fetch the Flag 2026 mit!
Stellen Sie Ihre Security-Kenntnisse bei unserem Capture-the-Flag-Event vom 12. bis 13. Februar auf die Probe, von 12 Uhr mittags bis 12 Uhr mittags ET.