Bösartige Base Images

Bösartige Base Images

Ein Base Image, ein Zeichen daneben, und Ihr Build liefert eine Hintertür aus.

Was ist Bösartige Base Images?

Jede FROM-Zeile ist eine Vertrauensentscheidung. Jeder kann in einer öffentlichen Registry 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 die Registry bereitstellt. Sie führen ein Lookalike-Image aus, beobachten, wie ein Miner und eine Reverse 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. Das Zünden der Payload beobachten

    The base looks and behaves like a normal Node.js image, so a build using it succeeds and an app on it runs. But a build step Bob added fetched and installed a payload that starts with every container. He runs his own base once to confirm the payload still fires.

  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

  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