Clipper wykryty w ponad 451 pakietach w repozytorium PyPI

20 Lutego 2023

Firma Phylum opublikowała na swoim blogu informację o odkryciu ataku, który polega na umieszczeniu zainfekowanych pakietów w PyPI (Python Package Index). Pakiety te zawierają kod odpowiadający za pobranie złośliwych rozszerzeń do przeglądarki w celu przejęcia transakcji kryptowalutowej. Malware wykorzystany w tym ataku to „Clipper” o którym pisaliśmy już w przeszłości – Laplas Clipper.

W ataku wykorzystano technikę typosquatting, polegającą na celowym zapisaniu nazwy z literówką, aby zmylić ofiarę. Atakujący za cel obrali pakiety: aiohttp, beautifulsoup, bitcoinlib, ccxt, colorama, cryptocompare, cryptofeed, freqtrade, matplotlib, pandas, pygame, pyinstaller, pytorch, scikit-learn, scrapy, selenium, solana, tensorflow, vyper, websockets, yfinance. Każdy z nich wystąpił po 13-38 razy, uwzględniając wiele możliwych literówek.

W celu zaciemniania kodu wykorzystano chińskie ideogramy. Na pierwszy rzut oka kod wydaje się skomplikowany, lecz wcale nie jest ciężki do złamania. Dodatkowo wystąpienie nietypowych znaków w kodzie powinno zwrócić uwagę, że coś może być nie tak.

Uruchomienie złośliwego kodu powoduje utworzenie rozszerzenia do przeglądarki z kodem JavaScript sprawdzającym zawartość schowka. Następnie wyszukiwane są skróty do przeglądarek – tj. Google Chrome, Microsoft Edge, Opera oraz Brave – i modyfikowane tak, aby nowo utworzone rozszerzenie było ładowane automatycznie po uruchomieniu przeglądarki. W ten sposób złośliwy kod stale monitoruje zawartość schowka ofiary. W razie wykrycia skopiowania adresu portfela kryptowalutowego, zawartość schowka zostaje podmieniona na jeden z kilku adresów portfeli atakującego, które zostały zamieszczone w kodzie.

W ostatnim czasie widać coraz częstsze informacje o wykryciu złośliwego kodu w pakietach w repozytorium PyPI. Poniżej kilka przykładów zaobserwowanych od początku bieżącego roku:

  • W4SP Stealer [1] – wykradanie haseł, ciasteczek uwierzytelniających oraz portfeli kryptowalutowych;
  • Lolip0p [2] – pobieranie malware wykradające informacje;
  • aptx, bingchilling2, httops i tkint3rs [3] – pobieranie malware, manipulacja plikiem SSH authorized_keys, usuwanie netstat.

 

W związku z popularnością tego języka programowania i wygodą pochodzącą z wykorzystania gotowych pakietów, nieuważni programiści stali się łatwym celem. Korzystanie z niesprawdzonych pakietów może spowodować duże zagrożenie dla wszelkich projektów, dlatego trzeba zwracać większą uwagę na każde wykorzystywane narzędzie.

Jak można się uchronić przed takimi zagrożeniami?

  • Sprawdzać dwukrotnie czy nie popełniło się żadnej literówki – wtedy typosquatting nam niestraszny.
  • Wykorzystywać środowiska testowe.
  • Weryfikacja hashy.
  • Weryfikacja użytkownika, który zamieścił kod w repozytorium (data utworzenia konta, pozostałe projekty).
  • Weryfikacja kodu – jest to zadanie czasochłonne lecz nawet pobieżne sprawdzenie może dać efekty (jak chociażby w opisywanym wyżej przypadku, gdzie pojawiły się chińskie znaki).

 

Zachęcamy również do zapoznania się z artykułem o bezpieczeństwie przy korzystaniu z PyPI.

Przypominamy, że zasady bezpieczeństwa i umiarkowanego zaufania nie dotyczą jedynie Pythona. Niezależnie od używanego języka programowania należy być ostrożnym korzystając z ogólnodostępnych repozytoriów.

Źródła:

[1] Devs targeted by W4SP Stealer malware in malicious PyPi packages
[2] Malicious ‘Lolip0p’ PyPi packages install info-stealing malware
[3] Researchers Uncover Obfuscated Malicious Code in PyPI Python Packages

Opublikowane przez: CERT EXATEL

Inne artykuły_