Bezpieczny rurociąg CI/CD w 7 krokach
W 2024 roku aż 14 projektów IT, które audytowaliśmy w okolicach Kielc, miało otwarte hasła zaszyte bezpośrednio w skryptach budowania aplikacji. To nie wynika z braku wiedzy, ale z pośpiechu i presji na szybkie dowożenie nowych funkcji. W The SpyBolt widzimy, że rurociąg CI/CD to najsłabszy punkt w obronie firmy, jeśli nikt nie pilnuje go na co dzień.
Skanowanie kodu na starcie
Pierwszy krok to analiza statyczna, czyli sprawdzanie kodu, zanim w ogóle zostanie on uruchomiony. W The SpyBolt używamy do tego lekkich narzędzi, które nie zamulają pracy programisty. W jednym z projektów dla firmy transportowej w zeszłym marcu, takie proste skanowanie wyłapało 23 błędy wstrzykiwania kodu w pierwszej godzinie od uruchomienia. Nie trzeba od razu kupować licencji za 47 tysięcy złotych, by zacząć działać skutecznie.
Zasada jest prosta: im wcześniej znajdziemy błąd, tym mniej kosztuje jego naprawa. Średnio oszczędza to około 3.2 godziny pracy starszego programisty na każdy jeden błąd, który nie trafi na serwer testowy. Wdrażamy skanery tak, aby wynik pokazywał się bezpośrednio w narzędziu, w którym pisany jest kod. Dzięki temu nikt nie musi czytać nudnych raportów PDF pod koniec miesiąca, bo błędy poprawia się na bieżąco podczas pisania.
Warto zacząć od darmowych narzędzi typu open-source, które dobrze skonfigurowane dają 83% skuteczności w wykrywaniu najczęstszych dziur. Kluczem jest tutaj precyzja ustawień, żeby system nie krzyczał o byle drobiazg. W The SpyBolt skupiamy się na krytycznych usterkach, które faktycznie mogą pozwolić komuś na kradzież danych z Twojej bazy.
Błąd wykryty podczas pisania kodu kosztuje 11 razy mniej niż ten znaleziony na produkcji przez klienta.

Koniec z hasłami w plikach tekstowych
Największy problem, jaki spotykamy, to hasła do baz danych zostawione w plikach .env lub wprost w kodzie na GitHubie. W zeszłym kwartale naprawialiśmy skutki wycieku, gdzie klucz do API leżał w publicznym miejscu przez 19 dni. Nikt tego nie zauważył, dopóki rachunek za serwery nie wzrósł o 2,400 złotych. Teraz u każdego klienta wdrażamy automatyczne blokady, które nie pozwalają wysłać kodu, jeśli zawiera on coś, co przypomina hasło.
Takie narzędzie działa jak sitko. Jeśli programista przez pomyłkę zostawi klucz dostępu w skrypcie, system odrzuci taką paczkę i wyśle powiadomienie. To zajmuje około 14 minut konfiguracji, a zdejmuje z głowy potężny problem prawny i finansowy. W The SpyBolt uczymy zespoły, jak korzystać z bezpiecznych magazynów na hasła, do których dostęp mają tylko uprawnione maszyny budujące.
Być szczerym: na początku programiści trochę narzekają, bo muszą zmienić stare nawyki. Jednak po około 12 dniach staje się to dla nich naturalne. Widzą, że to nie jest rzucanie kłód pod nogi, tylko ochrona ich własnej pracy przed głupią pomyłką. W Kielcach pomogliśmy już 3 mniejszym software house'om wdrożyć taki standard bez przerywania bieżących projektów.
Sprawdzanie obcych bibliotek
Współczesna aplikacja składa się w 87% z gotowych klocków pobranych z internetu. Nie wiesz, kto je napisał i czy nie mają w środku luki. W październiku 2024 sprawdzaliśmy panel dla klienta i znaleźliśmy 7 dziur w starych paczkach JavaScript, o których nikt nie pamiętał od 2 lat. Skanowanie zależności (SCA) polega na tym, że przy każdym budowaniu system sprawdza listę Twoich bibliotek z globalną bazą znanych błędów.
Jeśli jakaś biblioteka ma dziurę, proces budowania zostaje wstrzymany. To wymusza na zespole aktualizację do bezpiecznej wersji. Ustawiamy te parametry tak, żeby system nie blokował pracy z powodu błahostek, ale przy błędach typu 'Critical' nie ma zmiłuj. Dzięki temu masz pewność, że nie wystawiasz się na atak tylko dlatego, że ktoś zapomniał wpisać jednej komendy w terminalu.
Przykład z życia: u jednego z naszych klientów z branży e-commerce, takie skanowanie zablokowało wdrożenie nowej funkcji w zeszły wtorek. Okazało się, że nowa wersja popularnej biblioteki do zdjęć miała błąd pozwalający na przejęcie serwera. Naprawa polegała na cofnięciu wersji, co zajęło 8 minut. Gdyby to przeszło na produkcję, usuwanie skutków włamania mogłoby trwać dni.
Używasz obcego kodu? To tak, jakbyś brał używane części do samochodu bez sprawdzania, czy hamulce działają.

Atakowanie własnej aplikacji
Kiedy aplikacja już się zbuduje i działa w środowisku testowym, czas na testy dynamiczne (DAST). To nic innego jak automatyczny atak hakerski kontrolowany przez nas. W grudniu udało nam się w ten sposób wykryć lukę w formularzu u klienta pod Kielcami w zaledwie 4 minuty. Gdyby ten formularz trafił do sieci, każdy mógłby wyciągnąć listę mailową pracowników biura.
Testy te konfigurujemy tak, by trwały maksymalnie 6-9 minut. Nie chcemy, żeby programiści musieli czekać godzinami na wynik swojej pracy. Skupiamy się na 11 najgroźniejszych wejściach, które są najczęściej wykorzystywane przez boty krążące po sieci. To prosta matematyka: lepiej, żeby to nasz robot znalazł dziurę teraz, niż żeby znalazł ją ktoś obcy o 3:00 nad ranem w niedzielę.
W The SpyBolt nie wierzymy w ślepe ufanie narzędziom. Dlatego raz na kwartał nasi inżynierowie przeglądają wyniki tych automatów ręcznie. Dzięki temu odrzucamy fałszywe alarmy, które tylko niepotrzebnie denerwują ludzi. Taki model współpracy sprawia, że bezpieczeństwo staje się częścią codziennej rutyny, a nie wielkim wydarzeniem raz w roku, którego wszyscy się boją.
Zasada minimalnych uprawnień
Ostatnim elementem układanki są uprawnienia samej maszyny, która buduje Twój kod. Często spotykamy sytuację, gdzie skrypt budujący ma dostęp do wszystkiego w firmie – od bazy danych po pliki kadrowe. To ogromny błąd. W lutym tego roku znaleźliśmy rurociąg CI/CD, który miał uprawnienia administratora do całej sieci. Poprawiliśmy to w 2 godziny, tworząc 3 osobne konta techniczne o bardzo ograniczonych uprawnieniach.
Teraz maszyna może tylko odczytać kod i wysłać gotową paczkę w jedno, ściśle określone miejsce. Jeśli ktoś przejąłby kontrolę nad procesem budowania, nie wyjdzie poza małą, bezpieczną piaskownicę. To prosta metoda, która nie kosztuje nic poza czasem poświęconym na konfigurację uprawnień. W The SpyBolt stosujemy zasadę: dajemy tyle dostępu, ile jest niezbędne do wykonania pracy, i ani grama więcej.
Heads-up: Wdrożenie tego kroku wymaga dobrej komunikacji z działem IT, bo nagle niektóre stare skrypty mogą przestać działać. Zazwyczaj jednak wystarczy jedna runda poprawek, by wszystko ruszyło stabilnie. Wynik? Masz święty spokój, wiedząc, że jeden błąd w skrypcie nie położy całej infrastruktury firmy w pięć minut.


