In de wereld van Linux-beveiliging duiken er zo nu en dan kwetsbaarheden op die even de aandacht opeisen. Dirty Frag is er zo een — en deze is serieus. Gisteren werd de details publiek, nog vóórdat er patches klaarlagen voor de meeste systemen. We leggen uit wat er aan de hand is, wat het voor jou betekent, en wat we er al aan gedaan hebben.
Wat is Dirty Frag?
Dirty Frag is een kwetsbaarheid in de Linux-kernel — het hart van vrijwel elk Linux-systeem. Iemand die al toegang heeft tot een server kan deze kwetsbaarheid gebruiken om zichzelf ineens volledige beheerdersrechten (root) te geven. Dat klinkt abstract, maar de praktische impact is groot: met root-toegang kan iemand alles op een server inzien, aanpassen of verwijderen.
Het bijzondere aan Dirty Frag is dat het geen ingewikkelde timing of geluk vereist. Het is een logicafout die vrijwel altijd werkt — snel en stil.
Wie loopt risico?
Vrijwel alle Linux-systemen van na 2017 zijn kwetsbaar, ongeacht de distributie. Ubuntu, Debian, AlmaLinux, Rocky Linux — het maakt niet uit. De fout zit in de kernel zelf, niet in een losse applicatie die je kunt updaten of uitzetten.
Belangrijk: het gaat hier om een local kwetsbaarheid. Dat betekent dat een aanvaller al voet aan de grond moet hebben op een systeem — via een gehackte webapplicatie of een bestaand account. Dirty Frag is dus geen aanval die zomaar van buiten binnenkomt, maar in combinatie met een andere zwakheid kan het snel gevaarlijk worden.
Onze servers zijn gepatcht
Zodra de details van Dirty Frag bekend werden, zijn we direct aan de slag gegaan. Onze servers draaien inmiddels de juiste mitigaties — kwetsbare kernelmodules zijn geblokkeerd en worden niet geladen. We volgen de patchontwikkeling nauwlettend en rollen een definitieve kernelupdate uit zodra die beschikbaar en getest is voor onze omgeving.
Als klant bij Lionserve hoef je hier verder niets voor te doen.
Beheer je zelf een Linux-server? Dit kun je nu al doen.
Heb je naast je hosting bij ons ook een eigen Linux-server of VPS die je zelf beheert? Zolang er nog geen kernelpatch beschikbaar is voor jouw distributie, kun je de kwetsbare modules tijdelijk blokkeren met het volgende commando:
sudo sh -c "printf 'install esp4 /bin/falseninstall esp6 /bin/falseninstall rxrpc /bin/falsen'
> /etc/modprobe.d/dirtyfrag.conf; rmmod esp4 esp6 rxrpc 2>/dev/null; true"
Dit voorkomt dat de kernel de modules esp4, esp6 en rxrpc automatisch laadt. Een paar dingen om rekening mee te houden:
- IPsec/VPN: gebruik je strongSwan of Libreswan op deze server? Dan werkt dat na deze mitigatie niet meer. Wacht in dat geval liever op de kernelpatch.
- rxrpc: dit protocol wordt vrijwel alleen gebruikt door AFS-clients en is op de meeste servers niet actief. Je mist er doorgaans niets door.
- Ongedaan maken: verwijder
/etc/modprobe.d/dirtyfrag.confom de mitigatie terug te draaien.
Zodra er een stabiele kernelpatch beschikbaar is voor jouw distro, is het uiteraard aan te raden die zo snel mogelijk te installeren en de tijdelijke mitigatie te verwijderen.
Voor de technisch geïnteresseerden: hoe werkt het?
Dirty Frag ketent twee afzonderlijke kwetsbaarheden in de Linux-kernel samen: één in de IPsec ESP-stack (esp4/esp6) en één in het RxRPC-protocol (rxrpc).
De kern van het probleem zit in de zero-copy send path. Wanneer een socket buffer wordt opgebouwd via splice(), worden pagina’s uit de pagecache van de aanvaller direct als frag in de buffer geplant — zonder dat de kernel een privékopie aanmaakt. Op het ontvangende einde voert de kernel vervolgens in-place decryptie uit op exact die pagina’s.
Het gevolg: de kernel overschrijft pagecache-pagina’s van bestanden waar de aanvaller normaal gesproken alleen leesrechten op heeft — zoals /etc/passwd of /usr/bin/su. De wijziging vindt uitsluitend in RAM plaats, maar elke volgende leesactie ziet de gemanipuleerde versie. Zo kan een aanvaller op een betrouwbaar systeembestand een trojaans paard planten, waarna een simpele sudo-aanroep volstaat voor root-toegang.
Wat het extra gevaarlijk maakt: het is geen race condition. Er is geen timing vereist, de kernel crasht niet bij mislukte pogingen, en de slagingskans is nagenoeg 100%. De bekende mitigatie voor de vergelijkbare Copy Fail kwetsbaarheid — het blacklisten van algif_aead — biedt hier geen bescherming. Dirty Frag werkt ook zonder die module.
De upstream fix voor de ESP-kant is inmiddels gemerged in de netdev-tree (commit f4c50a4). Een fix voor RxRPC staat op de netdev mailinglijst. Distributiepatches volgen.
Dirty Frag werd ontdekt en gerapporteerd door beveiligingsonderzoeker Hyunwoo Kim (@v4bel). De volledige technische write-up is te vinden op dirtyfrag.io.