8 strategii zwiększania bezpieczeństwa podpisywania kodu

8 strategii zwiększania bezpieczeństwa podpisywania kodu

8 strategii zwiększania bezpieczeństwa podpisywania kodu PlatoBlockchain Data Intelligence. Wyszukiwanie pionowe. AI.

KOMENTARZ

Niedawno pojawiła się wiadomość, że hakerzy włamali się do firmy oferującej rozwiązania do zdalnego dostępu AnyDesk rzuciło ostre światło na potrzebę długiego i dokładnego przyjrzenia się praktykom podpisywania kodu, aby zapewnić bezpieczniejszy łańcuch dostaw oprogramowania.  

Podpisywanie kodu dodaje podpis cyfrowy do oprogramowania, oprogramowania sprzętowego lub aplikacji, co gwarantuje, że kod użytkownika pochodzi z zaufanego źródła i nie był modyfikowany od czasu ostatniego podpisania. Jednak podpisywanie kodu jest tak dobre, jak jego wykonanie, a nieodpowiednie praktyki mogą prowadzić do wstrzykiwania złośliwego oprogramowania, manipulowania kodem i oprogramowaniem oraz ataków polegających na podszywaniu się pod inne osoby. 

Klucze prywatne muszą być chronione, ale wielu programistów (głównie ze względów wygody) utrzymuje własne i przechowuje je na swoich komputerach lokalnych lub serwerach budujących. To naraża je na kradzież i niewłaściwe wykorzystanie, a także stwarza martwe punkty dla zespołów bezpieczeństwa.  

Po Hack SolarWinds w 2020 r. forum organów certyfikacji/przeglądarki (CA/B) wydało nowy zestaw wymagania podstawowe do utrzymywania certyfikatów podpisywania kodu, które wymagają stosowania sprzętowych modułów bezpieczeństwa (HSM), urządzeń przechowujących i zabezpieczających klucze kryptograficzne, a także innych środków ochrony kluczy prywatnych. 

Moduły HSM zapewniają najwyższy poziom bezpieczeństwa, ale zwiększają również koszty, złożoność i wymagania konserwacyjne. O ile nie można ich zintegrować z narzędziami do podpisywania kodu używanymi przez zespół DevOps, rozłączenie może skomplikować dostęp do podpisywania kodu i spowolnić proces.  

Migracja do chmury nadała bezpieczeństwu wyższy priorytet, ale chmura oferuje również rozwiązanie do podpisywania kodu. Podpisywanie kodu w chmurze i moduły HSM mogą zapewnić szybkość i elastyczność, których oczekują programiści, a także scentralizowaną kontrolę, która obsługuje rozproszone zespoły programistów, integruje się z procesami programistycznymi i może być łatwiej monitorowana przez zabezpieczenia. 

Podróż do zintegrowanego podpisywania kodu 

W związku z ostatnimi zmianami z Forum CA / Bnadszedł czas, aby organizacje wyruszyły w podróż mającą na celu unowocześnienie podpisywania kodu za pomocą scentralizowanej kontroli w celu wsparcia zespołów programistycznych. Wiele firm pozostaje na etapie „ad hoc”, gdzie klucze są utrzymywane lokalnie, a programiści korzystają z różnorodnych procesów i narzędzi podpisywania kodu. Inne mają scentralizowaną kontrolę, aby zapewnić zespołom ds. bezpieczeństwa widoczność i zarządzanie, wykorzystując moduły HSM do zabezpieczania kluczy, ale używanie oddzielnych narzędzi do podpisywania kodu nadal wpływa na szybkość tworzenia oprogramowania. 

Idealna, dojrzała struktura wymaga integracji kluczowych zabezpieczeń, narzędzi do podpisywania kodu i przepływów pracy programistycznych, aby proces był płynny i usprawniony we wszystkich kompilacjach, kontenerach, artefaktach i plikach wykonywalnych. Zespoły ds. bezpieczeństwa zarządzają modułami HSM i uzyskują pełny wgląd w podpisywanie kodu, a programiści mają teraz sprawny i szybki proces programowania. 

Kilka najlepszych praktyk może pomóc w utorowaniu drogi w tej podróży: 

  • Zabezpiecz swoje klucze: Przechowuj klucze do podpisywania kodu w bezpiecznym miejscu, takim jak moduł HSM zgodny z wymaganiami kryptograficznymi forum CA/B (FIPS 140-2 poziom 2 lub Common Criteria EAL 4+). Moduły HSM są odporne na manipulacje i uniemożliwiają eksport kluczy prywatnych.

  • Kontrola dostępu: Zminimalizuj ryzyko nieautoryzowanego dostępu i niewłaściwego użycia kluczy prywatnych, ograniczając dostęp poprzez kontrolę dostępu opartą na rolach. Zdefiniuj przepływy pracy zatwierdzania i egzekwuj zasady bezpieczeństwa, aby regulować dostęp tylko do niezbędnego personelu, a także prowadź dzienniki audytu, które rejestrują, kto wyzwolił żądanie podpisania, kto uzyskał dostęp do kluczy i dlaczego. 

  • Obróć klawisze: Jeśli jeden klucz zostanie naruszony, wszystkie podpisane nim wydania będą zagrożone. Regularnie zmieniaj klucze do podpisywania kodu i używaj unikalnych i oddzielnych kluczy do podpisywania różnych wydań w wielu zespołach DevOps. 

  • Kod znacznika czasu:  Certyfikaty do podpisywania kodu mają ograniczony okres ważności – od jednego do trzech lat i maleje. Kod oznaczający czas podczas jego podpisywania może zweryfikować autentyczność podpisu nawet po wygaśnięciu lub unieważnieniu certyfikatu, zwiększając zaufanie do podpisanego kodu i oprogramowania.

  • Sprawdź integralność kodu: Przed podpisaniem i wydaniem ostatecznej wersji kompilacji przeprowadź pełny przegląd kodu, porównując kod na serwerze kompilacji z repozytorium kodu źródłowego i zweryfikuj wszystkie podpisy programistów, aby upewnić się, że są wolne od manipulacji. 

  • Scentralizuj zarządzanie: Dzisiejsze przedsiębiorstwa mają charakter globalny. Scentralizowany proces podpisywania kodu może pomóc w monitorowaniu działań związanych z podpisywaniem i certyfikatów w całym przedsiębiorstwie, niezależnie od tego, gdzie znajdują się programiści. Poprawia widoczność, buduje odpowiedzialność i eliminuje luki w zabezpieczeniach.

  • Egzekwuj zasady: Standaryzuj proces podpisywania kodu, definiując i mapując zasady, w tym uprawnienia do użycia kluczy, zatwierdzenia, wygaśnięcie klucza, typ urzędu certyfikacji, rozmiar klucza, typ algorytmu podpisywania i inne. Automatyzuj egzekwowanie zasad, aby mieć pewność, że cały kod, pliki i oprogramowanie są podpisane w oparciu o zasady i są zgodne ze standardami branżowymi. 

  • Uprość podpisywanie kodu: Integracja i automatyzacja podpisywania kodu za pomocą narzędzi CI/CD upraszcza proces DevOps bez uszczerbku dla bezpieczeństwa, jednocześnie promując szybkość i elastyczność.

W świecie ciągłej integracji i ciągłego wdrażania najlepsze praktyki w zakresie podpisywania kodu stanowią nieoceniony sposób na budowanie zaufania w procesie tworzenia oprogramowania i umożliwiają bezpieczniejszy łańcuch dostaw oprogramowania.

Znak czasu:

Więcej z Mroczne czytanie