ESET Research ontdekte 116 kwaadaardige pakketten in PyPI, de officiële opslagplaats van software voor de programmeertaal Python. Deze werden geüpload naar 53 projecten en slachtoffers hebben ze meer dan 10.000 keer gedownload. De malware levert een backdoor die opdrachten op afstand kan uitvoeren, bestanden kan exfiltreren en schermafdrukken kan maken. Soms wordt de W4SP Stealer of een klembordmonitor geleverd die cryptomunten steelt, of soms ook beide. De backdoor-component is geïmplementeerd voor zowel Windows in Python, als Linux in Go.
BRATISLAVA, MONTREAL — 12 december 2023 — ESET Research heeft een cluster kwaadaardige Python-projecten ontdekt die verspreid worden via PyPI, de officiële Python-pakketopslagplaats (programmeertaal). De bedreiging is zowel op Windows- als op Linux-systemen gericht en heeft meestal ook een aangepaste backdoor met cyberspionagemogelijkheden. Het uitvoeren van opdrachten op afstand en het exfiltreren van bestanden is mogelijk en soms worden ook schermafdrukken gemaakt. Soms is de uiteindelijke lading een variant van de beruchte W4SP Stealer, die persoonlijke gegevens en inloggegevens steelt, of een eenvoudige klembordmonitor om cryptmunten te stelen, of beide. ESET ontdekte 116 pakketten (brondistributies, enz.) en 53 projecten die malware bevatten. Deze bestanden werden het afgelopen jaar meer dan 10.000 keer door slachtoffers gedownload. Vanaf mei 2023 lag het aantal downloads rond de 80 per dag.
Bij Python-programmeurs is PyPI populair voor het delen en downloaden van code. Daar iedereen tot de repository kan bijdragen, kan malware – die zich soms voordoet als legitieme, populaire codebibliotheken – plots opduiken. “Sommige kwaadaardige pakketnamen lijken op die van legitieme pakketten, maar wij denken dat de belangrijkste manier waarop ze door potentiële slachtoffers worden geïnstalleerd niet via typosquatting is, maar via social engineering. Slachtoffers worden zo tot het uitvoeren van pip geleid om een ‘interessant’ pakket te installeren”, zegt ESET-onderzoeker Marc-Étienne Léveillé, die de kwaadaardige pakketten ontdekte en analyseerde.
De meeste pakketten waren bij de publicatie van dit onderzoek al door PyPI verwijderd. ESET contacteerde PyPI om actie te ondernemen met betrekking tot de overige pakketten en momenteel zijn alle bekende kwaadaardige pakketten offline. ESET observeerde de operatoren achter de campagne die drie technieken gebruikten om kwaadaardige code in de Python-pakketten in te voeren. In de eerste techniek wordt een “test”-module met licht versluierde code in het pakket geplaatst. De tweede techniek is het insluiten van PowerShell-code in het setup.py-bestand, wat automatisch wordt uitgevoerd door pakketbeheerders zoals pip om Python-projecten te helpen installeren. Bij de derde techniek doen de operatoren geen moeite om legitieme code in het pakket op te nemen, enkel de kwaadaardige code in een licht versluierde vorm is aanwezig.
Doorgaans is de uiteindelijke payload een aangepaste backdoor die opdrachten op afstand kan uitvoeren, bestanden kan exfiltreren en soms ook schermafdrukken maakt. In Windows is de backdoor geïmplementeerd in de programmeertaal Python, in Linux is die geïmplementeerd in Go. Soms wordt in plaats van de backdoor een variant van de beruchte W4SP Stealer gebruikt, of wordt een eenvoudige klembordmonitor gebruikt om cryptomunten te stelen, of soms beide. De klembordmonitor richt zich op de cryptomunten Bitcoin, Ethereum, Monero en Litecoin.
“Python-ontwikkelaars moeten de code die ze downloaden controleren voor ze deze op hun systemen installeren. We verwachten dat zo’n misbruik van PyPI zal voortduren en adviseren dus grote voorzichtigheid bij het installeren van code uit een openbare softwareopslagplaats”, besluit Léveillé.
Voor meer details over de kwaadaardige Python-projecten in PyPI, lees de blog “A pernicious potpourri of Python packages in PyPI.” Volg zeker ook ESET Research on Twitter (today known as X) voor het laatste nieuws over ESET Research.