Embedded security – know how wdrożenia procesu security do developmentu systemów embedded

UDOSTĘPNIJ

Autor: Piotr Strzałkowski, ekspert w dziedzinie embedded

Od wielu lat pracujemy przy projektach, w których bezpieczeństwo odgrywa kluczową rolę. Szczególnie w systemach wbudowanych (embedded systems) odporność na cyber ataki jest niezwykle pożądana. W tym artykule omówię przebieg wdrażania procesu cyber security do systemów embedded. Dziś przeczytasz o podstawowych etapach procesu. W kolejnych tekstach będę dzielił się wiedzą i omawiał szczegółowo każdy z etapów.

Embedded security w pigulce

Analiza systemu/System analysis

Najpierw powinniśmy sobie zadać pytanie: czy w ogóle warto wprowadzać proces cyber-security dla danego systemu? Odpowiedź poznamy po przeprowadzeniu analizy bezpieczeństwa naszego nowo powstającego systemu wbudowanego (embedded).

Trzeba pamiętać, że cyber security to nie jest element, który może być zaimplementowany w końcowej fazie developmentu. Proces ten ma bardzo duży wpływ na architekturę systemu, hardware i software, a to oznacza, że musi być wprowadzony w pierwszej fazie tworzenia systemu. Kolejne fazy i zadania są z nimi związane i muszą być wykonywane równolegle z postępem „normalnych” prac deweloperskich HW (hardware) i SW (software). Warto wspomnieć, że połowiczne wdrożenie procesu, na przykład wprowadzenie zabezpieczeń SW, bez wymaganego zabezpieczenia HW mija się z celem. Można to porównać do budowy twierdzy warownej, gdzie mur obronny posiada otwory zamiast uzbrojonych wrót.

Przeprowadzona analiza zagrożeń i ryzyk nie musi być skomplikowana. Można ją zrealizować z zespołem nawet w formie burzy mózgów. Podczas takiej analizy staramy się przewidzieć, na jakie zagrożenia narażony jest nasz system i z jakim prawdopodobieństwem. Próbujemy też przewidzieć konsekwencje ataków hakerskich dla systemu i naszej organizacji.

Dla uproszczenia można użyć trzystopniowej skali, by określić poziom skutków i prawdopodobieństwo ataku.

Podczas analizy ryzyk i zagrożeń należy szukać odpowiedzi na kilka kluczowych pytań:

  • Jakie konsekwencje finansowe dla firmy może nieść ze sobą atak hakerski na nasz system embedded?
  • Jakie konsekwencje wizerunkowe dla firmy to przyniesie?
  • Jakie konsekwencje będzie miał atak hakerski na działanie systemu i infrastruktury go obsługującej?
  • Jakie będą konsekwencje dla danych użytkowników systemu?
  • Czy atak hakerski będzie miał wpływ na pojedynczy system/urządzenie czy całą infrastrukturę systemów/urządzeń?
  • W jakim stopniu normalna eksploatacja urządzenia wystawia nasze urządzenie na ataki i jakiego typu?

Podsumowując, im więcej mamy ryzyk o wysokim prawdopodobieństwie, im więcej przewidujemy konsekwencji tych ryzyk oraz im większy mają wpływ na nasz system lub organizację, tym większą mamy pewność, że proces cyber security musi być włączony do prac nad wytarzanym systemem embedded.

Faza koncepcji

Jeśli wstępna analiza zagrożeń i ryzyk potwierdziła konieczność wdrożenia procesu cyber security – czeka nas zaplanowanie konkretnych działań w ramach danego projektu i całej organizacji. Dzieje się tak dlatego, że cyber security nie dotyczy tylko samych projektów. Należy również przeszkolić pracowników firmy z zakresu  cyberbezpieczeństwa.

Fazę koncepcji można podzielić na następujące etapy:

  • Definicja funkcjonalności.
  • Start planowania aktywności cyber security w ramach życia projektu.
  • Analiza zagrożeń i ryzyk.
  • Koncepcja cyber security.
  • Identyfikacja funkcjonalnych wymagań cyber security.
  • Rozpoczęcie procesu asessmentu/oceny cyber security.
  • Przegląd fazy koncepcji cyber security.

Rozwinięcie poszczególnych pojęć będzie kontynuowane w następnych artykułach

Gdy mamy już wszystko zaplanowane pora działać – przechodzimy do fazy developmentu.

Faza developmentu

Na tym etapie skupiamy się na sprawdzaniu zabezpieczeń dla trzech różnych poziomów: systemowego, hardware i software.

 

Bezpieczeństwo systemów informatycznych / Embedded Security

Powinniśmy zdefiniować zagrożenia i podatności na ataki na poziomie systemowym. Jest to też moment, w którym należy opisać interfejsy, sposób wymiany i zarządzania danymi pomiędzy naszym oprogramowaniem a sprzętem. Stworzone dokumenty w ramach tego etapu są bazą dla kolejnych etapów procesu CS (cyber security), np: HW (hardware) i SW (software). Na tym etapie odbywają się testy integracyjne pomiędzy oprogramowaniem a sprzętem. Jeśli jest taka potrzeba, mogą się również odbywać testy penetracyjne i podatności. Dodatkowo, na tym etapie warto zadbać o testy weryfikacyjne i walidacyjne funkcjonalności cyber security.

Hardware odporny na cyber ataki

Należy zdefiniować zagrożenia i podatności na ataki hackerskie na poziomie sprzętu. W ramach działań na tym etapie dokonywane jest wyodrębnienie wymagań cyber security dotyczących sprzętu. Jest to moment, w którym wykonywana jest dogłębna analiza podatności układów scalonych i architektury sprzętowej. Analiza ta umożliwia nam wykrycie potencjalnych zagrożeń i pomaga w zarządzeniu, czyli zmniejszaniu ilości tych zagrożeń. Na tym etapie mogą odbywać się również testy integracyjne sprzętu, czy też częściowo, testy penetracyjne i podatności.

Cyberbezpieczny software

Definiujemy zagrożenia i podatności na poziomie oprogramowania. Na tym etapie wyodrębniamy wymagania cyber security dotyczące oprogramowania. Należy w tym momencie wykonać dogłębną analizę architektury, jak i podatności oprogramowania, na przykład analiza kodu open source. Tak jak w przypadku zabezpieczenia sprzętu powinniśmy przeprowadzić analizę, która umożliwi wykrycie potencjalnych zagrożeń w poszczególnych modułach oprogramowania oraz pomoże im zapobiec. Na tym etapie mogą także odbywać się unit testy, testy integracyjne oprogramowania, czy też pewne elementy testów penetracyjnych i podatności.

Produkcja, serwis i użytkowanie

Ten etap procesu skupia się na opisie i zarządzeniu działaniami skorelowanymi z cyber security na etapie produkcji systemu embedded, jego serwisowaniu i codziennym użytkowaniu. Po wytworzeniu (developmencie) danego systemu prawdziwa podróż dopiero się rozpoczyna, ponieważ nasza praca i założenia zderzają się z rzeczywistymi zagrożeniami i problemami użytkowników. Aby to zderzenie nie było zbyt drastyczne warto wcześniej przygotować się na pewne scenariusze i przygotować odpowiednie procesy postępowania. Wyodrębnić należy następujące tematy:
  • Zarządzenie procesem produkcji i serwisu pod kątem cyber security (klucze, serwery, krypto elementy, wymiana kluczowych elementów systemu lub urządzenia).
  • Zarządzanie procesem aktualizacji oprogramowania podczas serwisu i codziennego użytkowania (klucze, serwery).
  • Zarządzenie procesem aktualizacji po zgłoszeniu podatności (wykrycie, analiza,  testy, development, poprawki).
  • Zarządzenie procesem cyklicznego przeglądu podatności.
  • Zarządzenie procesem przetrzymywania kodu źródłowego, kodu źródłowego testów, jak i infrastruktury deweloperskiej i testowej.
  • Zarządzenie procesem utrzymania, jak i monitorowania systemów będących w codziennym użytkowaniu.
Jest jeszcze jeden ważny wątek, który nie jest co prawda, kolejnym etapem procesu wdrażania cyber security do systemów embedded, jednak nie powinno się go pomijać.

Procesy wspomagające

Ten temat stanowi ważne zagadnienie w ramach współpracy z podwykonawcami i zgodności z normami przemysłowymi i firmowanymi.

Procesy wspomagające mogą występować na poszczególnych etapach procesu cyber security i powinny być realizowane w ramach konkretnych zadań. Mogą one być związane z normami, jakie produkt musi spełnić lub wybranymi normami firmowymi. Dodatkowo procesy te mogą opisywać sposób współpracy z podwykonawcami HW i SW.

Wprowadzając standardowe i spójne w ramach projektu wytyczne, które będą opisywać, w jaki sposób ma być sprawdzana jakość dostarczonego kodu od podwykonawcy, gwarantuje nam powtarzalność procesu bez względu na to, kto z zespołu będzie go wykonywał i zwiększa sprawność wykonania zadania.

Przykładowe opisy wymagań dotyczące procesów wspomagających:

  • wszelkie zmiany, które mogą mieć wpływ na cyberbezpieczeństwo są oceniane i akceptowane przez wybrany zespół ekspertów,
  • wymagane jest ustalanie i utrzymanie odpowiednich kanałów komunikacji między dostawcą a klientem,
  • wszelkie problemy związane z cyberbezpieczeństwem, o których może dowiedzieć się dostawca, są zgłaszane klientowi w odpowiednim czasie,
  • odpowiednie przeglądy kodu lub dokumentacji są ustalane na kluczowych etapach projektu z uwzględnieniem dostępu klienta do produktu końcowego danego etapu,
  • wytworzony przez podwykonawcę kod zawsze idzie w parze z zestawem wymaganych testów do danej cześć systemu.

Omówiłem poszczególne etapy wdrażania procesu cybersecurity do projektowania systemów embedded. W kolejnym artykule opowiem więcej na temat fazy koncepcji, żeby pomóc Wam kompleksowo przygotować się do zabezpieczenia Waszego oprogramowania wbudowanego przed atakami hakerów.

 
Nie masz czasu na zdobywanie wiedzy, bo Twój system potrzebuje ochrony tu i teraz? Nasi eksperci od cyberbezpieczeństwa systemów wbudowanych zrealizowali z sukcesem już wiele projektów. Może Twój będzie następny? Napisz do nas.

Najnowsze wpisy na blogu