Alleen de functionaliteit die je daadwerkelijk nodig hebt.
CM-7 (least functionality) is de NIST 800-53-controle die stelt dat een systeem zo moet zijn geconfigureerd dat het alleen essentiële functionaliteit biedt, en dat onnodige services, poorten en functies moeten worden uitgeschakeld of beperkt. Elke onnodige functionaliteit is een aanvalsoppervlak. En aanvalsoppervlak wordt toegevoegd in code: een pakket dat wordt geïnstalleerd, een service die wordt ingeschakeld, een poort die wordt geopend, een feature flag die aan blijft staan.
The shapes the same control failure takes.
Least functionality neemt af telkens een wijziging functionaliteit toevoegt die het systeem niet nodig heeft om zijn werk te doen. De terugkerende patronen:
Een onnodige service wordt toegevoegd
Een daemon of agent die de applicatie niet nodig heeft (een SSH-server, een overbodige sidecar) wordt geïnstalleerd en uitgevoerd, waardoor een service en een poort aan elke instantie worden toegevoegd.
Een beheer- of debuginterface wordt blootgesteld
Een admin-console, profiler of debug-endpoint is bereikbaar in productie, waardoor een aanvaller een krachtig aanvalsoppervlak krijgt om op te richten.
Een uitgeschakelde poort of protocol wordt opnieuw geopend
Een poort of een oud protocol dat was uitgeschakeld, wordt opnieuw ingeschakeld voor gemak, waardoor het bereik van wat bereikbaar is, wordt vergroot.
Een alleen-voor-ontwikkeling-functie blijft aan staan
Een seed-route, voorbeelddata-endpoint of uitgebreide modus die bedoeld is voor ontwikkeling, wordt ingeschakeld meegeleverd in productie.
Een brede standaardinstelling blijft staan
Een onveilige maar handige standaardinstelling (directory listing, een wildcard-host-toegangslijst) blijft aan staan in plaats van te worden beperkt tot wat nodig is.
Een SSH-server ingebakken in een containerimage.
Ontwikkelaars willen inloggen in containers om te debuggen, dus het image installeert een SSH-server en start deze bij het opstarten. Het werkt, en nu voert elke draaiende container een sshd uit die niet nodig is: een service die verbindingen afwacht over de hele vloot, voor af en toe gemak.
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.pyHet installeren en starten van een SSH-server zorgt ervoor dat elke container een service uitvoert die niet nodig is, die verbindingen afwacht en het aanvalsoppervlak van de hele vloot vergroot. CM-7 (least functionality) verwacht dat een systeem alleen essentiële functionaliteit biedt en onnodige services uitschakelt. Gebruik de exec-functie van het platform (kubectl exec, docker exec) om een shell te krijgen wanneer dat nodig is, in plaats van een sshd in het image in te bakken.
Least functionality wordt gecontroleerd op wat daadwerkelijk draait.
Een beoordeling op basis van NIST 800-53 kijkt of een systeem alleen uitvoert wat nodig is: de services, poorten en functies die zijn ingeschakeld, en of de onnodige zijn uitgeschakeld of beperkt. Een wijziging die een service toevoegt, een beheerinterface blootstelt of een poort opnieuw opent, is de concrete uitbreiding van het aanvalsoppervlak daaronder, en dit is zichtbaar in de diff van het image, de manifest of de config.
Een review, geen hardening-pipeline.
heygrc markeert wijzigingen die CM-7 raken en verwijst naar de controle, zodat de oplossing in de pull request wordt doorgevoerd. Het voert geen benchmark-scans of hardening-automatisering uit. Het vangt het moment waarop een wijziging functionaliteit toevoegt die het systeem niet nodig heeft, in de diff.