Audyt bezpieczeństwa i architektury systemu firmy Beesset do obsługi Strefy Czystego Transportu w Krakowie

Audyt SCT w Krakowie

Wprowadzenie

Profil klienta

Beesset specjalizuje się w projektowaniu i wdrażaniu zaawansowanych rozwiązań programowo-sprzętowych dla transportu publicznego i pokrewnych sektorów. Firma oferuje systemy dynamicznej informacji pasażerskiej, systemy biletu elektronicznego oraz narzędzia do zarządzania flotą. Dostarcza kompleksowe rozwiązania, w skład których wchodzą: dedykowane portale webowe, aplikacje mobilne i oprogramowanie IoT, np. dla kasowników biletów.

O projekcie

Audytowany przez nas system służy do obsługi krakowskiej Strefy Czystego Transportu (SCT). Umożliwia kierowcom rejestrację pojazdu w celu uzyskania pozwolenia na wjazd do strefy. W tym procesie użytkownik podaje numer rejestracyjny, a system automatycznie sprawdza w CEPiK-u, czy pojazd spełnia normy emisji spalin. Następnie generowana jest opłata oraz odpowiednia nalepka. System udostępnia API, które umożliwia innym systemom i aplikacjom weryfikację prawa do wjazdu do SCT.

Audytowany system składał się z dwóch głównych komponentów:

SCT w Krakowie
Ilustracja z sctwkrakowie.pl, na portalu więcej informacji o projekcie SCT w Krakowie.

Cel audytu

Firma Beesset zgłosiła się do ImpiCode z prośbą o przeprowadzenie kompleksowego audytu bezpieczeństwa i architektury oprogramowania. Audyt był wymagany przez odbiorcę systemu. Również samej firmie Beesset zależało na nim, gdyż dąży do zapewnienia najwyższego poziomu bezpieczeństwa oraz zgodności z najlepszymi praktykami branżowymi.

Wyzwania

Zagrożenia i badane podatności

Celem audytu były dwie aplikacje webowe, z czego jedna z nich pełniąca funkcję panelu dla obywateli jest dostępna w Internecie dla wszystkich. Ponadto system przechowuje dane użytkowników, które nie powinny być ujawnione. W takim wypadku bardzo istotne jest wyeliminowanie możliwych furtek bezpieczeństwa chroniąc system przed wyciekiem zarówno danych jak i informacji o architekturze i użytych technologii.

System został poddany analizie zarówno pod kątem standardowego użytkowania jak również scenariuszy celowych ataków mających na celu destabilizację systemu lub uzyskanie dodatkowych informacji. Następnie dokonano analizy kodu, aby ocenić zgodność z najlepszymi praktykami oraz zidentyfikować potencjalne podatności niewykryte w etapie testów penetracyjnych. Wszystkie używane biblioteki zostały sprawdzone pod kątem znanych podatności w zastosowanych wersjach. Na sam koniec przeanalizowano całą architekturę systemu i zastosowane zabezpieczenia.

Przykłady badanych podatności:

Nasz audytor o potrzebie audytów

Audyty bezpieczeństwa odgrywają kluczową rolę w procesie tworzenia oprogramowania. W dobie, gdy ochrona danych jest priorytetem, a nawet krótkotrwała przerwa w działaniu aplikacji może skutkować poważnymi stratami, identyfikacja potencjalnych podatności staje się niezbędna. Świadomość istnienia luk w projektowanym systemie pozwala na wdrożenie odpowiednich zabezpieczeń przed ich wykorzystaniem, co zwiększa niezawodność systemu oraz minimalizuje ryzyko strat finansowych.

Regularne audyty umożliwiają nie tylko wykrywanie zagrożeń, ale także optymalizację zabezpieczeń i dostosowanie ich do zmieniającego się środowiska IT. Dzięki temu organizacje mogą skutecznie przeciwdziałać atakom i zapewnić ciągłość działania swoich usług. Audyty bezpieczeństwa to nie tylko reakcja na potencjalne zagrożenia, lecz przede wszystkim proaktywne podejście do zarządzania ryzykiem.

autor Adrian Roman, ImpiCode
icon icon

Standard w jakim wykonano audyt

Audyt został wykonany na podstawie ogólno uznawanych standardów, między innymi wykorzystaliśmy standard organizacji OWASP (Open Web Application Security Project), która to udostępnia ogromną checklistę znanych podatności do zweryfikowania. W projekcie wykorzystaliśmy najnowszą jej wersję 4.03.

OWASP
Audyt został oparty na standardzie organizacji Open Worldwide Application Security Project.

Do oceny poziomu zagrożenia wykorzystaliśmy między innymi system CVSS w wersji 4.0, który klasyfikuje w skali od 0 do 10 podatności. W końcowym raporcie audytu pogrupowaliśmy podatności na 5 kategorii w zależności od uzyskanych punktów:

Krytyczna9.0 - 10
Wysoka7.0 - 8.9
Średnia4.0 - 6.9
Niska0.1 - 3.9
Brak wpływu na
bezpieczeństwo
0.0

Wykorzystywane narzędzia w audycie aplikacji

Przeprowadzenie audytu systemu webowego wymaga dokładnego sprawdzenia podatności, w tym również wykonania testów penetracyjnych. Na szczęście dostępne są specjalistyczne narzędzia, które znacznie przyspieszają audyt oraz minimalizują ryzyko błędów. Poniżej przedstawiamy niektóre z narzędzi użytych podczas audytu:

Rezultat

Przebieg audytów

W pierwszej kolejności firma Beesset powierzyła nam wykonanie audytu bezpieczeństwa, zawierał on między innymi testy penetracyjne.

Po wykonanym audycie przekazaliśmy klientowi dokument z podsumowaniem oraz rekomendacjami do wdrożenia. Analizowany przez nas system był bardzo dobrze zabezpieczony i zaprojektowany z zachowaniem dbałości o kwestie bezpieczeństwa. Przyczyniło się to do braku podatności o krytycznym poziomie bezpieczeństwa i pojawieniu się tylko jednej podatności, o wysokim poziomie zagrożenia oraz pojedynczych o poziomach niższych. 

Nasz klient zaaplikował wszystkie sugestie wynikające z raportu i zlecił nam ponowy re-audyt. Ponowne przetestowaniu aplikacji nie wykryło żadnych podatności, czyniąc system w pełni zgodny  z wymaganymi standardami bezpieczeństwa, w tym standardem OWASP.

Klient o naszej współpracy

Zespół ImpiCode wykazał się profesjonalizmem, rzetelnością i zaangażowaniem na każdym etapie współpracy. Projekt był dobrze zorganizowany, a prace przebiegały zgodnie z ustalonym harmonogramem. Zespół potrafił elastycznie reagować na nietypowe sytuacje i zmieniające się wymagania.

Komunikacja była sprawna i przejrzysta, co ułatwiało wspólne podejmowanie decyzji i szybką reakcję na pojawiające się potrzeby. Mieliśmy poczucie, że nasze uwagi są uwzględniane na bieżąco.

Efekty współpracy spełniły nasze oczekiwania. Zespół ImpiCode to solidny partner, którego możemy zarekomendować firmom poszukującym sprawdzonego wykonawcy oprogramowania.

autor Piotr Wysocki, CEO w Beesset
icon icon

W ramach tych prac weryfikowaliśmy między innymi podatności w zastosowanych bibliotekach. Warto zwrócić uwagę, że nawet używając jedynie sprawdzonych i najpopularniejszych bibliotek nie mamy gwarancji, że dane rozwiązanie w danej wersji nie ma podatności. Do wszystkich wykrytych podatności zaproponowaliśmy sposób ich naprawienia (czasami wystarczyła aktualizacja biblioteki, wgranie patch z poprawką lub zastosowanie alternatywnego narzędzia). Programiści klienta wdrożyli odpowiednie zmiany, czyniąc tym samym system bezpieczny na wszystkie znane podatności we wszystkich używanych przez nich bibliotekach w momencie wykonywania audytu.

Na samym końcu audytowaliśmy całą architekturę systemu oraz przeanalizowaliśmy zastosowane mechanizmy bezpieczeństwa. System okazał się bardzo dobrze zaprojektowany i nie wymagał wprowadzania poprawek. W wyniku tego audytu powstał dokument opisujący zastosowane rozwiązania i oceniający poziom bezpieczeństwa infrastruktury i aplikacji na bardzo wysoki.

Nasz kierownik o współpracy

Współpraca z zespołem Beesset przebiegała sprawnie i efektywnie. Materiały oraz wymagane dostępy do systemów zostały przekazane terminowo, co pozwoliło uniknąć opóźnień w realizacji prac. Kod systemu został napisany zgodnie z dobrymi praktykami programistycznymi, co znacząco ułatwiło jego analizę.

autor Adrian Roman, ImpiCode
icon icon

Wnioski końcowe

System stworzony przez firmę Beesset został zaprojektowany i zaimplementowany przy zachowaniu należytej staranności o bezpieczeństwo i z zastosowaniem dobrych praktyk. Na żadnym etapie nie zostały ujawnione krytyczne luki bezpieczeństwa, zaś nieliczne o niższej randze zostały naprawione i ponownie zweryfikowane. System spełnia rygorystyczne wymogi między innymi standardu OWASP.

Posiadając choćby najlepszy zespół programistów, przed ostatecznym wypuszczeniem produktu na rynek, warto sięgnąć po audyt bezpieczeństwa. Programiści nie są w stanie posiadać wiedzy o wszystkich błędach, jakie wystąpiły w używanych przez nich bibliotekach, mogą przeoczyć zmianę działania jakiejś funkcji lub zapomnieć o wyłączeniu wszystkich niebezpiecznych rzeczy w domyślnej konfiguracji (np. wypisywanie stack trace). Dopiero przeprowadzenia audytu sprawdza wszystkie obszary bezpieczeństwa w usystematyzowany sposób. Część testów odbywa się w sposób zautomatyzowany, eliminując dodatkowo ryzyko błędu ludzkiego. Sam zaś koszt audytu stanowi niewielki ułamek całego systemu a jest w stanie znacząco poprawić bezpieczeństwo danych i systemu.

Inne nasze realizacje

Zaufali nam: