Dynamika wzrostu popularności Pythona jest imponująca – w tym roku język ten zastąpił Javę na drugim miejscu w rankingu popularności języków programowania wykorzystywanych na GitHubie. Niestety, popularność Pythona ma swoją cenę. Im więcej deweloperów wykorzystuje ten język w swoich projektach, tym większym cieszy się on zainteresowaniem ze strony cyberprzestępców wykorzystujących taktykę typosquattingu w nazwach bibliotek.
W bibliotece paczek Pythona znanej jako PyPl (od Python Package Index) znajduje się w tej chwili ponad 200 tys. projektów, z repozytorium aktywnie korzysta niemal 400 tys. użytkowników. Nic więc dziwnego, że nie brakuje chętnych, by spenetrować tę infrastrukturę i wykorzystać ją do ataku. O ile samo przejęcie łańcucha dostaw prawdziwych paczek byłoby dość złożone, tak próby lokowania paczek pod nazwami przypominającymi popularne pakiety staje się coraz powszechniejszą praktyką.
W ciągu ostatnich lat mieliśmy do czynienia z co najmniej dwiema próbami dystrybucji złośliwego oprogramowania za pośrednictwem PyPl. Niestety, do listy należy dopisać kolejny incydent. Z repozytorium usunięto już bowiem paczki python3-dateutil
(naśladującą dateutil
) oraz jeIlyfish (z dużym „i” zamiast pierwszego „l”), co oczywiście ma wprowadzić w błąd użytkowników chcących pobrać popularną bibliotekę jellyfish
. Konsekwencje takiej pomyłki mogą być opłakane w skutkach.
W pakiecie jeIlyfish
znajdował się bowiem złośliwy kod, natomiast jedną z „funkcji” paczki python3-dateutil
było pobieranie podróbki jellyfish
. Jak informuje ZDNet, złośliwy kod pobierał plik o nazwie hashsum
, który następnie był dekodowany do pliku PY. Skrypt był następnie wykonywany, co skutkowało kradzieżą kluczy SSH i GPG z maszyny ofiary i wysłaniem ich na adres 68.183.212.246:32258
. Niebezpieczne pliki umieścił w repozytorium ten sam użytkownik kryjący się po nickiem olgired2017, który działa też pod tą nazwą na GitLabie.
Oczywiście złośliwe oprogramowania kradnące klucze SSH i GPG zostało już usunięte z PyPl, ale programiści piszących w Pythonie administracji prosi o weryfikacje, czy wykorzystywana przez nich wersja jellyfish
i dateutil
posiada odpowiednią sygnaturę. Zwłaszcza że podróbka tej pierwszej paczki trafiła do repozytorium w grudniu 2018 roku.
Zobacz też: GitHub publikuje raport State of Octoverse: w tym roku Python wyprzedził Javę