Säkerhetshålet som gömde sig i 19 år – och kunde ge angripare totalt systemövertagande
Ett 19 år gammalt säkerhetshål i Linux kunde ge angripare fullständig systemkontroll.
En brist som följde med genom en hel teknikepok
När Linuxkärnan fick sin sårbarhet inbäddad i CIFS-delsystemet var det år som George W. Bush satt som amerikansk president, Facebook inte existerade och iPhone var ett okänt begrepp. Sedan dess har sårbarhet – nu döpt till CIFSwitch – tyst följt med genom otaliga versioner, distributioner och driftsättningsmiljöer. Det rapporterar SecurityWeek, och det är svårt att inte haja till lite när man läser det.
CIFS-delsystemet hanterar nätverksfilprotokollet SMB – det vill säga montering av delade mappar och kommunikation med filservrar. Det är inte en obskyr funktion djupt inne i kärnan; det är något som används aktivt i miljöer där Linux-servrar kommunicerar med Windows-system, vilket är vardagsmat i de flesta blandade företagsnätverk.
Så fungerar attacken tekniskt
Kärnan i problemet – ordvalet ursäktas – är en grundläggande kontrollbrist. Vid autentisering skickar CIFS-delsystemet en förfrågan till ett hjälpprogram kallat cifs.upcall, som körs med fullständiga administratörsbehörigheter. Men kärnan verifierar aldrig varifrån förfrågan faktiskt kommer.
Det innebär att en angripare med begränsade rättigheter kan anropa samma funktion direkt och manipulera de parametrar som skickas med – till exempel process-ID och behörighetsinformation. Hjälpprogrammet, som saknar anledning att misstro förfrågan, växlar in i det namnområde som anges och ger angriparen full kontroll. Det är en klassisk förväxlingsattack: systemet litar blint på att kallaren är den den utger sig för att vara.
Det finns dessutom en andra angreppsväg. Innan cifs.upcall avsäger sig sina förhöjda behörigheter utför det en kontosökning via systemets namnuppslagsmekanismer. En angripare kan utnyttja detta tidsfönster genom att placera en förfalskad konfigurationsfil och en skadlig modul i sitt eget namnområde – varpå angriparens kod exekveras med administratörsbehörighet.
Båda vägarna leder till samma slutmål: fullständig systemkontroll, uppnådd från ett vanligt användarkonto.
Varför händer det här?
Som systemutvecklare kan jag inte låta bli att reflektera över mekaniken bakom sådana här missar. Öppen källkod granskas av tusentals ögon – det är en av rörelsens stolta mantra. Och ändå: 19 år.
Det handlar sällan om slarv i enskilda komponenter utan om att säkerhetsgranskning tenderar att följa nyhetsvärde. Ny kod granskas noga. Gammal, stabil kod betraktas som testad och pålitlig. CIFS-delsystemet har förmodligen inte fått djup säkerhetsgranskning på länge, just för att det "fungerar" och inte märks. Det är ett mönster vi ser gång på gång – Heartbleed i OpenSSL, Log4Shell i Log4j. Infrastrukturkomponenter som ingen tittar på förrän det är försent.
Det finns också en inbyggd komplexitet i namnområden och privilegiehantering i Linux som gör det genuint svårt att resonera korrekt kring säkerhetsgränser. Det är inte en ursäkt, men det är en förklaring.
Vad bör du göra nu?
Om du driver Linuxsystem i miljöer där SMB-montering används – och det gör de flesta företag som blandar Linux och Windows – bör du säkerställa att din kärna är uppdaterad med den säkerhetspatch som adresserar CIFSwitch. Sårbarheten kräver att angriparen redan har ett lokalt konto på systemet, vilket begränsar angreppsvektorn något, men i miljöer med delade servrar och många användare är det en begränsad tröst.
Detta är också ett bra tillfälle att inventera vilka privilegierade hjälpprogram som körs i din miljö och om de verifierar sin kallares identitet. Det är en enkel fråga med ofta häpnadsväckande svar.
Vår analys
CIFSwitch är inte unik i sin existens – den är unik i att den hittades. Det verkligt oroande är hur många liknande brister som sannolikt fortfarande vilar oupptäckta i gammal, välbeprövad infrastrukturkod.
Här ser jag faktiskt AI-verktyg som en del av lösningen snarare än problemet. Automatiserad statisk kodanalys, AI-assisterade säkerhetsgranskningar och stora språkmodeller tränade på säkerhetsmönster kan börja systematisera granskning av äldre kodbaser på ett sätt som mänskliga granskare aldrig hinner med. Det är ett område där tekniken har verklig potential att göra skillnad.
Den bredare lärdomen är att säkerhet inte är ett tillstånd man uppnår – det är en process. Kritisk infrastruktur behöver regelbunden, proaktiv granskning oavsett ålder. Att kod är gammal och stabil är inte ett säkerhetsintyg. Det är snarast skäl till extra vaksamhet.