Minimale container-images
Elk stuk gereedschap dat je verzendt, is een stuk gereedschap dat de aanvaller erft.
Wat is Minimale container-images?
Een productie-image met een pakketbeheerder, een compiler, een shell en netwerkhulpprogramma's verandert een beperkte applicatiefout in een werkende toolkit. De aanvaller brengt niets mee; de afbeelding is al verzonden. U gebruikt één opdracht uit een bug in de checkout-service om curl te vinden en de referenties van de instantierol te lezen van het metagegevenseindpunt op 169.254.169.254. Vervolgens splitst u de build in twee fasen, kopieert u alleen het gecompileerde artefact naar een distroless eindbeeld en ziet u hoe een shell niet wordt geopend in de opnieuw geïmplementeerde container omdat er geen is.
Wat je leert in Minimale container-images
- Erken dat een shell, pakketbeheerder, compiler en netwerktools die in een runtime-image worden geleverd, de toolkit van een aanvaller worden
- Traceer hoe één opdracht uit een applicatiefout gebruikmaakt van de meegeleverde curl om de referenties van de instantierol van 169.254.169.254 te lezen
- Configureer een meerfasige build waarbij de buildtools in de buildfase blijven en alleen het gecompileerde artefact naar voren wordt gekopieerd
- Pas een distroless-eindimage toe en controleer of een shell niet kan worden geopend in de opnieuw geïmplementeerde container
- Leg uit hoe het verwijderen van de shell- en pakketbeheerder de gemakkelijkste weg vormt van beperkte code-uitvoering naar controle
Minimale container-images — Trainingsstappen
-
Een foothold in checkout
Bob begint niet met een shell. De checkout-service bouwt PDF-verzendlabels en gebruikt daarvoor een shell-aanroep, en één veld in dat verzoek wordt niet gesaneerd. Hij injecteert een probe om te bevestigen dat hij een commando kan uitvoeren, en om te zien wie en waar hij is.
-
Alles wat de image meelevert
Bob heeft één-commando-tegelijk-executie als de app, maar nog geen shell. Dat is meestal waar een aanvaller vastloopt, tenzij de container hem een toolkit in handen geeft. Voordat hij iets opvallends doet, controleert hij wat er al geïnstalleerd is.
-
Curl de cloud-credentials
De container draait in de cloud, en elke cloudinstantie stelt een metadata-service beschikbaar op een vast intern adres dat de tijdelijke rolcredentials van de machine uitgeeft. Om deze te bereiken is een HTTP-client nodig. De image leverde er één mee.
-
Hoe één commando een breach werd
Bobs toegang tot de app was streng beperkt.
-
Een shell in een runtime-container
Skelwyn draait endpoint detection op zijn containerhosts. Het weet niet waar elke container voor dient; het rapporteert gedrag dat niet bij een runtime past.
-
Bevestig wat er is meegeleverd
Alice reproduceert wat de aanvaller heeft ontdekt: ze vraagt de draaiende container welke van die tools daadwerkelijk aanwezig zijn.
-
Een runtime van 412MB
De toolkit is niet gratis. Het is gewicht, en het is aanvalsoppervlak. Alice controleert de grootte van de image die de service daadwerkelijk draait.
-
Waar de toolkit naar binnen komt
De image wordt gebouwd vanuit één Dockerfile. Alice opent deze om te zien waarom een runtime-container uiteindelijk een compiler bevat.
-
Eén stage, alles wordt meegeleverd
De image wordt in één enkele stage gebouwd en uitgevoerd, dus alles wat de build nodig heeft, bevat de runtime ook.
-
Splits build van runtime
De fix is een multi-stage build: houd de volledige image en de bijbehorende toolchain als een buildstage die de app compileert, en kopieer vervolgens alleen de afgeronde app en de dependencies naar een distroless runtime-image zonder shell, zonder packagemanager en zonder compiler.
Dekking van beveiligingsframeworks
CWE
- CWE-1188 Initialization of a Resource with an Insecure Default
CIS Controls
- CIS 2 Inventory and Control of Software Assets
- CIS 4 Secure Configuration of Enterprise Assets and Software
NIST CSF
- PR.AT-02 Individuals in specialized roles are provided with awareness and training so that they possess the knowledge and skills to perform relevant tasks with cybersecurity risks in mind
- ID.AM Asset Management
- PR.PS Platform Security