I værktøjet til at køre isolerede containere runc, der anvendes i Docker og Kubernetes, er der fundet en sårbarhed CVE-2024-21626, som tillader adgang til filsystemet i værtsmiljøet fra den isolerede container. Under et angreb kan en angriber overskrive visse eksekverbare filer i værtsmiljøet og derved opnå udførelse af sin kode uden for containeren. Problemet opstår ikke i runtime crun og youki, der bruger runc, samt i LXC. Sårbarheden er blevet udbedret i udgivelsen runc 1.1.12.
Når der anvendes værktøjer som Docker eller Kubernetes, kan angrebet udføres ved at forberede et specialdesignet containerbillede, hvorefter det installeres og startes, hvilket giver adgang til ekstern filsystem fra containeren. I Docker er det muligt at udnytte sårbarheden ved at anvende et specielt tilpasset Dockerfile. Sårbarheden kan også udnyttes, når processer køres i containeren via kommandoen «runc exec» ved at binde arbejdsbiblioteket til værtsmiljøets navnerum.
Sårbarheden skyldes lækage af interne filbeskrivelser. Før koden kører inde i containeren, udfører runc lukning af alle filbeskrivelser ved hjælp af flaget O_CLOEXEC. Ikke desto mindre forbliver en filbeskrivelse, der peger på arbejdsbiblioteket åben efter den efterfølgende udførelse af funktionen setcwd(), og forbliver tilgængelig efter containerens opstart. Der er blevet foreslået flere grundlæggende angrebs scenarier mod værtsmiljøet ved hjælp af den resterende filbeskrivelse.
For eksempel kan en angriber angive parameteren process.cwd i containerbilledet til «/proc/self/fd/7/», hvilket resulterer i, at arbejdsbiblioteket bindes til proces pid1 i containeren, som er placeret i værtsmiljøets monteringsrum. Dermed kan containerbilledet konfigureres til at starte «/proc/self/fd/7/../../../../bin/bash», og ved at udføre et shell-script overskrives indholdet af «/proc/self/exe», som henviser til værtskopien af /bin/bash.
En anden angrebsmetode giver en angriber, der er begrænset inden i en container, adgang til værtens katalog, hvis der køres privilegerede processer i den angivne container ved hjælp af kommandoen «runc exec» med indstillingen «—cwd». Angriberen kan omdirigere stien til den kørende proces til et symbolsk link, der peger på «/proc/self/fd/7/», og dermed åbne «/proc/$exec_pid/cwd» for at få adgang til filsystemet på værten. Angriberen kan også opnå overskrivning af kørende filer på værtsmiljøet ved at starte en eksekverbar fil fra værtsmiljøet («/proc/self/fd/7/../../../../bin/bash») og efterfølgende overskrivning af filen «/proc/$pid/exe», som henviser til den kørende fil.
Desuden er der fundet fem andre sårbarheder i komponenterne af Docker-værktøjet:
- CVE-2024-23651 — en race condition i BuildKit-pakken, der anvendes i Docker til at konvertere kildekode til byggeartefakter. Sårbarheden skyldes brugen af et fælles monteringspunkt med cache i parallelt kørende byggeelementer («—mount=type=cache,source=»), hvilket giver adgang til filer i værtsmiljøet fra byggecontaineren ved behandling af et specielt tilpasset Dockerfile. Sårbarheden er blevet rettet i BuildKit 0.12.5.
- CVE-2024-23652 — en fejl ved sletning af tomme filer, der er oprettet til monteringspunktet ved brug af indstillingen «—mount», som muliggør sletning af filer uden for containeren ved behandling af et specifikt tilpasset Dockerfile. Sårbarheden er blevet rettet i BuildKit 0.12.5.
- CVE-2024-23653 — en fejl i implementeringen af API i BuildKit, der tillader udførelse af containeren med forhøjede privilegier, trods indstillingen for security.insecure. Sårbarheden er blevet rettet i BuildKit 0.12.5.
- CVE-2024-23650 — en ondsindet klient eller frontend i BuildKit kan forårsage, at baggrundsprocessen i BuildKit nedbrud. Sårbarheden er blevet rettet i BuildKit 0.12.5.
- CVE-2024-24557 — mulighed for cache forgiftning i Moby, komponenten til opbygning af specialiserede systemer til containerisolering. Ved behandling af et specifikt tilpasset containerbillede kan man opnå, at data placeres i cachen, som kan bruges i de følgende byggeelementer. Sårbarheden er blevet rettet i Moby 25.0.2 og 24.0.9.
Kilde: opennet.ru
