PyPitfall: Dependency Chaos and Software Supply Chain Vulnerabilities in Python

Die Studie PyPitfall analysiert quantitativ die Abhängigkeitsstrukturen von über 378.000 PyPI-Paketen und deckt auf, dass Tausende von Paketen bekannte Sicherheitslücken in ihren direkten oder transitiven Abhängigkeiten enthalten, was die Anfälligkeit der Python-Software-Lieferkette für Angriffe unterstreicht.

Jacob Mahon, Chenxi Hou, Zhihao Yao

Veröffentlicht 2026-03-11
📖 4 Min. Lesezeit☕ Kaffeepausen-Lektüre

Each language version is independently generated for its own context, not a direct translation.

Stellen Sie sich das Ökosystem von Python wie eine riesige, pulsierende Stadt vor, die PyPI (Python Package Index) heißt. In dieser Stadt gibt es über 600.000 kleine Geschäfte (die Pakete), die alle ihre eigenen Waren anbieten.

Das Problem? Niemand baut etwas von Grund auf neu. Stattdessen kaufen die Programmierer in dieser Stadt ständig Dinge bei anderen Geschäften, um ihre eigenen Produkte zu bauen. Ein Programmierer braucht vielleicht einen Hammer, also kauft er ihn bei "Geschäft A". Aber "Geschäft A" braucht für seinen Hammer einen Nagel von "Geschäft B", und "Geschäft B" braucht wieder einen Kleber von "Geschäft C".

Diese Kette aus Käufen nennt man Abhängigkeiten. Und genau hier liegt das Chaos, das die Forscher Jacob Mahon, Chenxi Hou und Zhihao Yao in ihrer Studie "PyPitfall" untersucht haben.

Hier ist die Geschichte der Studie, einfach erklärt:

1. Das Labyrinth der Kettenreaktion

Stellen Sie sich vor, Sie bauen ein Haus. Sie kaufen Ziegel von einem Lieferanten. Dieser Lieferant hat aber einen Defekt in seiner Maschine, der die Ziegel schwächt. Wenn Sie diese Ziegel kaufen, ist Ihr Haus unsicher.

In Python ist das noch schlimmer. Sie kaufen vielleicht ein Paket, das auf 100 anderen Paketen basiert. Wenn eines dieser 100 Pakete (vielleicht tief unten in der Kette, bei "Geschäft Z") einen Sicherheitsfehler hat, kann dieser Fehler bis zu Ihnen hochschlagen.

Die Forscher haben dieses riesige Labyrinth kartografiert. Sie haben 378.573 dieser "Häuser" (Pakete) genauer unter die Lupe genommen.

2. Die zwei Arten von Gefahr

Die Studie unterscheidet zwischen zwei Arten von Problemen, ähnlich wie bei einem verfallenen Fundament:

  • Die "Garantierte Falle" (Guaranteed Exposure):
    Das ist wie ein Haus, bei dem der Architekt zwingend einen defekten Ziegel verlangt. Es gibt keine andere Wahl. Wenn Sie dieses Paket installieren, müssen Sie den fehlerhaften Code mitnehmen.

    • Ergebnis: Die Forscher fanden 4.655 Pakete, die sich zwingend auf bekannte, unsichere Versionen verlassen.
  • Die "Mögliche Falle" (Potential Exposure):
    Das ist wie ein Haus, bei dem der Architekt sagt: "Ich nehme Ziegel von 1990 bis 2024." Wenn Sie Glück haben, bekommen Sie einen neuen, sicheren Ziegel. Wenn Sie Pech haben, bekommt Ihr Lieferant aus Kostengründen einen alten, kaputten Ziegel aus 1990. Das System entscheidet oft zufällig oder basierend auf anderen Regeln, was Sie bekommen.

    • Ergebnis: 141.044 Pakete erlauben es, dass unsichere Versionen installiert werden könnten.

3. Warum ist das so kompliziert? (Das "Dependency Hell")

Stellen Sie sich vor, Sie gehen in ein Geschäft, um einen Hammer zu kaufen. Der Verkäufer sagt: "Kein Problem, aber ich brauche dafür einen Nagel von einem anderen Laden. Und dieser Laden braucht einen Kleber. Und der Kleber-Laden braucht wieder einen Hammer..."

Manchmal führt diese Kette zu einem Kreislauf. Paket A braucht Paket B, und Paket B braucht wieder Paket A. Das ist wie ein Hamster im Laufrad, das sich nie ausstehen kann. In der Studie gab es über eine Million solcher "Hamster-Räder" (kreisförmige Abhängigkeiten), die das System zum Absturz bringen können.

Ein besonders verrücktes Beispiel war ein Paket namens square-0-5, das so konstruiert war, dass es sich selbst in einer Endlosschleife verwickelte, um Sudoku-Regeln zu simulieren. Ein echtes technisches Kunstwerk, das aber als Sicherheitsrisiko dient.

4. Die Entdeckungen

Die Forscher haben herausgefunden, dass die unsicheren Teile oft tief in den Tiefen des Labyrinths versteckt sind.

  • Die meisten Pakete haben nur flache Abhängigkeiten (wie ein kleines Erdgeschoss).
  • Aber die unsicheren Pakete sitzen oft in tiefen Kellergeschossen (manchmal 20 Stockwerke tief!).
  • Ein besonders bekanntes Paket namens urllib3 (ein Werkzeug für Internetverbindungen) war in über 400.000 Fällen Teil dieser Ketten. Es hatte mehrere Sicherheitslücken, die von Tausenden anderen Programmen "mitgeschleppt" wurden.

5. Was bedeutet das für uns?

Die Botschaft der Studie ist nicht, dass Python unsicher ist oder dass wir aufhören sollen, Code zu teilen. Es ist eine Warnung: Wir bauen unsere Häuser auf Fundamenten, die wir nicht immer sehen.

  • Das Problem: Entwickler sind oft nicht böswillig. Sie wollen nur schnell arbeiten und nutzen fertige Bauteile. Aber sie wissen oft nicht, dass eines dieser Bauteile verrottet ist.
  • Die Lösung: Wir müssen aufhören, blindlings alles zu installieren. Wir müssen wissen, was in unserem "Keller" liegt. Die Forscher haben ihre Ergebnisse an die Verwaltung von PyPI weitergegeben, damit sie das System sicherer machen können.

Zusammenfassend:
Stellen Sie sich vor, Sie bestellen ein fertiges Mittagessen. Sie wissen nicht, dass das Restaurant, das die Tomaten liefert, vergiftete Tomaten verwendet hat. PyPitfall ist wie ein Detektiv, der durch die Lieferkette des Restaurants läuft und sagt: "Achtung! In 4.600 Fällen sind die Tomaten garantiert vergiftet, und in 140.000 Fällen könnten sie es sein."

Die Studie zeigt uns, dass wir in der digitalen Welt vorsichtiger sein müssen, wenn wir uns auf die Hilfe anderer verlassen. Denn in einem so vernetzten System ist die Sicherheit des Ganzen nur so stark wie das schwächste Glied in der Kette.