Blootstelling van het containerregister

Blootstelling van het containerregister

Anonieme pull lekt uw code. Anonieme push komt in de plaats.

Wat is Blootstelling van het containerregister?

Een register waarmee anoniem uw broncode, uw configuratie en uw geïmplementeerde artefact kunnen worden opgehaald, wordt doorgegeven aan iedereen die de naam van de repository raadt. Met een anonieme push kan een aanvaller de tag overschrijven die u gaat verzenden, zonder dat de pijplijn er iets van merkt. U haalt een productie-image op, herbouwt het met een implantaat, duwt het terug onder dezelfde release-tag en geeft dat implantaat een opdracht binnen de lopende service. Vervolgens hebt u authenticatie, scope-push nodig, release-tags als onveranderlijk markeren en de geïmplementeerde afbeelding verifiëren door middel van samenvatting in plaats van taggen.

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.

Dekking van beveiligingsframeworks

CWE

  • CWE-306 Missing Authentication for Critical Function
  • CWE-732 Incorrect Permission Assignment for Critical Resource

MITRE ATT&CK

  • T1525 Implant Internal Image

CIS Controls

  • CIS 6 Access Control Management
  • CIS 2 Inventory and Control of Software Assets

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
  • PR.AA Identity Management, Authentication, and Access Control
  • ID.AM Asset Management