Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu

Graudit obsługuje wiele języków programowania i umożliwia integrację testów bezpieczeństwa bazy kodu bezpośrednio z procesem rozwoju.

Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu
Źródło: Unsplash (Markus Spiske)

Testowanie jest ważną częścią cyklu życia oprogramowania. Istnieje wiele rodzajów testów, każdy z nich rozwiązuje swój własny problem. Dzisiaj chcę porozmawiać o znajdowaniu problemów związanych z bezpieczeństwem w kodzie.

Oczywiście we współczesnych realiach wytwarzania oprogramowania ważne jest zapewnienie bezpieczeństwa procesów. W pewnym momencie wprowadzono nawet specjalny termin DevSecOps. Termin ten odnosi się do szeregu procedur mających na celu identyfikację i eliminację podatności w aplikacji. Istnieją wyspecjalizowane rozwiązania typu open source służące do sprawdzania podatności zgodnie ze standardami OWASP, które opisują różne typy i zachowanie luk w kodzie źródłowym.

Istnieją różne podejścia do rozwiązywania problemów związanych z bezpieczeństwem, takie jak statyczne testowanie bezpieczeństwa aplikacji (SAST), dynamiczne testowanie bezpieczeństwa aplikacji (DAST), interaktywne testowanie bezpieczeństwa aplikacji (IAST), analiza składu oprogramowania i tak dalej.

Statyczne testy bezpieczeństwa aplikacji identyfikują błędy w już napisanym kodzie. Podejście to nie wymaga działania aplikacji, dlatego nazywa się je analizą statyczną.

Skoncentruję się na analizie kodu statycznego i użyję prostego narzędzia open source, aby zademonstrować wszystko w praktyce.

Dlaczego wybrałem narzędzie open source do analizy bezpieczeństwa kodu statycznego

Powodów jest wiele: po pierwsze, jest ono bezpłatne, ponieważ korzystasz z narzędzia opracowanego przez społeczność podobnie myślących ludzi, którzy chcą pomóc innym programistom. Jeśli masz mały zespół lub startup, masz świetną okazję do zaoszczędzenia pieniędzy, używając oprogramowania open source do testowania bezpieczeństwa swojej bazy kodu. Po drugie, eliminuje potrzebę zatrudniania osobnego zespołu DevSecOps, co jeszcze bardziej obniża koszty.

Dobre narzędzia open source są zawsze tworzone z uwzględnieniem zwiększonych wymagań dotyczących elastyczności. Dzięki temu można je stosować w niemal każdym środowisku, realizując szeroki zakres zadań. Programistom znacznie łatwiej jest połączyć takie narzędzia z systemem, który już zbudowali podczas pracy nad swoimi projektami.

Może się jednak zdarzyć, że będziesz potrzebować funkcji, która nie jest dostępna w wybranym narzędziu. W takim przypadku masz możliwość rozwidlenia jego kodu i opracowania na jego podstawie własnego narzędzia o potrzebnej funkcjonalności.

Ponieważ w większości przypadków na rozwój oprogramowania open source aktywnie wpływa społeczność, decyzja o wprowadzeniu zmian zapada dość szybko i na temat: twórcy projektu open source opierają się na opiniach i sugestiach użytkowników, na ich raportach znalezione błędy i inne problemy.

Korzystanie z Graudit do analizy bezpieczeństwa kodu

Do statycznej analizy kodu można używać różnych narzędzi open source; nie ma uniwersalnego narzędzia dla wszystkich języków programowania. Twórcy niektórych z nich postępują zgodnie z zaleceniami OWASP i starają się objąć jak najwięcej języków.

Tutaj skorzystamy Graudit, proste narzędzie wiersza poleceń, które pozwoli nam znaleźć luki w naszym kodzie. Obsługuje różne języki, ale ich zestaw jest ograniczony. Graudit został opracowany w oparciu o narzędzie grep, które kiedyś zostało wydane na licencji GNU.

Istnieją podobne narzędzia do statycznej analizy kodu – narzędzie Rough Auditing Tool (RATS), narzędzie do analizy aplikacji internetowych Securitycompass (SWAAT), narzędzie do wykrywania błędów i tak dalej. Ale Graudit jest bardzo elastyczny i ma minimalne wymagania techniczne. Mogą jednak wystąpić problemy, których Graudit nie będzie w stanie rozwiązać. Następnie możesz poszukać innych opcji tutaj na tej liście.

Możemy zintegrować to narzędzie z konkretnym projektem, udostępnić je wybranemu użytkownikowi lub wykorzystać je jednocześnie we wszystkich naszych projektach. Tutaj również pojawia się elastyczność Graudit. Zatem najpierw sklonujmy repo:

$ git clone https://github.com/wireghoul/graudit

Utwórzmy teraz dowiązanie symboliczne, aby Graudit mógł go używać w formacie poleceń

$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/graudit

Dodajmy alias do .bashrc (lub innego pliku konfiguracyjnego, którego używasz):

#------ .bashrc ------
alias graudit="~/bin/graudit"

Ponowne uruchomienie:

$ source ~/.bashrc # OR
$ exex $SHELL

Sprawdźmy, czy instalacja przebiegła pomyślnie:

$ graudit -h

Jeśli widzisz coś podobnego, wszystko jest w porządku.

Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu

Będę testował jeden z moich istniejących projektów. Przed uruchomieniem narzędzia należy przekazać mu bazę danych odpowiadającą językowi, w którym napisany jest mój projekt. Bazy danych znajdują się w folderze ~/gradit/signatures:

$ graudit -d ~/gradit/signatures/js.db

Przetestowałem więc dwa pliki js z mojego projektu, a Graudit wyświetlił na konsoli informację o lukach w moim kodzie:

Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu

Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu

Możesz spróbować przetestować swoje projekty w ten sam sposób. Możesz zobaczyć listę baz danych dla różnych języków programowania tutaj.

Zalety i wady Graudita

Graudit obsługuje wiele języków programowania. Dlatego jest odpowiedni dla szerokiego grona użytkowników. Może odpowiednio konkurować z dowolnymi darmowymi lub płatnymi analogami. Bardzo ważne jest, aby w projekcie wciąż wprowadzano ulepszenia, a społeczność pomagała nie tylko programistom, ale także innym użytkownikom, którzy próbują rozgryźć narzędzie.

Jest to przydatne narzędzie, ale jak dotąd nie zawsze pozwala dokładnie określić, na czym polega problem z podejrzanym fragmentem kodu. Programiści nadal ulepszają Graudit.

W każdym razie warto zwrócić uwagę na potencjalne problemy związane z bezpieczeństwem w kodzie podczas korzystania z takich narzędzi.

Początek…

W tym artykule przyjrzałem się tylko jednemu z wielu sposobów znajdowania luk - statycznemu testowaniu bezpieczeństwa aplikacji. Przeprowadzenie analizy kodu statycznego jest łatwe, ale to dopiero początek. Aby dowiedzieć się więcej o bezpieczeństwie bazy kodu, musisz zintegrować inne typy testów z cyklem życia oprogramowania.

O prawach reklamy

Niezawodny serwer VPS a właściwy wybór planu taryfowego pozwoli Ci mniej odrywać się od rozwoju nieprzyjemnymi problemami - wszystko będzie działać bezawaryjnie i z bardzo wysokim czasem sprawności!

Jak używać prostego narzędzia do wyszukiwania luk w kodzie programu

Źródło: www.habr.com

Dodaj komentarz