Een kwetsbaarheid in à¡lle versies van Docker kan willekeurige bestanden op de host lezen en schrijven. Dit gebeurt met rootrechten vanuit een container. Misbruik maken van de fout, genaamd CVE-2018-15664, kan mogelijk leiden tot code-uitvoering.
Tot op heden zou er geen officiële patch beschikbaar zijn voor de fout en is het onduidelijk wanneer Docker deze uitbrengt. Wel zou het bedrijf bezig zijn met het ontwikkelen daarvan, aldus The Register.
Aleksa Sarai, senior SUSE-software engineer en ontdekker van de bug, noemt het een race condition bug. Hierbij wordt een bestandspad gewijzigd nadat het is gecontroleerd als geldig en, cruciaal, voordat het wordt gebruikt. De fout uitbuiten is volgens Sarai mogelijk op voorwaarde dat er geen beperkingen zijn voor het bestandssysteem op de Docker-daemon, zoals de beperkingen die worden opgelegd door AppArmor.
Docker cp
Een meest waarschijnlijk aanvalscenario vereist wel dat een miscreant actief is in een container, wanneer een hostbeheerder docker cp uitvoert om gegevens in of uit de container te kopiëren. Op dit moment zou een aanvaller moeten toeslaan om zo mogelijk het onderliggende hostbestandssysteem te wijzigen.
De functie FollowSymlinkInScope vormt de kern van het beveiligingslek. Docker gebruikt deze functie om bestandspaden op te lossen. Sarai ontdekte dat, in het geval van docker cp, de paden gewijzigd kunnen worden met behulp van een symlink in de container. Daarmee kunnen gegevens in het hostbestandsysteem worden gewijzigd.
Symlinkcomponent
“Als een aanvaller na de resolutie een symlinkcomponent aan het pad kan toevoegen và³à³rdat het wordt uitgevoerd, zou je uiteindelijk de symlinkpadcomponent op de host als root kunnen oplossen. Een voorbeeld hiervan is een cloudbeheerservice, waarmee gebruikers configuratiebestanden in containers kunnen kopiëren. Zo ook bestanden vanuit een container kunnen lezen”, aldus Sarai.
Hij beweert dat de oorzaak van het probleem veel dieper ligt, dan de concentratie voor nu op docker cp. “De kernfout hier is dat er een aanname is, dat een pad in een container veilig kan worden opgeschoond om te worden door een bevoorrecht proces. Ieder Docker-endpoint dat FollowSymlinkInScope raakt, kan kwetsbaar zijn.”
Containers pauzeren
Het wijzigen van het chrootarchive zou volgens hem de meest complete oplossing voor het probleem zijn. Alle archiefbewerkingen zouden in deze plaatsvinden met de root als container rootfs, niet als bovenliggende directory. Deze veroorzaakt juist de kwetsbaarheid, gezien de bovenliggende aanvaller gecontroleerd zou zijn. Toch gaat die oplossing volgens Sarai hier niet op: “Helaas zijn wijzigingen aan dit kernstuk van Docker bijna onmogelijk. De TarUntar-interface heeft veel kopieën en re-implementaties, die allemaal zouden moeten worden aangepast om een ​​nieuw ‘root’ argument te kunnen verwerken.”
De voorgestelde oplossing is voor nu om containers te pauzeren tijdens bestandsbewerkingen. Iets dat wel vervelend werkt. Een andere korte termijn-mitigatie zou zijn om docker-cp uit te schakelen. Sarai laat weten tussentijds verder te werken aan het oplossen van de bug vanuit Linux.
Gerelateerd: 20 procent van top 1.000 Docker-containers bevatten misconfiguraties in root-account