Quantcast
Aktuelles
Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Registriere dich noch heute kostenlos, um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereichen, welche für Gäste verwehrt bleiben

Hardware & Software Schadcode in Python-Paketen trifft Discord-Bot-Plattform mit 170.000 Usern.

Du musst Regestriert sein, um das angehängte Bild zusehen.


Eine mehrstufige Supply-Chain-Attacke hat unter anderem erfolgreich die Platform Top.gg infiltriert und Schadcode an die User verteilt.

Security-Forscher von Checkmarx haben eine Supply-Chain-Attacke entdeckt, die Python-Pakete mit Schadcode über einen mehrstufigen Angriff verteilt hat.
Die Angreifer haben zunächst Pakete mit Schadcode auf die reguläre Paket-Registry von Python hochgeladen.
Später haben sie eine Domäne für eine eigene Paket-Registry registriert und dort eine mit Schadcode versehene Kopie des weitverbreiteten Pakets Colorama bereitgestellt.

Schließlich sind die Angreifer GitHub-Accounts angegangen, die sie übernommen haben, um den Schadcode gezielt in andere Projekte einzuschleusen.
Den Angriff auf eine Python-Library für die Discord-Bot-Plattform Top.gg konnte Checkmarx nachvollziehen.
Die Discord-Bot-Plattform hat laut Checkmarx 170.000 User.
Wie viele tatsächlich von dem Angriff auf die Python-Library, die auf GitHub eine überschaubare Nutzerzahl hat, betroffen sind, ist allerdings nicht klar.
Andere Projekte haben die Angreifer wohl ebenfalls erfolgreich infiltriert.

Am Anfang war der Schadcode.​

Der erste Anlauf des Angriffs geht wohl bis in den November 2022 zurück.
Seinerzeit hat jemand mit dem User-Namen felpes drei Pakete mit unterschiedlichem Schadcode auf der offiziellen Python-Paket-Registry PyPI (Python Package Index) hochgeladen.

Der mehrstufige Angriff in der jetzigen Form begann allerdings erst im Februar 2024:
Die Angreifer registrierten zunächst die Domäne pypihosted(.org).
Damit bereiteten sie eine Typosquatting-Attacke vor:
Üblicherweise zielt diese Form des Angriffs auf Pakete mit leicht geänderten Namen, aus my-packet wird my-paket, mypacket oder my_packet.
Irgendwer wird sich schon vertippen.
In dem Fall des Domain-Typosquatting sollte der Domänenname der Angreifer suggerieren, dass es sich um die offizielle PyPI-Plattform handelt, die allerdings nicht pypihosted, sondern pythonhosted.org heißt.

Gezielte und getarnte Änderung.​

Dass jemand den Hostnamen versehentlich einträgt, wäre dennoch unwahrscheinlich.
Der Angriff nutzt daher die Möglichkeit, in den Dependencies den Host-Namen einer Paket-Registry einzutragen, aus der sich der Python-Paketmanager bedient.
Dabei dürfte die geänderte Domain nur wenigen auf Anhieb auffallen.

Der eigentliche Schadcode findet sich in dem Paket Colorama, das auf PyPI nach wie vor in der regulären Version ohne Schadcode vorliegt.
Dieser fand sich aber in der Kopie auf der Domäne pypihosted.

Übernahme auf GitHub.​

Um die manipulierten Pakete zu verteilen, haben die Angreifer gezielt GitHub-Accounts angegriffen.
Dabei konnten sie unter anderem Zugriff auf den Account des Users editor-syntax erlangen, den Maintainer des Top.gg-Projekts auf GitHub.
Checkmarx geht davon aus, dass der Account-Diebstahl über gestohlene Session-Cookies erfolgte.

Schließlich konnten die Angreifer als editor-syntax eine Änderung an der Datei requirements.txt mit den Projekt-Dependencies vornehmen, die schließlich die infizierte Colorama-Datei von der falschen Domäne statt der regulären verwendet.

Der tatsächliche User editor-syntax bekam den Angriff erst mit, als andere sich darüber beschwerten, dass seine Änderungen Schadcode ins Projekt eingebracht hätten.

Offenbar sind auch andere Projekte betroffen.
Die Angreifer änderten jeweils nicht nur die einzelnen Zeilen mit dem Domänennamen, sondern führten zum Verschleiern gleichzeitig zahlreiche harmlose Änderungen an der Codebasis durch.

Ablauf des Angriffs.​

Nach dem erfolgreichen Einschleusen des Schadcodes erfolgt der eigentliche Angriff wiederum in mehreren Stufen.
Zunächst einmal ist der Launcher für den Schadcode im Colorama-Paket innerhalb der Datei init.py untergebracht und dort auf simple, aber effiziente Weise versteckt:
Vor dem Befehl befinden sich der legitime Code und zahlreiche Leerzeichen.
Der Befehl selbst führt mittels exec Code aus, den er von pypihosted herunterlädt.

Im weiteren Vorgehen nutzen die Angreifer für den Code laut Checkmarx unterschiedliche Verschleierungstechniken wie chinesische und japanische Zeichenketten und irreführende Variablennamen.
Letztlich sucht der Code einen zufälligen Ordner und wählt einen zufälligen Dateinamen, um die endgültige Schadcode-Datei herunterzuladen und diese schließlich über die Windows-Registry in den Bootvorgang einzubeziehen.

Das Paket lädt dann von einem Remote-Server die jeweils aktuelle Schadsoftware, die darauf ausgelegt ist, sensible Daten auszulesen.
Dazu sucht sie nach Informationen in unterschiedlichen Bereichen von diversen Browser-Daten, Discord-Tokens und Wallets für Kryptowährung bis zu Telegram-Session-Informationen und Instagram-Session-Tokens.
Außerdem findet sich im Schadcode wohl ein Keylogger.
Die Software kann die Daten laut der Analyse sowohl an den Remote-Server als auch über anonyme File-Sharing-Dienste verteilen.

Doppelgänger vermisst.​

Checkmarx hat die pypihosted-Domäne mit Schadcode gemeldet, und Cloudflare hat sie inzwischen abgeschaltet.

Dass die Tarnung über den Hostnamen der falschen Python-Registry gut funktioniert, zeigt ein Issue auf GitHub:
Als die Domäne nicht mehr verfügbar war, meldete jemand nicht etwa die Fake-Domäne über ein Issue, sondern die Tatsache, dass das in den Dependencies eingetragene pypihosted nicht erreichbar ist.

Quelle: heise online
 
Zurück
Oben