Kwetsbare Base Images
Uw afhankelijkheden worden beoordeeld. Het onderliggende besturingssysteem doet dat niet.
Wat is Kwetsbare Base Images?
Applicatieafhankelijkheden worden bij elke wijziging beoordeeld. De besturingssysteemlaag eronder doet dat vaak niet. Een zwevende tag zoals node:18 betekent dat de laag onder uw code verandert wanneer het register iets nieuws aanbiedt en er in de loop van de tijd fouten worden ontdekt, dus het opschonen van de afbeelding tijdens verzending kan nu van cruciaal belang zijn. U scant een verouderde service-image, vindt CVE-2023-4863 in libwebp en zet deze om in uitvoering van externe code. Vervolgens koppelt u de basis aan een exacte samenvatting, bouwt u deze opnieuw op en scant u opnieuw. Vastzetten brengt kosten met zich mee: er is een doelbewuste herbouwfrequentie voor nodig.
Wat je leert in Kwetsbare Base Images
- Houd er rekening mee dat een zwevende basistag de laag van het besturingssysteem onder uw code laat veranderen zonder dat iemand besluit dat dit moet gebeuren
- Scan een geïmplementeerde image op bekende kwetsbaarheden en zet CVE-2023-4863 in libwebp om in werkende externe code-uitvoering
- Leg uit waarom er een fout in de OS-laag voorkomt in geen afhankelijkheidsbestand en wordt opgelost door een wijziging in de basisimage in plaats van door een pakketbump
- Zet de basisimage vast aan een exacte samenvatting, zodat elke build dezelfde bytes ophaalt en een basiswijziging een reviewbare commit wordt
- Herbouw en scan opnieuw om te bewijzen dat de pin werkte, en plan de doelbewuste herbouwfrequentie die een vastgezette basisimage vereist
Kwetsbare Base Images — Trainingsstappen
-
De scheduler-image in de registry
Bob heeft leestoegang tot de container registry van Bremhollow via een gelekt robot-token. Hij kijkt niet naar code — hij kijkt naar hoe vers de images zijn, want een service die al een tijd niet opnieuw is gebouwd, is een service waarvan de base image stilletjes is verouderd. De scheduler verwerkt geüploade afbeeldingen, wat maakt waarop deze is gebouwd erg interessant voor hem. Open de pagina ervan en bekijk wat de registry zegt.
-
Een image die stilstond
De registry hoeft niet fout te zijn om Bob te helpen. Eén regel vertelt hem dat de gedeployde image oud is en gebouwd op een floating base.
-
Scan de base op een ingang
Bob pullt de image en draait er een vulnerability scanner overheen, hetzelfde gereedschap dat een verdediger zou gebruiken. Hij is niet geïnteresseerd in de applicatiecode. Hij wil een bekende, gepubliceerde kwetsbaarheid in de besturingssysteempakketten die de base image heeft meegesleept, want die komen met werkende exploits.
-
Maak van de CVE een shell
Een scannerbevinding is geen exploit totdat iemand hem uitvoert. CVE-2023-4863 heeft een publieke proof-of-concept: een geprepareerde WebP die libwebp laat overlopen op het moment dat deze wordt gedecodeerd. De scheduler decodeert elke geüploade afbeelding, dus Bob mount het PoC-bestand in een wegwerprun van de kwetsbare image en decodeert het — waarmee hij bewijst dat de bevinding een werkend remote-code-executionpad is voordat hij ooit productie aanraakt.
-
Waar de kwetsbaarheid zich bevindt
Eén moment stilstaan bij het mechanisme voordat de respons begint.
-
De scanner markeert de vloot
Bremhollow heeft image scanning toegevoegd aan zijn pipeline, en de eerste volledige doorlichting van wat al in productie draait, kwam terug met iets dat niet kan wachten.
-
Zie het zelf
Voordat ze iets wijzigt, draait Alice dezelfde scan op de gedeployde image. Ze wil de bevinding zien, waar deze zich bevindt, en wat de base eigenlijk is.
-
Open het Dockerfile
De base image wordt gekozen in één regel van het Dockerfile. Alles wat de scanner vond, kwam mee via die regel.
-
Vind de floating base
Er staat hier niets verkeerd gespeld of misvormd. Het probleem is één regel die minder zegt dan hij zou moeten.
-
Pin de base op digest
Een tag is een label dat iemand kan verplaatsen; een digest is de content-fingerprint van de image en kan nooit naar iets anders wijzen. Alice pint de base op een exacte, actuele, slanke node:18 aan de hand van zijn digest, zodat elke build vanaf nu dezelfde geauditeerde bytes pullt, en het verplaatsen van die pin een bewuste, controleerbare wijziging wordt.
Dekking van beveiligingsframeworks
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