Minimale container-images

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

Minimale container-images — Trainingsstappen

  1. 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.

  2. 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.

  3. 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.

  4. Hoe één commando een breach werd

    Bobs toegang tot de app was streng beperkt.

  5. 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.

  6. Bevestig wat er is meegeleverd

    Alice reproduceert wat de aanvaller heeft ontdekt: ze vraagt de draaiende container welke van die tools daadwerkelijk aanwezig zijn.

  7. 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.

  8. 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.

  9. 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.

  10. 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