Samenwerking tussen user namespaces en bestandsrechten zorgt voor kopzorgen bij Linux-ontwikkelaars

Linux-ontwikkelaars zoeken naar een oplossing voor een hardnekkig beveiligingsprobleem in de Linux-kernel, veroorzaakt door de manier waarop zogeheten user namespaces en bestandsrechten met elkaar omgaan. Hoewel beide technieken afzonderlijk bedoeld zijn om systemen veiliger te maken, blijkt de combinatie ervan juist mazen in de beveiliging te kunnen openen. Hierdoor kunnen gebruikers onder bepaalde omstandigheden onbedoeld extra rechten op een systeem bemachtigen.

User namespaces vormen het fundament onder containertechnologie zoals Docker en Podman. Ze zorgen ervoor dat een gewone gebruiker binnen een afgesloten omgeving beheerder kan zijn, zonder dat diegene ook de controle over de rest van het besturingssysteem krijgt. Tegelijkertijd kent Linux al jaren zogeheten file capabilities. Daarmee kan een specifiek programma heel gericht één bepaalde bevoegdheid krijgen, zoals het openen van een netwerkpoort, zonder dat het hele programma meteen met volledige root-rechten hoeft te draaien. Het probleem ontstaat zodra deze twee mechanismen elkaar kruisen, bijvoorbeeld wanneer een proces binnen een container bestanden met speciale rechten probeert te bewaren op een opslagmedium dat ook buiten die container leesbaar is.

Dat klinkt misschien technisch, maar in de praktijk betekent het dat er een risico ontstaat op privilege-escalatie. Als de kernel niet waterdicht bijhoudt in welke specifieke namespace een bestandsrecht geldig is, kan een slim geplaatst bestand er buiten de container voor zorgen dat een gebruiker ineens toegang krijgt tot functies die strikt verboden hadden moeten blijven. Om dit gevaar te bezweren, hebben diverse Linux-distributies het gebruik van user namespaces voor niet-beheerders in het verleden al standaard uitgeschakeld of streng aan banden gelegd, wat weer nadelig is voor ontwikkelaars die juist vlot met rootless containers willen werken.

Binnen de Linux-gemeenschap wordt nu druk overlegd over manieren om de controle op deze bestandsrechten in het onderliggende bestandssysteem grondig aan te scherpen. De situatie laat zien hoe ingewikkeld moderne kernelbeveiliging is: twee losse onderdelen die het systeem aantoonbaar veiliger moesten maken, kunnen samen een onverwachte zwakke plek vormen. De voorgestelde wijzigingen moeten ervoor zorgen dat containers veilig en flexibel kunnen blijven draaien, zonder dat het gastheersysteem gevaar loopt.

Bron: https://lwn.net/Articles/1103429/