Bösartige Base Images
Ein Basisbild einen Charakter entfernt, und Ihr Build enthält eine Hintertür.
Was ist Bösartige Base Images?
Jede FROM-Zeile ist eine Vertrauensentscheidung. Jeder kann in einem öffentlichen Register unter einem Namen veröffentlichen, der nur ein Zeichen von Ihrem entfernt ist, und ohne Signaturüberprüfung wird eine FROM-Zeile zu dem aufgelöst, was das Register bereitstellt. Sie führen ein ähnliches Image aus, beobachten, wie ein Miner und eine umgekehrte Shell beim Start ausgelöst werden, und verfolgen dann einen Mining-Alarm durch den Layer-Verlauf bis zur FROM-Zeile zurück, die ihn benannt hat. Sie heften die Basis per Digest an das signierte offizielle Bild, sodass der Name nicht in etwas anderes aufgelöst werden kann.
Was Sie lernen in Bösartige Base Images
- Erkennen Sie einen ähnlichen Registrierungs-Namespace wie dockr-library, der ein Zeichen vom offiziellen Bibliotheksbild entfernt ist
- Erklären Sie, warum jede FROM-Zeile eine Vertrauensentscheidung ist, die einen Namen in das auflöst, was die Registrierung bereitstellt
- Verfolgen Sie einen Mining-Alarm über den Layer-Erstellungsverlauf bis zur FROM-Zeile zurück, die das feindliche Basis-Image benannt hat
- Hängen Sie die Basis per Digest an das signierte offizielle Bild an, damit der Name nicht in den ersetzten Inhalt aufgelöst werden kann
- Überprüfen Sie die Herkunft mit einer Signaturprüfung, die Ihnen Aufschluss darüber gibt, wer ein Bild veröffentlicht hat, bei dem das Scannen auf Schwachstellen nicht möglich ist
Bösartige Base Images — Trainingsschritte
-
Ein Name, der ein Zeichen daneben liegt
Bob bricht in nichts ein. Er veröffentlicht. In einem öffentlichen Image-Hub kann jeder ein Repository pushen, und er hat eines unter einem Namespace gepusht, der sich fast genauso liest wie das offizielle Node.js-Base-Image. Dann wartet er darauf, dass irgendwo ein Build es versehentlich zieht.
-
Getarnt, um zu bestehen
Bobs Repository steht in den Suchergebnissen direkt unter dem echten, mit demselben Slogan und einer ordentlichen Pull-Zahl. Der einzige Unterschied ist der Teil, den ein gehetzter Engineer überfliegt.
-
Was er tatsächlich ausgeliefert hat
Bobs Lookalike ist kein neu verpacktes Node-Image mit frischem Etikett. Er hat es aus einem echten gebaut und nur eine einzige Zeile hinzugefügt. Das ist das Dockerfile hinter der Basis, die er veröffentlicht hat.
-
Die Zeile, die die Arbeit macht
Alles über dieser Zeile ist eine gewöhnliche Node.js-Basis. Ein einziges RUN, getarnt mit einem harmlosen Kommentar, macht daraus eine Waffe.
-
Sehen Sie zu, wie die Payload zündet
Die Basis sieht aus und verhält sich wie ein normales Node.js-Image, sodass ein Build damit gelingt und eine App darauf läuft. Aber eine Schicht, die Bob hinzugefügt hat, lädt und startet eine Payload, sobald ein Container startet. Er startet seine eigene Basis einmal, um zu bestätigen, dass die Payload noch zündet.
-
Den Zugang nutzen
Ein Marlspire-Build wurde auf seiner Basis ausgeliefert, und das eingeschleuste Implantat meldete sich nach Hause. Bob muss jetzt nicht mehr einbrechen: Er hat bereits eine Shell in ihrem Produktions-Container. Er weist sie an, alles herauszugeben, was sie erreichen kann.
-
Was das möglich gemacht hat
Ein kurzer Moment beim Mechanismus, bevor die Reaktion beginnt.
-
Der Host meldet einen Miner
Marlspire betreibt Endpoint-Monitoring auf seinen Container-Hosts. Es interessiert sich nicht dafür, was der Container eigentlich tun soll; es meldet, was es gesehen hat.
-
Die Schichten des Image lesen
Ein Image protokolliert, wie es gebaut wurde, ein Befehl pro Schicht. Wenn sich ein Miner selbst installiert, muss irgendeine Schicht den Befehl ausgeführt haben, der ihn geladen hat. Alice liest den Build-Verlauf des ausgelieferten Image.
-
Woher die Basis kam
Das Gift steckt in der Basis, also lautet die Frage: welche Basis. Alice schaut sich die beiden Kandidaten im öffentlichen Hub nebeneinander an.
Abdeckung der Sicherheits-Frameworks
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