Pysa, statyczny analizator dla Pythona oferowany przez Facebooka

Facebook wprowadził statyczny analizator typu open source o nazwie «Pysa»(Python Static Analyzer), czyli zaprojektowany w celu identyfikacji potencjalnych luk w kodzie Pythona.

Pysa zapewnia analizę przepływu danych w wyniku wykonania kodu, który pozwala zidentyfikować wiele potencjalnych słabych punktów i problemów prywatności związanej z wykorzystywaniem danych w miejscach, w których nie powinny się one pojawiać.

Na przykład Pysa może śledzić użycie surowych danych zewnętrznych w połączeniach które wykonują programy zewnętrzne, operacje na plikach i konstrukcje SQL.

Dziś udostępniamy szczegółowe informacje na temat Pysa, narzędzia do analizy statycznej typu open source, które stworzyliśmy w celu wykrywania i zapobiegania problemom z bezpieczeństwem i prywatnością w kodzie Pythona. W zeszłym roku opowiedzieliśmy, jak stworzyliśmy Zoncolan, narzędzie do analizy statycznej, które pomaga nam analizować ponad 100 milionów wierszy kodu hakerskiego i pomogło inżynierom zapobiec tysiącom potencjalnych problemów z bezpieczeństwem. Ten sukces zainspirował nas do opracowania Pysa, który jest akronimem dla Python Static Analyzer.

Pysa używa tych samych algorytmów do wykonywania analizy statycznej, a nawet udostępniania kodu Zoncolan. Jak Zoncolan, Pysa śledzi przepływ danych w programie.

Użytkownik definiuje źródła (miejsca, z których pochodzą ważne dane) oraz ujścia (miejsca, w których dane źródłowe nie powinny się kończyć).

W przypadku aplikacji zabezpieczających najpopularniejszymi typami źródeł są miejsca, w których dane kontrolowane przez użytkownika trafiają do aplikacji, takie jak słownik Django.

Odbiorniki są zwykle znacznie bardziej zróżnicowane, ale mogą zawierać interfejsy API, które uruchamiają kod, na przykład evallub interfejsy API, które uzyskują dostęp do systemu plików, takie jakos.open

Pysa wykonuje iteracyjne rundy analizy, aby tworzyć streszczenia aby określić, które funkcje zwracają dane ze źródła, a które mają parametry, które ostatecznie trafiają do ujścia. Jeśli Pysa stwierdzi, że źródło w końcu łączy się z ujściem, zgłasza problem. 

Praca analizatora sprowadza się do identyfikacji napływających źródeł danych i niebezpieczne rozmowy, w których nie należy używać oryginalnych danych.

Pysa monitoruje przepływ danych przez łańcuch wywołań funkcji i kojarzy oryginalne dane z potencjalnie niebezpiecznymi miejscami w kodzie.

Ponieważ używamy platform serwerowych Python typu open source, takich jak Django i Tornado w naszych własnych produktach, Pysa może zacząć napotykać problemy z bezpieczeństwem w projektach, które używają tych frameworków od pierwszego uruchomienia. Używanie Pysa do ramek, dla których nie mamy pokrycia, jest ogólnie tak proste, jak dodanie kilku linii konfiguracyjnych, aby poinformować Pysę, gdzie dane przychodzą na serwer.

Częstą luką zidentyfikowaną przez firmę Pysa jest problem z otwartym przekierowaniem (CVE-2019-19775) w platformie komunikacyjnej Zulip, spowodowany przekazaniem nieczytelnych parametrów zewnętrznych podczas wyświetlania miniatur.

Możliwości śledzenia przepływu danych Pysa można wykorzystać do sprawdzenia poprawności użycia dodatkowych ramek i określenia zgodności z zasadami wykorzystania danych użytkownika.

Np. Pysa bez dodatkowych konfiguracji może posłużyć do weryfikacji projektów z wykorzystaniem frameworków Django i Tornado. Pysa może również zidentyfikować typowe luki w aplikacjach internetowych, takie jak podstawianie kodu SQL i skrypty między witrynami (XSS).

Na Facebooku analizator służy do weryfikacji kodu serwisu Instagram. W pierwszym kwartale 2020 roku Pysa pomogła zidentyfikować 44% wszystkich problemów znalezionych przez inżynierów Facebooka w bazie kodów Instagrama po stronie serwera.

W trakcie procesu zidentyfikowano łącznie 330 problemów automatycznej weryfikacji zmian za pomocą Pysa, z których 49 (15%) oceniono jako istotne, a 131 (40%) nie było niebezpiecznych. W 150 przypadkach (45%) problemy przypisano fałszywym trafom.

Nowy parser został zaprojektowany jako uzupełnienie zestawu narzędzi do weryfikacji typu Pyre i jest umieszczony w repozytorium. Kod jest udostępniany na licencji MIT.

W końcu jeśli chcesz dowiedzieć się więcej na ten temat, możesz sprawdzić szczegóły w oryginalnym poście. Link jest taki.


Treść artykułu jest zgodna z naszymi zasadami etyka redakcyjna. Aby zgłosić błąd, kliknij tutaj.

Bądź pierwszym który skomentuje

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.