Bezpieczeństwo oprogramowania dzięki narzędziom GitGuardian
Każdy deweloper chce tworzyć bezpieczne i niezawodne oprogramowanie. Powinni być dumni z wydania swojego kodu z pełnym przekonaniem, że nie wprowadzili żadnych słabości ani antywzorców do swoich aplikacji. Niestety, w dzisiejszych czasach deweloperzy w dużej mierze nie piszą własnego kodu. Aż 96% oprogramowania zawiera komponenty open-source, które stanowią od 70% do 90% dowolnego nowoczesnego oprogramowania. Niestety, większość współczesnych podatności pochodzi właśnie z tych komponentów.
Gdy pojawiają się nowe podatności i są publicznie zgłaszane jako Common Vulnerabilities and Exposures (CVEs), zespoły ds. bezpieczeństwa nie mają innego wyboru, jak tylko poprosić dewelopera o refaktoryzację kodu w celu uwzględnienia innych wersji zależności. Nikt nie jest zadowolony z tej sytuacji, ponieważ blokuje to wprowadzenie nowych funkcji i może być frustrujące, gdy trzeba cofnąć wersje komponentów i mieć nadzieję, że nic się nie zepsuje. Deweloperzy potrzebują sposobu na szybkie określenie, czy komponent, który chcą użyć, ma znaną podatność, zanim wykonają pull request.
Na szczęście dla deweloperów i zespołów ds. bezpieczeństwa, skanowanie w poszukiwaniu CVEs lokalnie, automatycznie i przed jakimikolwiek commitami jest teraz łatwiejsze i szybsze niż kiedykolwiek.

Zrozumienie, co jest w twoim kodzie, zanim zostanie zaangażowany
Analiza kodu źródłowego (SCA) najczęściej pojawia się w dyskusjach o Bill Of Materials (SBOM) i w rozmowach o zgodności, zwykle znacznie później niż samo pisanie kodu. Dzięki GitGuardian Software Composition Analysis (SCA), deweloperzy mogą skanować problemy bezpośrednio ze swojego terminala na każdym etapie swojej pracy, dzięki ggshield, CLI od GitGuardian. Jednym szybkim poleceniem, programiści mogą sprawdzić, czy dana wersja zależności wprowadza znaną podatność. GitGuardian pokaże również, czy dostępne jest rozwiązanie problemu.
Na przykład, dodaliśmy wymóg dla biblioteki go-getter
i określiliśmy wersję 1.7.1. Może być wiele powodów, dla których deweloper użył tej wersji, na przykład kopiowanie z starszego tutoriala lub postu online, który wyjaśnia funkcjonalność tej biblioteki. Prosty skan SCA pokazuje, że nie tylko ta wersja wprowadza znaną podatność, ale również, że dostępna jest poprawka w wersji 1.7.4.
Automatyczne skanowanie tylko nowych zmian
Podczas gdy lokalne skanowanie kodu w poszukiwaniu CVEs jest bardzo potężne, nadal jest to proces manualny. Ludzie są świetni w byciu kreatywnymi, ale nie jesteśmy najlepsi w konsekwentnym wykonywaniu każdego kroku w procesie wielokrotnie, zwłaszcza tych monotonnych. Dobrze, że każdy deweloper ma cały system automatyzacji wbudowany bezpośrednio w swoje ulubione narzędzie do zarządzania kodem źródłowym, Git Hooks.
GitGuardian SCA może być uruchamiany automatycznie na etapie pre-commit lub pre-push w ramach workflow Git. Idealnym momentem na wychwycenie jakiegokolwiek problemu w kodzie jest zanim trafi on do historii projektu. Jeśli nigdy nie zostanie zaangażowany, to skan bezpieczeństwa nie wykryje później problemu w pipeline CI/CD lub produkcji. Ponieważ codziennie pojawiają się nowe CVEs, powinniśmy robić wszystko, aby nie dodawać znanych podatności do naszego kodu.
Skanowanie tylko odpowiedniego zakresu pracy
W przykładowym git hooku używamy polecenia ggshield sca scan pre-commit
zamiast ggshield sca scan all
, jak to miało miejsce w manualnym przykładzie. Ta wersja skanowania SCA ogranicza skanowanie tylko do bieżącego katalogu roboczego, czyli tylko zmian wprowadzonych od ostatniego commitu. Dzięki temu, jeśli istniejące podatności w kodzie nie mogą jeszcze zostać rozwiązane, nie zablokują one twoich zmian. Zidentyfikowane zostaną tylko nowe problemy z zależnościami, a commit zostanie wstrzymany.
W tym przykładzie commit nie tylko nie następuje, ale wiadomość od GitGuardian informuje nas, że dostępna jest poprawka w późniejszej wersji. Wszystko, co nasz deweloper musi zrobić, to zmienić jeden znak w zidentyfikowanym pliku, zapisać go, a następnie może pomyślnie wykonać nowy commit.
Rozwiązywanie problemów wcześniej
Bezpieczeństwo wymaga zaangażowania całej organizacji, uzbrojenie zespołu deweloperów w odpowiednie narzędzia do wczesnego wykrywania i eliminowania problemów z bezpieczeństwem może wyeliminować wiele problemów później w procesie dostarczania oprogramowania. Im bliżej produkcji zostanie wykryty problem, tym droższe jest jego naprawienie. Dlatego udostępniliśmy GitGuardian SCA jako pre-commit Git Hook, aby każdy deweloper mógł zapobiec dodaniu znanej podatności do pipeline, a ostatecznie do produkcji.
GitGuardian SCA jest dostępny na dwutygodniowy darmowy okres próbny po krótkiej rozmowie z naszym zespołem. SCA to tylko jedno z zagadnień, które adresuje pakiet produktów GitGuardian. Integrujemy również szereg narzędzi bezpieczeństwa, w tym wykrywanie tajemnic, monitorowanie publiczne, bezpieczeństwo infrastruktury jako kodu i Honeytoken.
Dawid Lis
Dawid Lis, Inżynier ds. Wdrożeń Systemów Cyberbezpieczeństwa w firmie Advatech, to absolwent renomowanego Wydziału Elektroniki Politechniki Wrocławskiej. Jego pasja do cyberbezpieczeństwa rozpoczęła się w 2021 roku, kiedy to rozpoczął swoją profesjonalną karierę w tej dziedzinie.
Jako Inżynier ds. Wdrożeń Systemów Cyberbezpieczeństwa, Dawid kieruje się głównie audytami i testami, które mają na celu sprawdzenie oraz wzmocnienie zabezpieczeń systemów. Jego zaangażowanie w tę dziedzinę nie kończy się na środowisku zawodowym – aktywnie dzieli się swoją wiedzą i doświadczeniem na platformach społecznościowych, zachęcając zarówno osoby techniczne, jak i nietechniczne do podnoszenia świadomości w obszarze cyberbezpieczeństwa.
Dawidowi zależy na tym, aby przekazywać zdobytą wiedzę w sposób przystępny i atrakcyjny, aby zainteresować jak największą liczbę osób. Jego naczelną misją jest edukacja w świecie cyfrowym, który uważa za kluczowy obszar współczesnej rzeczywistości. Poza pracą zawodową, Dawid pasjonuje się rozwiązywaniem CTF-ów (Capture The Flag), widząc w nich zarówno wyzwanie, jak i fascynującą zabawę.
