Geheimen in image-lagen

Geheimen in image-lagen

Als u een geheim verwijdert tijdens de volgende RUN, wordt het niet verwijderd.

Wat is Geheimen in image-lagen?

Afbeeldingslagen kunnen alleen worden toegevoegd. Een referentie die in één RUN wordt doorgegeven, wordt voorgoed in die laag vastgelegd, en een latere RUN die het bestand verwijdert, voegt alleen een laag erbovenop toe. Het bestand is verdwenen; het geheim zit nog steeds in de bouwgeschiedenis. U haalt een openbare image op, leest de niet-ingekorte build-opdracht en gebruikt het publicatietoken. De herstelvolgorde is van belang: trek eerst het token in, voer een scoped-vervanging uit en vervang pas daarna het build-argument door een geheime mount van BuildKit, zodat er niets naar een verzonden laag wordt geschreven.

Wat je leert in Geheimen in image-lagen

Geheimen in image-lagen — Trainingsstappen

  1. Het doelwit inschatten

    Vandaag heeft Bob het gemunt op Cindralt, een betalingsbedrijf waarvan de settlement-service als containerimage wordt uitgeleverd. Hij begint waar iedereen kan beginnen: het eigen containerregister van het bedrijf. Een gepubliceerde image is een gemakkelijk doelwit. Het is precies het artefact dat in productie draait, en het ophalen ervan kost niets.

  2. Iedereen kan het ophalen

    De repository is gepubliceerd voor anonieme pulls. Dat is voor veel bedrijven een bewuste keuze en op zichzelf geen kwetsbaarheid, maar het betekent wel dat het artefact voor Bob onder dezelfde voorwaarden beschikbaar is als voor Cindralts eigen buildservers.

  3. De image ophalen

    Bob haalt de tag op die het register als latest vermeldt. Wat op zijn machine terechtkomt, is byte voor byte wat Cindralt in productie draait, inclusief elke laag die de build onderweg heeft geproduceerd.

  4. De buildgeschiedenis lezen

    Elke image draagt de commando's mee waarmee hij is gebouwd. Bob hoeft de container niet te draaien of iets uit te pakken: de laaggeschiedenis is metadata, en die komt gewoon mee met de pull. Op het eerste gezicht ziet deze build er zorgvuldig uit. Iemand heeft zelfs opgeruimd na de installatie van de dependencies.

  5. Om het volledige commando vragen

    De standaardtabel is gemaakt om in een terminal te passen, niet om de waarheid te vertellen. Bob vraagt de buildcommando's apart op, zonder dat er iets wordt afgekapt. Het installatiecommando schreef een credential naar een configuratiebestand, en die staat nog steeds in de laag die dat commando heeft gemaakt.

  6. Waarom verwijderen niet hielp

    Even stilstaan bij het mechanisme voordat Bob gebruikt wat hij heeft gevonden.

  7. Controleren wat het token opent

    Een credential is alleen zoveel waard als wat hij kan bereiken. Bob vraagt Cindralts package-index van wie dit token is en wat het mag doen. Het antwoord is erger dan één enkele service. Het token kan publiceren naar elk package waarop Cindralt bouwt, en het verloopt nooit.

  8. Wat dat token waard is

    Bob hoeft Cindralts servers niet nog eens aan te raken. Met publish-rechten op elk package waarop het bedrijf bouwt, kan de volgende versie van elke interne library van hem zijn, en die wordt opgehaald door elke build die daarna draait.

  9. De index signaleert een publicatie

    Cindralts package-index logt elke geauthenticeerde aanroep. 's Nachts registreerde het dat het ci-publisher-token werd gebruikt vanaf een adres dat van niemand binnen het bedrijf is.

  10. Bevestig het vanuit de image

    Alice controleert de bewering zelf tegen het gepubliceerde artefact, met precies wat een buitenstaander zou hebben: de publieke tag en een standaard Docker-client.

Dekking van beveiligingsframeworks

CWE

  • CWE-540 Inclusion of Sensitive Information in Source Code
  • CWE-522 Insufficiently Protected Credentials

MITRE ATT&CK

  • T1552.001 Unsecured Credentials: Credentials In Files

CIS Controls

  • CIS 3 Data Protection
  • CIS 16 Application Software Security

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.DS Data Security
  • PR.PS Platform Security