Verbeteringen in technologie voor virtuele memory (VM) hebben een elf jaar oude kwetsbaarheid in Linux opengesteld. Het bekende gat is ooit gepatcht, maar dat is elf jaar geleden weer ongedaan gemaakt.
De kwetsbaarheid is nu geopenbaard en daarbij voorzien van een aansprekende naam: Dirty COW. Het gaat om een mogelijkheid misbruik te maken van de manier waarop de Linux-kernel omgaat met fouten bij copy-on-write (COW). De geheugenbewerking blijkt een zogeheten race condition bug te kunnen hebben waarbij de bedoelde uitkomst van handelingen in een bepaalde volgorde valt te manipuleren. Het gevolg is dat een lokale gebruiker zich hogere rechten kan verschaffen op een kwetsbaar systeem.
Jarenoude exploit
Volgens ontdekker Phil Oester is de kwetsbaarheid (CVE–2016–5195) zeer gemakkelijk te misbruiken, werkt de aanvalsmethode elke keer weer, en is het waarschijnlijk al jaren aan de orde. De exploit die in de praktijk (in the wild) al wordt ingezet, is gecompileerd met het oude GCC 4.8, vertelt hij aan de Britse ict-nieuwssite V3. De 4.8.0-release van de GNU C Compiler (GCC) stamt uit maart 2013. De huidige versie is 6.2 die in augustus dit jaar is uitgekomen, terwijl de 4.8-reeks voor het laatst in juni vorig jaar is bijgewerkt (naar 4.8.5).
Linux-distributeur Red Hat waarschuwt nu dat deze exploit in de praktijk al wordt ingezet door kwaadwillenden. Daarbij worden andere methodes voor hackaanvallen op afstand gecombineerd met deze kwetsbaarheid die lokale gebruikers beheertoegang tot een Linux-computer geven. Overigens moet het misbruikte lokale gebruikersaccount al wel bestaan op het doelsysteem. Proof-of-concept code is openlijk beschikbaar.
Beperking en bijwerking
Red Hat heeft al schadebeperkende maatregelen bekendgemaakt, die beheerders zelf kunnen doorvoeren. Deze zogeheten mitigation heeft echter wel bijwerkingen. Het schakelt namelijk de ptrace-functionaliteit uit waarmee bijvoorbeeld debuggers en antivirussoftware andere processen in het geheugen kunnen analyseren.
‘Deze programma’s zijn dus niet operationeel’, meldt Red Hat-ontwikkelaar Petr Matousek op Bugzilla. Hij merkt nog op dat versies 5 en 6 van Red Hat Enterprise Linux niet vatbaar zijn voor de exploit die al is ingezet door aanvallers. Instructies voor controle en bescherming van andere Linux-distributies zijn online te vinden. De Linux-kernel zelf is afgelopen week voorzien van een patch, dus updaten is het devies.
Theorie wordt praktijk
Linux-schepper Linus Torvalds bevestigt daarbij dat het om een antieke bug gaat, die hij zelf ooit heeft geprobeerd te fixen. In 2005 is deze geheugenfout ontdekt en daarna gepatched, maar dat bleek andere problemen te veroorzaken. Die bijwerkingen betroffen Linux draaiende op S/390-mainframesystemen van IBM en daarom heeft een latere patch (in 2007) de fix van Torvalds ongedaan gemaakt.
Het probleem van de race condition bug was toen een puur theoretische kwestie, aldus Torvalds. De vooruitgang in virtualisatietechnologie (specifiek: de schaalbaarheid van virtueel geheugen) heeft er echter voor gezorgd dat het theoretische probleem een praktisch gevaar is geworden. Dit geldt niet alleen voor Linux-servers vanaf kernel-versie 2.6.22 (uitgekomen in 2007), maar ook voor veel consumentenapparatuur zoals routers en zelfs smartphones. De kwetsbaarheid zou namelijk ook aanwezig zijn in Android, meldt The Register. Het updaten van Android-smartphones is in de praktijk een verhaal apart.
Dus dankzij IBM is de exploit weer in Linux teruggekomen. Vreemde zaak.