heygrc
NIST 800-53 CM-7 w kodzie

Tylko te funkcje, których naprawdę potrzebujesz.

CM-7 (minimalna funkcjonalność) to kontrola NIST 800-53, która nakazuje, aby system był skonfigurowany tak, by zapewniał jedynie niezbędne funkcje, a usługi, porty i funkcje, których nie potrzebuje, były wyłączone lub ograniczone. Każda zbędna funkcja to dodatkowa powierzchnia ataku. Powierzchnia ataku jest dodawana w kodzie: zainstalowany pakiet, włączona usługa, otwarty port, pozostawiona aktywna flaga funkcji.

How it shows up in a diff

The shapes the same control failure takes.

Zasada minimalnej funkcjonalności jest naruszana za każdym razem, gdy zmiana dodaje funkcję, której system nie potrzebuje do wykonywania swoich zadań. Typowe przypadki:

  • Dodano niepotrzebną usługę

    Instalowany i uruchamiany jest demon lub agent, którego aplikacja nie potrzebuje (np. serwer SSH, niepotrzebny sidecar), dodając usługę i port do każdej instancji.

  • Narażony interfejs zarządzania lub debugowania

    Konsola administracyjna, profiler lub punkt końcowy debugowania jest dostępny w środowisku produkcyjnym, dając atakującemu potężną powierzchnię ataku.

  • Ponownie otwarty port lub protokół

    Port lub stary protokół, który został wyłączony, jest ponownie włączony dla wygody, poszerzając zakres dostępnych punktów wejścia.

  • Pozostawiona aktywna funkcja tylko do celów developerskich

    Trasa seed, punkt końcowy z danymi przykładowymi lub tryb szczegółowy przeznaczony do rozwoju jest dostarczany w wersji produkcyjnej z włączoną opcją.

  • Pozostawiona domyślna, szeroka konfiguracja

    Niezabezpieczona, ale wygodna domyślna konfiguracja (np. wyświetlanie zawartości katalogu, ogólna lista dozwolonych hostów) pozostaje aktywna zamiast zostać zawężona do niezbędnych potrzeb.

Worked example

Serwer SSH zagnieżdżony w obrazie kontenera.

Inżynierowie chcą uzyskiwać dostęp do powłoki kontenerów w celu debugowania, więc obraz instaluje serwer SSH i uruchamia go podczas startu. Działa to, a teraz każdy uruchomiony kontener uruchamia usługę sshd, której nie potrzebuje: usługę nasłuchującą połączeń na całej flocie, dla okazjonalnej wygody.

Dockerfile+2 -1
FROM python:3.12-slim+ RUN apt-get update && apt-get install -y openssh-serverCOPY . /app- CMD ["python", "app.py"]+ CMD service ssh start && python app.py
heygrcNIST 800-53 CM-7

Instalacja i uruchomienie serwera SSH sprawia, że każdy kontener uruchamia usługę, której nie potrzebuje, nasłuchując połączeń i powiększając powierzchnię ataku całej floty. CM-7 (minimalna funkcjonalność) wymaga, aby system zapewniał jedynie niezbędne funkcje i wyłączał niepotrzebne usługi. Zamiast wbudowywać sshd w obraz, użyj narzędzi platformy (kubectl exec, docker exec), aby uzyskać dostęp do powłoki, gdy jest to potrzebne.

What an auditor does with this

Zgodność z zasadą minimalnej funkcjonalności jest sprawdzana na podstawie tego, co jest faktycznie uruchomione.

Ocena zgodności z NIST 800-53 sprawdza, czy system uruchamia jedynie to, czego potrzebuje: usługi, porty i funkcje, które są włączone, oraz czy niepotrzebne zostały wyłączone lub ograniczone. Zmiana, która dodaje usługę, naraża interfejs zarządzania lub ponownie otwiera port, to konkretne poszerzenie powierzchni ataku, które jest widoczne w diffie obrazu, manifestu lub konfiguracji.

What this is, and is not

Przegląd, a nie potok hartowania.

heygrc sygnalizuje zmiany dotyczące CM-7 i cytuje kontrolę, aby naprawa nastąpiła w pull request. Nie uruchamia skanów benchmarkowych ani automatyzacji hartowania. Wychwytuje moment, w którym zmiana dodaje funkcję, której system nie potrzebuje, na poziomie diffu.