Bösartige Base Images

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

Bösartige Base Images — Trainingsschritte

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Was das möglich gemacht hat

    Ein kurzer Moment beim Mechanismus, bevor die Reaktion beginnt.

  8. 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.

  9. 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.

  10. 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