Graudit obsługuje wiele języków programowania i pozwala na integrację testów bezpieczeństwa kodu bezpośrednio w procesie rozwoju.

Źródło: (Markus Spiske)
Testowanie to ważna część cyklu życia oprogramowania. Istnieje wiele rodzajów testowania, z których każdy ma swoje zadanie. Dziś chciałbym porozmawiać o poszukiwaniu problemów z bezpieczeństwem w kodzie.
Oczywiste jest, że w dzisiejszych realiach rozwoju oprogramowania ważne jest zapewnienie bezpieczeństwa procesów. Wprowadzono nawet specjalny termin DevSecOps. Pod tym terminem rozumie się szereg procedur mających na celu identyfikację i eliminację luk w aplikacjach. Istnieją specjalistyczne rozwiązania open source do sprawdzania luk według standardów , które opisują różne typy i zachowania luk w kodzie źródłowym.
Istnieją różne podejścia do rozwiązywania problemów bezpieczeństwa, takie jak statyczne testowanie bezpieczeństwa aplikacji (SAST), dynamiczne testowanie bezpieczeństwa aplikacji (DAST), interaktywne testowanie bezpieczeństwa aplikacji (IAST), analiza komponentów oprogramowania (Software Composition Analysis) i wiele innych.
Statyczne testowanie bezpieczeństwa aplikacji wykrywa błędy w już napisanym kodzie. To podejście nie wymaga uruchamiania aplikacji, dlatego nazywa się to analizą statyczną.
Skupię się na statycznej analizie kodu i wykorzystam prostą aplikację open source, aby pokazać wszystko w praktyce.
Dlaczego wybrałem open source narzędzie do statycznej analizy bezpieczeństwa kodu
Jest kilka powodów: po pierwsze, jest to darmowe, ponieważ korzystasz z narzędzia opracowanego przez społeczność entuzjastów, którzy chcą pomóc innym deweloperom. Jeśli masz mały zespół lub startup, masz doskonałą okazję, aby zaoszczędzić, korzystając z oprogramowania open source do sprawdzania bezpieczeństwa swojego kodu. Po drugie, to zwalnia Cię z konieczności zatrudniania osobnego zespołu DevSecOps, co jeszcze bardziej obniża Twoje koszty.
Dobre narzędzia open source zawsze są tworzone z myślą o zwiększonej elastyczności. Dlatego można je stosować praktycznie w każdym środowisku, obejmując szeroki zakres zadań. Programistom znacznie łatwiej jest zintegrować takie narzędzia z systemem, który już zbudowali, pracując nad swoimi projektami.
Jednak mogą wystąpić sytuacje, w których potrzebna będzie funkcja, której brakuje w wybranym narzędziu. W takim przypadku masz możliwość forkowania jego kodu i opracowania na jego podstawie własnego narzędzia z potrzebną funkcjonalnością.
Ponieważ w większości przypadków na rozwój oprogramowania z otwartym kodem źródłowym znacząco wpływa społeczność, decyzje o wprowadzeniu zmian są podejmowane wystarczająco szybko i na temat: programiści projektu open source opierają się na opiniach i sugestiach użytkowników, ich zgłoszeniach o znalezionych błędach oraz innych problemach.
Użycie Graudit do analizy bezpieczeństwa kodu
Do statycznej analizy kodu można używać różnych narzędzi open source, nie istnieje uniwersalne narzędzie dla wszystkich języków programowania. Programiści niektórych z nich stosują się do zaleceń OWASP i starają się objąć jak najwięcej języków.
Tutaj użyjemy , prostego narzędzia linii poleceń, które pozwoli nam znaleźć luki w naszej bazie kodu. Obsługuje różne języki, jednak ich zestaw jest ograniczony. Graudit został opracowany na podstawie narzędzia pomocniczego grep, które w swoim czasie zostało wydane na licencji GNU.
Istnieją podobne narzędzia do statycznej analizy kodu — Rough Auditing Tool for Security (RATS), Securitycompass Web Application Analysis Tool (SWAAT), flawfinder i inne. Jednak Graudit jest bardzo elastyczny i ma minimalne wymagania techniczne. Niemniej jednak mogą wystąpić zadania, które Graudit nie jest w stanie rozwiązać. W takim przypadku można poszukać innych opcji w .
Możemy zintegrować to narzędzie z konkretnym projektem, lub udostępnić je wybranemu użytkownikowi, albo — używać go jednocześnie we wszystkich naszych projektach. W tym również przejawia się elastyczność Graudit. Więc najpierw sklonujmy repozytorium:
$ git clone https://github.com/wireghoul/grauditA teraz stwórzmy dla Graudit dowiązanie symboliczne, aby używać go w poleceniu.
$ cd ~/bin && mkdir graudit
$ ln --symbolic ~/graudit/graudit ~/bin/grauditDodajmy alias do .bashrc (lub innego pliku konfiguracyjnego, którego używasz):
#------ .bashrc ------
alias graudit="~/bin/graudit"Restartujemy:
$ source ~/.bashrc # LUB
$ exec $SHELL
Sprawdźmy, czy instalacja powiodła się:
$ graudit -hJeśli zobaczysz coś podobnego, to znaczy, że wszystko jest w porządku.

Będę testował jeden z moich istniejących projektów. Przed uruchomieniem narzędzia musimy przekazać 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.dbWięc przetestowałem dwa pliki js z mojego projektu, a Graudit wyświetlił w konsoli informacje o lukach w moim kodzie:


Możesz spróbować w ten sam sposób przetestować swoje projekty. Listę baz danych dla różnych języków programowania można zobaczyć .
Zalety i wady Graudit
Graudit wspiera wiele języków programowania. Dlatego nadaje się dla szerokiego kręgu użytkowników. Może rywalizować z każdymi bezpłatnymi lub płatnymi odpowiednikami. I bardzo ważne, że projekt nadal jest rozwijany, a społeczność nie tylko wspiera programistów, ale i innych użytkowników, którzy próbują zrozumieć narzędzie.
To wygodne narzędzie, ale na razie nie zawsze jest w stanie dokładnie wskazać, na czym konkretnie polega problem związany z podejrzanym fragmentem kodu. Programiści nadal rozwijają Graudit.
Jednak w każdym przypadku warto zwracać uwagę na potencjalne problemy bezpieczeństwa w kodzie, korzystając z podobnych narzędzi.
Początek...
W tym artykule rozważyłem tylko jeden z wielu sposobów na wykrywanie luk — statyczne testowanie bezpieczeństwa aplikacji. Przeprowadzenie statycznej analizy kodu jest łatwe, ale to dopiero początek. Aby lepiej poznać bezpieczeństwo twojej bazy kodu, trzeba zintegrować w cykl życia rozwoju oprogramowania inne rodzaje testowania.
Reklama
a właściwy wybór planu taryfowego pozwoli mniej odrywać się od разработок na nieprzyjemne problemy — wszystko będzie działać bez zakłóceń i z bardzo wysokim uptime!
Źródło: habr.com
