11:01
14/2/2023

Pominięcie lub zdwojenie literki w nazwie modułu Pythona może się skończyć stratą pieniędzy. Liczba zidentyfikowanych fałszywych bibliotek ze złośliwymi dodatkami przekroczyła 450 i o fatalny błąd jest coraz łatwiej.

W listopadzie ubiegłego roku pisaliśmy o złośliwych pakietach PyPI, które były klonami znanych bibliotek udostępnionymi pod lekko zmienionymi nazwami i z dodanymi złośliwymi instrukcjami. W listopadzie można było mówić o dziesiątkach takich bibliotek. Teraz są ich setki. Odkryła je firma Phylum dysponująca automatyzowaną platformą do wykrywania takich zagrożeń. Zauważono nie tylko znaczący wzrost nasilenia złośliwej aktywności, ale również stosowanie nowych technik obfuskacji. 

Istny zalew… sami wiecie czego

W sumie namierzono 451 złośliwych bibliotek podszywających się pod bardzo popularne moduły stosowane w analizie danych takie jak np. Pandas czy Matplotlib. Są też fałszywe wersje bibliotek do scrapowania (Scrapy czy BeautifulSoup), tych związanych z krytptowalutami (Vyper, CryptoCompare) oraz inne takie jak PyTorch czy Pygame. Te złośliwe wersje mają nazwy pozbawione jednego znaku (np. vyer zamiast vyper), ze zdwojonymi znakami (np. vyperr zamiast vyper) albo z przestawionymi literami (np. vpyer zamiast vyper). To daje bardzo dużo możliwości np. doliszono się 38 wersji typosquatingu tylko dla biblioteki CryptoCompare.

Mówiąc krótko, trzeba bardzo uważać w czasie instalowania bibliotek. Gdybyście chcieli sprawdzić swoje środowiska pod kątem możliwej instalacji fałszywych bibliotek, to “pełną” listę złośliwych pakietów znajdziecie we wpisie na blogu Phylum. Jednocześnie miejcie na uwadze, że atakujący postanowili po prostu zalać ekosystem pakietów swoimi złośliwymi dodatkami i lada dzień lista fałszywek się wydłuży.

Jeśli chodzi o zastosowaną technikę obfuskacji to wiele mówi poniższy zrzut pokazujący kod zmienionej biblioteki yfinance.

Zrzut ekranowy

Kod złośliwej biblioteki będącej modyfikacją yfinance

W oczy rzucają się chińskie znaki zastosowane jako nazwy funkcji i zmiennych. To samo w sobie tworzy kod, który wizualnie wydaje się skomplikowany. Dodatkiem do chińskich znaczków są serie operacji matematycznych zastosowanych w celu generowania ciągów znaków (zob. linia 6 kodu powyżej). Ogólnie ten rodzaj obfuskacji da się rozpracować, a firma Phylum określa go nawet mianem “trywialnego”. Mimo to trzeba przyznać – kod dla wielu programistów wyda się naprawdę zagmatwany, a w przestępczości nie liczą się punkty za styl.

Co grozi nieuważnym?

Te biblioteki mają okradać z kryptowalut. Odbywa się to poprzez stworzenie złośliwego rozszerzenia do przeglądarki, które jest ładowane po każdym uruchomieniu przeglądarki (za pomocą argumentu  ‘–load-extension’). Po uruchomieniu przeglądarki z tym rozszerzeniem kod JavaScript tworzy na przeglądanych stronach pole tekstowe, do którego trafiają treści ze schowka. Wyrażenia regularne sprawdzają czy wklejona treść zawiera adres portfela kryptowalut. Jeśli takie adresy się znajdą, są zamieniane na adresy atakujących i następnie treści pola tekstowego są kopiowane do schowka.

Ataki tego typu są skierowane oczywiście na osoby programujące, które z jednej strony są bardziej świadome w kwestiach bezpieczeństwa, a z drugiej strony… literówki  robią jak wszycsy :). Celowo napisaliśmy “osoby programujące”, a nie “zawodowi programiści” bo patrząc na zestaw fałszywych bibliotek dostrzegamy narzędzia wychodzące poza świat rozwijania aplikacji. Tych pakietów używają analitycy danych, OSINT-owcy czy nawet naukowcy (i to niekoniecznie wyłącznie w dziedzinach technicznych i ścisłych). Katalog potencjalnych ofiar może być szerszy niż początkowo się wydaje.

Na programistów czyhają też inne zagrożenia

Doinstalowanie złej biblioteki to tylko jeden z błędów, jakie może popełnić programista by narazić siebie lub użytkowników swojej aplikacji na szkody. Jeśli tworzysz aplikacje webowe, warto dowiedzieć się jakich jeszcze błędów należy unikać. Przygotowaliśmy dwudniowe, silnie praktyczne warsztaty z bezpieczeństwa aplikacji webowych dla programistów (i testerów) z tego tematu. Poniżej lista terminów:

ZDALNIE: 20-21 kwietnia 2024r. — UWAGA: zostało tylko 1 wolne miejsce
Ostatnio ktoś zarejestrował się 18 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 12 kwietnia)
    2699 PLN netto (od 13 kwietnia)

Szczecin: 29-30 kwietnia 2024r. — UWAGA: zostały tylko 4 wolne miejsca
Ostatnio ktoś zarejestrował się 10 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 19 kwietnia)
    2699 PLN netto (od 20 kwietnia)

Kraków: 20-21 maja 2024r. — UWAGA: zostały tylko 4 wolne miejsca
Ostatnio ktoś zarejestrował się 18 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 19 kwietnia)
    2699 PLN netto (od 20 kwietnia)

Warszawa: 27-28 maja 2024r. — zostało 8 wolnych miejsc
Ostatnio ktoś zarejestrował się 09 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 19 kwietnia)
    2699 PLN netto (od 20 kwietnia)

Poznań: 12-13 czerwca 2024r. — zostało 9 wolnych miejsc
Ostatnio ktoś zarejestrował się 18 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 19 kwietnia)
    2699 PLN netto (od 20 kwietnia)

Gdańsk: 17-18 czerwca 2024r. — zostało 9 wolnych miejsc
Ostatnio ktoś zarejestrował się 09 kwietnia 2024r. → zarejestruj się na to szkolenie

    2399 PLN netto (do 19 kwietnia)
    2699 PLN netto (od 20 kwietnia)

PS. Mamy też jednodniowe szkolenie z tzw. programowania defensywnego.


Dowiedz się, jak zabezpieczyć swoje dane i pieniądze przed cyberprzestępcami. Wpadnij na nasz kultowy ~3 godzinny wykład pt. "Jak nie dać się zhackować?" i poznaj kilkadziesiąt praktycznych i przede wszystkim prostych do zastosowania porad, które skutecznie podniosą Twoje bezpieczeństwo i pomogą ochronić przed atakami Twoich najbliższych. Uczestnicy tego wykładu oceniają go na: 9,34/10!

Na ten wykład powinien przyjść każdy, kto korzysta z internetu na smartfonie lub komputerze, prywatnie albo służbowo. Wykład prowadzimy prostym językiem, wiec zrozumie go każdy, także osoby spoza branży IT. Dlatego na wykład możesz spokojnie przyjść ze swoimi rodzicami lub mniej technicznymih znajomych. W najbliższych tygodniach będziemy w poniższych miastach:

Zobacz pełen opis wykładu klikając tutaj lub kup bilet na wykład klikając tu.

9 komentarzy

Dodaj komentarz
  1. Literówki robią wszyscy:

    „. doliszono się 38 wersji typosquatingu tylko dla biblioteki CryptoCompare.”

  2. Da się te iteracje spowodowane samymi zainfekowanymi libami jakoś obejść? Bo to jest najgorsze że do tego zweryfikowania pod kątem podatności danej biblioteki nie ma jednolicie działającego specjalnego testu.

  3. Skoro już jesteśmy przy artykule o tym, jak trzeba uważać na każdą literkę:

    „To daje bardzo dużo możliwości np. doliszono się 38 wersji typosquatingu tylko dla biblioteki CryptoCompare.” – doliczono

    Nie czepiam się „wszycsy”, bo to widać, że jest celowe :-)

  4. Jaki jest sens podszywać się pod biblioteki, które instalują się razem z Pythonem? Przecież nikt nie będzie ich szukać. I jeszcze pytanie czy działają jak należy, żeby zmniejszyć szansę, że ofiara zauważy, że coś jest nie tak

    • Nie widzę na tej liście jakiś rzeczywiście bazowych bibliotek, niezbędnych w każdej instalacji. Jeśli ktoś instalował minimalny pakiet Pythona, to musi dociągnąć takie rzeczy jak selenium czy matplotlib.

  5. A propos tej obfuskacji – zawsze mówiłem, że umożliwienie używania znaków innych niż ASCII ograniczonego do liter, cyfr i kilku znaków przestankowych w składni języków programowania to ZŁO. Unikod powinien być dopuszczony tylko w zaszytych w kodzie napisach czy komentarzach, a i to w ograniczonym zakresie. Jeśli ktoś chce, żeby program wyświetlał jakiś sanskryt albo coś, niech stosuje odpowiednie bilblioteki do pobierania treści napisów z zewnętrznych plików. Przy okazji tłumaczenie interfejsu na inny język będzie łatwiejsze.

    • Calkowicie sie zgadzam.

  6. to było bardziej niż pewne – takie dociąganie bibliotek może i wygodne ale mocno niebezpieczne..
    kod powinien być kompletny a nie na żywca dociągane liby.. – to się prosiło o problemy – a sadze że tych problemów z “pythonem” jest więcej niż w zwykłem phpem który już został okrzyknięty przestarzałym (ale chyba i bezpieczniejszym)

    ale jakby to powiedzieć.. reklama robi swoje – taki python wspaniały (fakt ładnie wygląda kod bo się nie da robić bez akapitów.. )

  7. […] uwagi u każdego, nawet u technicznego guru. W Niebezpieczniku opisywaliśmy takie zjawiska jak np. zalewanie ekosystemu Pythona fałszywymi bibliotekami, a przecież ofiarami w tym przypadku mogli stawać się deweloperzy oraz inne osoby korzystające […]

Odpowiadasz na komentarz Astro

Kliknij tu, aby anulować

Zamieszczając komentarz akceptujesz regulamin dodawania komentarzy. Przez moderację nie przejdą: wycieczki osobiste, komentarze nie na temat, wulgaryzmy.

RSS dla komentarzy: