Graudit obsługuje wiele języków programowania i umożliwia integrację testów bezpieczeństwa bazy kodu bezpośrednio z procesem rozwoju.
Źródło:
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
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
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
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.
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:
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
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
Źródło: www.habr.com