Kwaadaardige Base Images

Kwaadaardige Base Images

Een basisafbeelding één personage verwijderd, en je build levert een achterdeur op.

Wat is Kwaadaardige Base Images?

Elke FROM-regel is een vertrouwensbeslissing. Iedereen kan naar een openbaar register publiceren onder een naam die een teken verwijderd is van de jouwe, en zonder handtekeningverificatie wordt een FROM-regel omgezet naar wat het register ook dient. U voert een vergelijkbare afbeelding uit, bekijkt een mijnwerker en keert het granaatvuur om bij het opstarten, en traceert vervolgens een mijnwaarschuwing terug door de laaggeschiedenis naar de FROM-regel die deze heeft genoemd. Je pint de basis vast aan de ondertekende officiële afbeelding door middel van een samenvatting, zodat de naam niet kan worden omgezet in iets anders.

Wat je leert in Kwaadaardige Base Images

Kwaadaardige Base Images — Trainingsstappen

  1. Een naam die één teken afwijkt

    Bob breekt nergens in. Hij publiceert. Op een publieke image hub kan iedereen een repository pushen, en hij heeft er een gepusht onder een namespace die bijna precies leest als het officiële Node.js base image. Daarna wacht hij tot ergens een build hem per ongeluk binnenhaalt.

  2. Vermomd als origineel

    Bob's repository staat in de zoekresultaten direct onder de echte, met dezelfde tagline en een gezond aantal pulls. Het enige verschil is het onderdeel waar een gehaaste engineer overheen leest.

  3. Wat hij daadwerkelijk uitleverde

    Bob's lookalike is geen herverpakt Node-image met een nieuw label. Hij heeft het gebouwd vanaf een echt image en er één regel aan toegevoegd. Dit is de Dockerfile achter de base die hij publiceerde.

  4. De regel die het werk doet

    Alles boven deze regel is een gewone Node.js-base. Eén RUN, verpakt in een onschuldig ogend commentaar, is wat er een wapen van maakt.

  5. Bekijk hoe de payload afgaat

    De base ziet eruit en gedraagt zich als een normaal Node.js-image, dus een build erop slaagt en een app erop draait. Maar een laag die Bob heeft toegevoegd haalt een payload op en voert die uit zodra een container start. Hij start zijn eigen base één keer om te bevestigen dat de payload nog steeds afgaat.

  6. Gebruik de ingang

    Een Marlspire-build leverde uit op zijn base, en het implantaat dat daardoor werd geplant belde naar huis. Bob hoeft nu niet meer in te breken: hij heeft al een shell binnen hun productiecontainer. Hij geeft die de opdracht om af te staan wat hij kan bereiken.

  7. Wat dit mogelijk maakte

    Eén moment stilstaan bij het mechanisme voordat de respons begint.

  8. De host meldt een miner

    Marlspire draait endpointmonitoring op zijn containerhosts. Het maakt niet uit wat de container verondersteld wordt te doen; het rapporteert wat het heeft gezien.

  9. Lees de lagen van het image

    Een image legt vast hoe het is gebouwd, één commando per laag. Als een miner zichzelf installeert, moet een laag het commando hebben uitgevoerd dat hem heeft opgehaald. Alice leest de buildhistorie van het uitgeleverde image.

  10. Waar de base vandaan kwam

    Het gif zit in de base, dus de vraag is welke base. Alice zoekt de twee kandidaten naast elkaar op in de publieke hub.

Dekking van beveiligingsframeworks

CWE

  • CWE-494 Download of Code Without Integrity Check
  • CWE-345 Insufficient Verification of Data Authenticity

MITRE ATT&CK

  • T1195.002 Supply Chain Compromise: Compromise Software Supply Chain

CIS Controls

  • CIS 2 Inventory and Control of Software Assets
  • 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
  • ID.AM Asset Management
  • PR.PS Platform Security