Abo
  • Services:
Anzeige
codecs - ein Paket, das eigentlich Teil der Python-Standardbibliothek ist, auf PyPI.
codecs - ein Paket, das eigentlich Teil der Python-Standardbibliothek ist, auf PyPI. (Bild: Screenshot / Hanno Böck)

PyPI: Bösartige Python-Pakete entdeckt

codecs - ein Paket, das eigentlich Teil der Python-Standardbibliothek ist, auf PyPI.
codecs - ein Paket, das eigentlich Teil der Python-Standardbibliothek ist, auf PyPI. (Bild: Screenshot / Hanno Böck)

Im Python-Paketrepository PyPi wurden verschiedene Pakete entdeckt, deren Namen existierenden Paketen ähneln und die eine Verbindung zu einem chinesischen Server aufbauen. Auf das grundlegende Problem wurde schon 2016 hingewiesen, doch die PyPi-Maintainer reagierten nicht auf Warnungen.

Pakete mit Namen wie bzip oder urlib3 im Python-Repository PyPI sollten offenbar Nutzer erreichen, die versehentlich falsch geschriebene Paketnamen verwenden. Die Namen ähneln populären existierenden Paketen (bzip2, urllib3). Dieses sogenannte Typosquatting ist ein bekanntes Problem, bisher tut PyPI jedoch wenig, um derartige Angriffe zu verhindern.

Anzeige

Laut einem Advisory entdeckte das slovenische CERT (SK-CSIRT) die entsprechenden Pakete. Der Code tat nicht mehr, als einige Informationen über das System an einen chinesischen Server zu schicken, er versuchte dabei allerdings, dies zu verschleiern.

Nahezu alle für Python frei verfügbaren Libraries und Programme können über das PyPI-Repository installiert werden. PyPI spielt damit eine sehr zentrale Rolle für die Python-Community. Mit dem dazugehörigen Tool pip werden Abhängigkeiten automatisch mitinstalliert. Ein einfaches "pip install [Programmname]" reicht dabei meist. Pakete publizieren bei PyPI kann jeder. Man benötigt dafür lediglich einen Benutzeraccount und ein Tool wie Twine, welches entsprechende Pakete hochladen kann.

Problem bereits 2016 in einer Bachelorarbeit beschrieben

2016 beschrieb Nikolai Tschacher Typosquatting-Angriffe auf PyPI in seiner Bachelorarbeit. Tschacher registrierte auch verschiedene Paketnamen und betrachtete dabei zwei mögliche Angriffsszenarien. Zum einen registrierte er Paketnamen, die sich, ähnlich der jetzt gefundenen, nur minimal von existierenden Paketnamen unterscheiden. Zum anderen registrierte er auch Namen aus der Python-Standardbibliothek. Besonders urllib2 erwies sich dabei als problematisch.

Die Pakete in der Python-Standardbibliothek sind bei einer Python-Installation bereits mitgeliefert. Sie müssen daher nicht separat installiert werden. Trotzdem kann man auf PyPI Namen, die identisch sind, registrieren. Die Idee dabei: Ein Nutzer, der nicht weiß, dass beispielsweise urllib2 zur Standardbibliothek gehört, versucht möglicherweise, es vor der Nutzung zu installieren. Doch dabei fängt er sich ein anderes, potenziell bösartiges Paket ein.

Naheliegend wäre es gewesen, nach Tschachers Bachelorarbeit zumindest die bereits bekannten problematischen Paketnamen zu sperren. Doch stattdessen wurden die Pakete einfach gelöscht. Der Softwareentwickler Benjamin Bach konnte daraufhin vor kurzem urllib2 erneut registrieren.

PyPI-Entwickler reagierten nicht auf Warnungen

Bach versuchte dabei mehrfach, die Betreiber von PyPI und das Security-Team von Python auf dieses Problem aufmerksam zu machen. Doch darauf erfolgte keine Reaktion. Bach startete zusammen mit dem Autor dieses Artikels das Projekt Pytosquatting. Sämtliche Paketnamen aus der Standardbilbiothek, die noch frei waren, wurden dafür registriert und enthielten einen kurzen Code, der einen Counter auf einem Server aufruft. Anschließend wird dem Nutzer eine Warnung angezeigt und die Installation abgebrochen.

Alleine das Paket urllib2 wird jeden Tag von über Tausend Personen installiert. Ein Angreifer könnte damit also in kurzer Zeit sehr viele Systeme übernehmen. Inzwischen wurden einige der Pakete von den PyPI-Betreibern wieder gelöscht.

Eine Besonderheit von PyPI: Bereits die Installation eines Pakets führt Code aus. Denn zur Installation wird schlicht das Skript "setup.py" aus dem jeweiligen Paket aufgerufen. Damit reicht bereits ein Aufruf von "pip install" mit einem bösartigen Paketnamen, um ein System zu kompromittieren.

Paketrepositories als Risiko

Es ist zu hoffen, dass dieser Vorfall dazu führt, die Risiken von Paketmanagern mehr in den Blick zu nehmen. Als einfachste Sofortmaßnahme können Paketnamen, die naheliegenderweise problematisch sind, gesperrt werden. Zumindest für die jetzt entdeckten bösartigen Pakete ist das nun passiert.

Dass Pythons Paketmanager pip bei der Installation direkt Code ausführt, soll langfristig nicht so bleiben. Ein neuer Paketstandard namens wheel soll das bisherige Paketformat langfristig ablösen. Doch eine erhöhte Sicherheit bietet das erst, wenn die Unterstützung für das alte Paketformat abgeschaltet wird - und das dürfte noch eine Weile dauern.

Problematisch ist auch generell, dass es keinerlei Prüfung der Inhalte in den Paketrepositories gibt. Das gilt allerdings für ähnliche Systeme von anderen Programmiersprachen genauso. Die Übernahme von Namen mit Variationen und Tippfehlern lässt sich in solchen Systemen kaum verhindern.

Denkbar wäre es, populäre Pakete mit bekannten Entwicklern als vertrauenswürdig zu markieren und in der Standardkonfiguration nur solche Pakete zu installieren. Bei anderen Paketen könnte der Installer eine Warnung anzeigen und mitteilen, dass es sich um ein ungeprüftes Paket handelt.


eye home zur Startseite
Spaghetticode 18. Sep 2017

Und wie stellst du dir das vor? Soll jeder seine Pakete mit seinem eigenen Schlüssel...

Themenstart

Kommentieren



Anzeige

Stellenmarkt
  1. SSI Schäfer Automation GmbH, Giebelstadt bei Würzburg
  2. softwareinmotion gmbh, Schorndorf
  3. Kassenärztliche Vereinigung Baden-Württemberg, Stuttgart
  4. GreenIT Das Systemhaus GmbH, Dortmund


Anzeige
Top-Angebote
  1. (u. a. Warcraft: The Beginning, Fast & Furious 7, Fast & Furious 6, Jurassic World, Gladiator und...
  2. 59,90€ (Vergleichspreis ca. 79€)
  3. 529€ + 1,99€ Versand oder Abholung im Markt

Folgen Sie uns
       


  1. CDN

    Cloudflare bietet lokale TLS-Schlüssel und mehr DDoS-Schutz

  2. Star Trek Discovery angeschaut

    Star Trek - Eine neue Hoffnung

  3. Gemeinde Egelsbach

    Telekom-Glasfaser in Gewerbegebiet findet schnell Kunden

  4. Microsoft

    Programme für Quantencomputer in Visual Studio entwickeln

  5. Arbeitsspeicher

    DDR5 nutzt Spannungsversorgung auf dem Modul

  6. Video-Pass

    Auch Vodafone führt Zero-Rating-Angebot ein

  7. Vernetztes Fahren

    Stiftung Warentest kritisiert Datenschnüffelei bei Auto-Apps

  8. Ransomware

    Redboot stoppt Windows-Start und kann nicht entschlüsseln

  9. Dan Cases C4-H2O

    9,5-Liter-Gehäuse mit 240-mm-Radiator

  10. iPhone 8 Plus im Test

    Warten auf das X



Haben wir etwas übersehen?

E-Mail an news@golem.de


Anzeige
Apple iOS 11 im Test: Alte Apps weg, Daten weg, aber sonst alles gut
Apple iOS 11 im Test
Alte Apps weg, Daten weg, aber sonst alles gut
  1. Apple iOS 11 Wer WLAN und Bluetooth abschaltet, benutzt es weiter
  2. Drei Netzanbieter warnt vor Upgrade auf iOS 11
  3. Kein App Store mehr iOS-Nutzer sollten das neue iTunes nicht installieren

Watson: IBMs Supercomputer stellt sich dumm an
Watson
IBMs Supercomputer stellt sich dumm an
  1. IBM Watson soll auf KI-Markt verdrängt werden
  2. KI von IBM Watson optimiert Prozesse und schließt Sicherheitslücken

Lenovo Thinkstation P320 Tiny im Test: Viel Leistung in der Zigarrenschachtel
Lenovo Thinkstation P320 Tiny im Test
Viel Leistung in der Zigarrenschachtel
  1. Adware Lenovo zahlt Millionenstrafe wegen Superfish
  2. Lenovo Smartphone- und Servergeschäft sorgen für Verlust
  3. Lenovo Patent beschreibt selbstheilendes Smartphone-Display

  1. Re: OT: Wann wird vom neuen iMac Pro berichtet? kT

    budweiser | 16:35

  2. Re: und O2 hat den All-Pass mit 1Mbit Bremse aber...

    ckerazor | 16:35

  3. Re: Netzneutralität eindeutig verletzt!!!

    Eopia | 16:34

  4. Re: Dann genügt doch ein simples MBR Backup, oder?

    ArcherV | 16:32

  5. Re: Netzneutralität

    Rolf Schreiter | 16:31


  1. 16:33

  2. 16:02

  3. 15:20

  4. 14:46

  5. 14:05

  6. 13:48

  7. 12:57

  8. 12:42


  1. Themen
  2. A
  3. B
  4. C
  5. D
  6. E
  7. F
  8. G
  9. H
  10. I
  11. J
  12. K
  13. L
  14. M
  15. N
  16. O
  17. P
  18. Q
  19. R
  20. S
  21. T
  22. U
  23. V
  24. W
  25. X
  26. Y
  27. Z
  28. #
 
    •  / 
    Zum Artikel