I verktøysettet for å administrere isolerte Linux Docker-containere sårbarhet (), som under visse omstendigheter gir tilgang til vertsmiljøet fra en container når det er mulig å kjøre avbildningene på systemet eller når man får tilgang til den kjørende containeren. Problemet oppstår i alle versjoner av Docker og forblir uløst (foreslått, men ennå ikke akseptert, , som implementerer suspensjonen av containerens drift under utførelse av operasjoner med FS).
Sårbarheten tillater utpakking av filer fra en container til en vilkårlig del av vertssystemets FS når kommandoen "docker cp" kjøres. Utpakking av filer utføres med rotrettigheter, noe som gjør det mulig å lese eller skrive til alle filer i vertsmiljøet, noe som er nok til å få kontroll over vertssystemet (for eksempel kan du omskrive /etc/shadow).
Angrepet kan bare utføres når administratoren utfører kommandoen «docker cp» for å kopiere filer til eller fra containeren. Dermed må angriperen på en eller annen måte overbevise Docker-administratoren om behovet for å utføre denne operasjonen og forutsi banen som brukes for kopiering. På den annen side kan angrepet for eksempel utføres når skytjenester tilbyr verktøy for å kopiere konfigurasjonsfiler til en container bygget med kommandoen «docker cp».
Problemet skyldes en feil i anvendelsen av funksjonen. , som beregner den absolutte banen i hoved-FS basert på den relative banen, med tanke på plasseringen av containeren. Under utførelsen av kommandoen "docker cp", en kortsiktig , der banen allerede er sjekket, men operasjonen ennå ikke er utført. Siden kopiering utføres i konteksten av vertssystemets hoved-FS, er det i løpet av den angitte tidsperioden mulig å erstatte lenken med en annen bane og starte kopiering av data til et vilkårlig sted i filsystemet utenfor containeren.
Siden tidsvinduet for at løpstilstanden skal manifestere seg er svært begrenset i det forberedte Når man utførte kopieringsoperasjoner fra en container, var det mulig å oppnå et vellykket angrep i mindre enn 1 % av tilfellene ved å syklisk erstatte en symbolsk lenke i banen som ble brukt i kopieringsoperasjonen (et vellykket angrep ble utført etter omtrent 10 sekunder med kontinuerlig forsøk på å kopiere en fil i en løkke med kommandoen "docker cp").
Når man utfører en kopieringsoperasjon til en container, er det mulig å oppnå et repeterbart angrep for å overskrive en fil på vertssystemet i løpet av bare noen få iterasjoner. Angrepet er mulig fordi "chrootarchive"-konseptet brukes når man kopierer til en container, der archive.go-prosessen pakker ut arkivet ikke til chrooten til containerroten, men til chrooten til den overordnede katalogen til målbanen som kontrolleres av angriperen, og ikke stopper kjøringen av containeren (chroot brukes som et tegn for å utnytte en kappløpstilstand).
Kilde: opennet.ru
