Solo le funzionalità di cui hai effettivamente bisogno.
CM-7 (funzionalità minima) è il controllo NIST 800-53 che stabilisce che un sistema deve essere configurato per fornire solo le funzionalità essenziali e disabilitare o limitare i servizi, le porte e le funzioni non necessari. Ogni funzionalità superflua rappresenta una superficie di attacco. E la superficie di attacco viene aggiunta nel codice: un pacchetto installato, un servizio abilitato, una porta aperta, una feature flag lasciata attiva.
The shapes the same control failure takes.
La funzionalità minima si riduce ogni volta che una modifica aggiunge una funzionalità non necessaria per il funzionamento del sistema. Le forme ricorrenti:
Viene aggiunto un servizio non necessario
Un demone o un agente non necessario all'applicazione (un server SSH, un sidecar superfluo) viene installato ed eseguito, aggiungendo un servizio e una porta a ogni istanza.
Un'interfaccia di gestione o debug viene esposta
Una console di amministrazione, un profiler o un endpoint di debug è accessibile in produzione, offrendo a un aggressore una superficie potente da colpire.
Una porta o un protocollo disabilitato viene riaperto
Una porta o un protocollo vecchio precedentemente disabilitato viene riattivato per comodità, ampliando ciò che può essere raggiunto.
Una funzionalità solo per sviluppo viene lasciata attiva
Un route di seed, un endpoint di dati di esempio o una modalità verbosa pensata per lo sviluppo viene distribuita attiva in produzione.
Un'impostazione predefinita ampia viene lasciata invariata
Un'impostazione predefinita insicura ma comoda (elenco directory, una whitelist host con wildcard) viene lasciata attiva invece di essere ristretta a ciò che serve.
Un server SSH integrato in un'immagine container.
Gli ingegneri vogliono accedere alle shell dei container per il debug, quindi l'immagine installa un server SSH e lo avvia all'avvio. Funziona, e ora ogni container in esecuzione esegue un sshd non necessario: un servizio in ascolto per connessioni su tutta la flotta, per una comodità occasionale.
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.pyInstallare e avviare un server SSH fa sì che ogni container esegua un servizio non necessario, in ascolto per connessioni e ampliando la superficie di attacco dell'intera flotta. CM-7 (funzionalità minima) richiede che un sistema fornisca solo le funzionalità essenziali e disabiliti i servizi non necessari. Utilizza l'exec della piattaforma (kubectl exec, docker exec) per ottenere una shell quando necessario, invece di integrare un sshd nell'immagine.
La funzionalità minima viene verificata in base a ciò che è effettivamente in esecuzione.
Una valutazione secondo NIST 800-53 verifica se un sistema esegue solo ciò che gli serve: i servizi, le porte e le funzioni abilitati, e se quelli non necessari sono disabilitati o limitati. Una modifica che aggiunge un servizio, espone un'interfaccia di gestione o riapre una porta rappresenta l'espansione concreta della superficie di attacco dietro di essa, ed è visibile nel diff dell'immagine, del manifest o della configurazione.
Una revisione, non un pipeline di hardening.
heygrc segnalerà le modifiche che interessano CM-7 e citerà il controllo in modo che la correzione avvenga nella pull request. Non esegue le scansioni di benchmark né l'automazione di hardening. Intercetta il momento in cui una modifica aggiunge una funzionalità non necessaria al sistema, direttamente nel diff.