Verwundbare Base-Images
Ihre Abhängigkeiten werden überprüft. Das Betriebssystem darunter tut dies nicht.
Was ist Verwundbare Base-Images?
Anwendungsabhängigkeiten werden bei jeder Änderung überprüft. Bei der darunter liegenden Betriebssystemschicht ist dies häufig nicht der Fall. Ein Floating-Tag wie „node:18“ bedeutet, dass sich die Ebene unter Ihrem Code ändert, wenn die Registrierung etwas Neues bereitstellt, und dass im Laufe der Zeit Fehler gefunden werden, sodass eine Bereinigung des Images zum Zeitpunkt der Auslieferung jetzt von entscheidender Bedeutung sein kann. Sie scannen ein veraltetes Service-Image, finden CVE-2023-4863 in libwebp und wandeln es in eine Remote-Codeausführung um. Anschließend heften Sie die Basis an einen genauen Digest, erstellen ihn neu und scannen ihn erneut. Das Fixieren hat seinen Preis: Es erfordert einen bewussten Wiederaufbaurhythmus.
Was Sie lernen in Verwundbare Base-Images
- Beachten Sie, dass ein schwebendes Basis-Tag die Betriebssystemschicht unter Ihrem Code ändern kann, ohne dass jemand dies beschließt
- Scannen Sie ein bereitgestelltes Image auf bekannte Schwachstellen und wandeln Sie CVE-2023-4863 in libwebp in eine funktionierende Remotecodeausführung um
- Erklären Sie, warum ein Fehler auf der Betriebssystemebene in keiner Abhängigkeitsdatei auftritt und durch eine Änderung des Basis-Images und nicht durch eine Paketerweiterung behoben wird
- Fixieren Sie das Basis-Image an einen genauen Digest, sodass jeder Build die gleichen Bytes abruft und eine Basisänderung zu einem überprüfbaren Commit wird
- Erstellen Sie neu und scannen Sie erneut, um zu beweisen, dass die Anstecknadel funktioniert hat, und planen Sie den bewussten Wiederaufbaurhythmus, der für ein angeheftetes Basisbild erforderlich ist
Verwundbare Base-Images — Trainingsschritte
-
Das Scheduler-Image in der Registry
Bob hat über ein geleaktes Robot-Token Lesezugriff auf Bremhollows Container-Registry. Er schaut sich nicht den Code an — er schaut sich an, wie frisch die Images sind, denn ein Dienst, der eine Weile nicht neu gebaut wurde, ist ein Dienst, dessen Base-Image still und leise gealtert ist. Der Scheduler verarbeitet hochgeladene Bilder, was das, worauf er aufbaut, für ihn sehr interessant macht. Öffne seine Seite und sieh, was die Registry sagt.
-
Ein Image, das stehen geblieben ist
Die Registry muss sich nicht irren, um Bob zu helfen. Eine einzige Zeile verrät ihm, dass das deployte Image alt ist und auf einer schwimmenden Base aufbaut.
-
Die Base nach einem Einstiegsweg durchsuchen
Bob zieht das Image und lässt einen Schwachstellenscanner darüberlaufen, dasselbe Tool, das auch ein Verteidiger nutzen würde. Er interessiert sich nicht für den Anwendungscode. Er will eine bekannte, veröffentlichte Schwachstelle in den Betriebssystem-Paketen, die das Base-Image mitgebracht hat, denn dafür gibt es funktionierende Exploits.
-
Die CVE in eine Shell verwandeln
Ein Scanner-Fund ist kein Exploit, bis ihn jemand ausführt. Für CVE-2023-4863 gibt es einen öffentlichen Proof-of-Concept: ein präpariertes WebP, das libwebp genau in dem Moment zum Überlauf bringt, in dem es dekodiert wird. Der Scheduler dekodiert jedes hochgeladene Bild, also bindet Bob die PoC-Datei in einen Wegwerf-Lauf des verwundbaren Images ein und dekodiert sie — und beweist damit, dass der Fund ein funktionierender Remote-Code-Execution-Weg ist, bevor er überhaupt die Produktion berührt.
-
Wo die Schwachstelle steckt
Ein kurzer Moment beim Mechanismus, bevor die Reaktion beginnt.
-
Der Scanner schlägt bei der Flotte Alarm
Bremhollow hat Image-Scanning in seine Pipeline aufgenommen, und der erste vollständige Durchlauf über das, was bereits in Produktion läuft, hat etwas zutage gefördert, das nicht warten kann.
-
Sieh es dir selbst an
Bevor sie etwas ändert, führt Alice denselben Scan am deployten Image aus. Sie will den Fund sehen, wo er sitzt, und was die Base tatsächlich ist.
-
Das Dockerfile öffnen
Das Base-Image wird in einer einzigen Zeile des Dockerfiles gewählt. Alles, was der Scanner gefunden hat, kam über diese Zeile herein.
-
Die schwimmende Base finden
Hier ist nichts falsch geschrieben oder fehlerhaft. Das Problem ist eine einzige Zeile, die weniger aussagt, als sie sollte.
-
Die Base per Digest fixieren
Ein Tag ist ein Label, das jemand verschieben kann; ein Digest ist der Inhalts-Fingerabdruck des Images und kann niemals auf etwas anderes zeigen. Alice fixiert die Base per Digest auf ein exaktes, aktuelles, schlankes node:18, sodass ab jetzt jeder Build dieselben geprüften Bytes zieht, und das Verschieben dieses Pins wird zu einer bewussten, überprüfbaren Änderung.
Abdeckung der Sicherheits-Frameworks
CWE
- CWE-1104 Use of Unmaintained Third Party Components
- CWE-1395 Dependency on Vulnerable Third-Party Component
MITRE ATT&CK
- T1190 Exploit Public-Facing Application
CIS Controls
- CIS 7 Continuous Vulnerability Management
- CIS 2 Inventory and Control of Software Assets
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.RA Risk Assessment
- ID.AM Asset Management