Repozytorium PyPI zawiera potencjalnie niezabezpieczony kod

Naukowcy z Uniwersytetu w Turku (Finlandia) ujawnione niedawno wyniki analizy zrobili z pakietami w repozytorium przez PyPI za korzystanie z potencjalnie niebezpiecznych konstrukcji, które mogą generować luki. W analizie, że Przeprowadzono około 197.000 749.000 przesyłek i zidentyfikowano XNUMX XNUMX możliwych problemów związanych z bezpieczeństwem.

Innymi słowy, 46% pakietów ma co najmniej jeden z tych problemów, z których do najczęstszych należą problemy związane z obsługą wyjątków i korzystaniem z możliwości podstawiania kodu.

Spośród 749 tys. zidentyfikowanych problemów 442 tys. (41%) oznaczono jako małoletni, 227 tys. (30%) jako średnio niebezpieczne i 80 tys. (11%) jako niebezpieczne.

Zestaw danych jest oparty na migawce wszystkich pakietów przechowywanych w indeksie pakietów Python (PyPI) ...

Jeśli chodzi o typy problemów, takie jak obsługa wyjątków i różne wstrzyknięcia kodu były najczęstszymi problemami. W tym sensie wyróżnia się moduł wątków. Biorąc pod uwagę ogólnie małe rozmiary pakietów, metryki rozmiaru oprogramowania nie pozwalają dobrze przewidzieć liczby problemów ujawnionych podczas analizy. 

Niektóre pakiety są nietypowe i zawierają tysiące problemów: Na przykład znaleziono 2589 problemów w pakiecie PyGGI, głównie związanych z użyciem konstrukcji "try-except-pass", a 2356 problemów znaleziono w pakiecie appengine-sdk. Istnieje również wiele problemów z pakietami genie.libs.ops, pbcore i genie.libs.parser.

Należy zauważyć, że wyniki uzyskano na podstawie zautomatyzowanej analizy statycznej, która nie uwzględnia kontekstu zastosowania określonych konstrukcji.

Zasugerował programista Bandit, który był używany do skanowania kodu że ze względu na dużą liczbę fałszywych trafień lwyników skanowania nie można uznać za luki bezpośrednio bez dodatkowego ręcznego sprawdzania każdego problemu.

Na przykład parser uważa użycie zawodnych generatorów liczb losowych i algorytmów mieszających, takich jak MD5, za problem bezpieczeństwa, podczas gdy w kodzie takie algorytmy mogą być używane do celów, które nie wpływają na bezpieczeństwo.

Analizator bierze również pod uwagę, że wszelkie zewnętrzne przetwarzanie danych w niebezpiecznych funkcjach, takich jak pickle, yaml.load, subprocess i eval to jest problem, ale takie użycie niekoniecznie wiąże się z podatnością i w rzeczywistości korzystanie z tych funkcji może stanowić problem zaimplementowany bez zagrożenia bezpieczeństwa.

Wśród kontroli użytych w badaniu:

  • Korzystanie z potencjalnie niebezpiecznych funkcji exec, mktemp, eval, mark_safe itp.
  • Niebezpieczna konfiguracja praw dostępu do plików.
  • Podłącz wtyczkę sieciową do wszystkich interfejsów sieciowych.
  • Korzystanie z haseł i zaszyfrowanych kluczy.
  • Korzystanie z predefiniowanego katalogu tymczasowego.
  • Używanie pass i Continue w programach obsługi wyjątków typu catch-all.
  • Uruchamiaj aplikacje internetowe oparte na frameworku sieciowym Flask z włączonym trybem debugowania.
  • Używanie niezabezpieczonych metod do deserializacji danych.
  • Korzystanie z funkcji skrótu MD2, MD4, MD5 i SHA1.
  • Korzystanie z niezabezpieczonych szyfrów DES i trybów szyfrowania.
  • Korzystanie z niezabezpieczonej implementacji HTTPSConnection w niektórych wersjach Pythona.
  • Określanie pliku: // schemat w urlopen.
  • Używaj generatorów liczb pseudolosowych podczas wykonywania zadań kryptograficznych.
  • Korzystanie z protokołu Telnet.
  • Używanie niezabezpieczonych parserów XML.

Dodatkowo wspomniano o wykryciu 8 szkodliwych pakietów w katalogu PyPI. Pakiety problematyczne zostały pobrane ponad 30 64 razy przed usunięciem. Aby ukryć złośliwą aktywność i uniknąć prostych statycznych ostrzeżeń parsera na pakietach, użyliśmy kodowania blokowego z kodem w formacie BaseXNUMX i zorganizowaliśmy jego wykonanie po zdekodowaniu, wywołując eval.

Kod znaleziony w noblesse, genesisbot, to pakiety suff, noblesse2 i noblessev2 do przechwytywania numerów kart kredytowych i haseł przechowywanych w przeglądarkach Chrome i Edge, a także przenoszenia tokenów konta z aplikacji Discord i przesyłania danych z systemu, w tym zrzutów ekranu zawartości ekranu. … Pakiety pytagora i pytagora2 zawierały możliwość pobrania i uruchomienia kodu wykonywalnego firm trzecich.

W końcu jeśli chcesz dowiedzieć się więcej na ten tematmożesz sprawdzić szczegóły W poniższym linku.


Zostaw swój komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

*

*

  1. Odpowiedzialny za dane: Miguel Ángel Gatón
  2. Cel danych: kontrola spamu, zarządzanie komentarzami.
  3. Legitymacja: Twoja zgoda
  4. Przekazywanie danych: Dane nie będą przekazywane stronom trzecim, z wyjątkiem obowiązku prawnego.
  5. Przechowywanie danych: baza danych hostowana przez Occentus Networks (UE)
  6. Prawa: w dowolnym momencie możesz ograniczyć, odzyskać i usunąć swoje dane.