Łańcuch dostaw przebiega przez Twój proces budowania.
Art. 21(2) NIS 2 wymienia środki zarządzania ryzykiem cyberbezpieczeństwa, jakie muszą wdrożyć podmioty objęte zakresem, a punkt (d) dotyczy bezpieczeństwa łańcucha dostaw: zarządzania ryzykiem związanym z dostawcami oraz komponentami, od których zależysz. Dla większości zespołów łańcuch dostaw jest konkretny i istnieje w kodzie: to zależności, które instalujesz, wersje, które przypinasz, oraz skrypty, którym ufasz podczas budowania.
The shapes the same control failure takes.
Bezpieczeństwo łańcucha dostaw słabnie za każdym razem, gdy zmiana importuje kod zewnętrzny z mniejszą weryfikacją niż wcześniej. Powtarzające się wzorce:
Zdalny skrypt jest przekazywany do powłoki
Krok budowania lub konfiguracji pobiera skrypt z internetu i uruchamia go bezpośrednio (np. curl przekazany do bash), wykonując niezweryfikowany zdalny kod z uprawnieniami procesu budowania.
Zależność jest odpięta
Przypięta wersja jest zmieniana na zakres zmienny lub tag ruchomy (np. latest, gałąź), dzięki czemu przyszła, niezweryfikowana wersja może zostać zaimportowana bez powiadomienia.
Sprawdzenie integralności jest usuwane
Plik blokujący, suma kontrolna lub weryfikacja podpisu, które gwarantowały, że otrzymujesz oczekiwany artefakt, są usuwane lub omijane, aby instalacja działała.
Nowy komponent pojawia się bez pochodzenia
Zależność lub obraz jest dodawany ze źródła niezweryfikowanego, bez zapisu, skąd pochodzi lub kto go utrzymuje.
Wewnętrzne lustro lub lista dozwolonych jest omijane
Zmiana importuje pakiet bezpośrednio ze źródła zewnętrznego zamiast z zweryfikowanego wewnętrznego lustra lub rejestru, omijając kontrole nad nim.
Krok budowania uruchamiający zdalny skrypt.
Plik Dockerfile wymaga narzędzia CLI. Najszybsza instalacja to jednowiersz dostawcy, który pobiera i uruchamia skrypt. Działa, ale oznacza, że każde budowanie wykonuje to, co znajduje się pod tym adresem URL, nieprzypięte i niezweryfikowane, z uprawnieniami procesu budowania.
FROM node:22-slim+ RUN curl -fsSL https://get.example-tool.dev/install.sh | bashCOPY . /appPrzekazywanie zdalnego skryptu do powłoki uruchamia niezweryfikowany kod zewnętrzny podczas budowania, a to, co serwuje ten adres URL, może się zmienić bez Twojej wiedzy. Art. 21(2)(d) (bezpieczeństwo łańcucha dostaw) oczekuje, że ryzyka związane z zależnościami i dostawcami będą zarządzane. Przypnij narzędzie do konkretnej wersji i zweryfikuj je (np. sumą kontrolną lub znanym pakietem), zamiast wykonywać to, co zwraca adres URL dzisiaj.
Ryzyko łańcucha dostaw jest oceniane na podstawie zależności, które faktycznie importujesz.
Inspekcja w ramach NIS 2 sprawdza, jak podmiot zarządza bezpieczeństwem swoich dostawców i komponentów, od których zależy: czy zależności są weryfikowane, przypięte i śledzone, a dane wejściowe budowania są zaufane. Zmiana, która wprowadza nieprzypiętą zależność lub uruchamia zdalny skrypt podczas budowania, to konkretne ryzyko łańcucha dostaw, które jest widoczne w diffie pliku manifestu, lockfile lub konfiguracji budowania.
Przegląd, a nie pełny program łańcucha dostaw.
heygrc sygnalizuje zmiany, które dotyczą środka NIS 2, i cytuje odpowiedni punkt, aby poprawka została wprowadzona w pull request. Nie uruchamia analizy składu oprogramowania ani oceny ryzyka dostawców. Wychwytuje moment, w którym zmiana importuje kod zewnętrzny z mniejszą weryfikacją, na poziomie diffu.