Blootstelling van het containerregister

Blootstelling van het containerregister

A registry that allows anonymous pull leaks your source, and one that allows anonymous push lets an attacker replace the tag you deploy. Do both, then fix it with authentication, scoped push, and immutable tags.

Wat is Blootstelling van het containerregister?

Een containerregister bevat je broncode, je configuratie en het artefact dat je deployt. Een register dat anonieme pull toestaat, geeft dit allemaal aan iedereen die de naam van een repository raadt, en een register dat anonieme push toestaat, laat een aanvaller een tag vervangen die je op het punt staat uit te leveren. Deze oefening behandelt beide helften: bekijk hoe een aanvaller een private image leest en vervolgens een tag vergiftigt, en los het daarna op met authenticatie, scoped push-rechten en onveranderlijke tags.

Wat je leert in Blootstelling van het containerregister

Blootstelling van het containerregister — Trainingsstappen

  1. Scan naar een publieke repo

    Bob richt zich niet specifiek op Quenmoor. Hij scant self-hosted registries op registries die antwoorden zonder login, en somt vervolgens hun repositories op om er een te vinden die leesbaar is achtergelaten. Quenmoor's registry antwoordt, en één repository valt op.

  2. Een privé-repo die openstond

    Bob scant self-hosted registries op repositories die hij niet zou moeten kunnen bereiken. Quenmoor's registry antwoordde hem zonder te vragen wie hij was, en één repository valt op: een interne dispatchservice.

  3. Publiek, en beschrijfbaar

    Dit is een interne service, maar het toegangsbeleid staat wagenwijd open. Bob leest de twee instellingen die voor hem van belang zijn.

  4. Haal het anoniem binnen

    Geen credentials, geen lidmaatschap, geen toegangsverzoek. Bob richt Docker op de registry en haalt het productie-image direct binnen.

  5. Lees hun productieconfiguratie

    Het image is niet alleen code. Het draagt de configuratie waarmee het draait, ingebakken in een laag. Bob start er een container vanuit en leest dat bestand er direct uit.

  6. Herbouw het met een backdoor

    Het image lezen was diefstal; het overschrijven is controle. Omdat hij hun echte productie-image heeft binnengehaald, herbouwt Bob er direct vanuit en voegt hij één enkele laag toe. Dit is de Dockerfile.

  7. De laag die hij toevoegde

    Al het andere is hun ongewijzigde image. Eén RUN maakt er een houvast van dat bij elke deploy wordt meegeleverd.

  8. Tag het als hun release

    Bob bouwt het vergiftigde image en tagt het met exact de naam waarvandaan Quenmoor uitrolt, zodat de registry het als de productierelease behandelt.

  9. Push een vergiftigde tag

    Het image lezen is diefstal. Het overschrijven is controle. Bob herbouwt het image met een backdoor in het entrypoint en pusht het terug naar exact de tag waarvandaan Quenmoor uitrolt. De registry accepteert het zonder te vragen wie hij is.

  10. Wat de push hem opleverde

    De volgende deploy rolde Bob's tag uit naar productie, en de laag die hij toevoegde belde naar huis vanuit de draaiende service. Hij hoeft Quenmoor niet meer van buitenaf te bereiken: zijn code is de service.