Den goda nyheten är att den sju år gamla säkerhetsfelet i Linux-systemets polkit, som används i många Linux-distroer, har lappats. Den dåliga nyheten är att den någonsin var där i första hand. Polkit, som systemd använder istället för sudo, gör det möjligt för obehöriga användare att köra privilegierade processer som de annars inte kunde köra. Det visade sig att du också kunde missbruka polkit för att få root-åtkomst till ett system.
Kan du säga “Ow!”?
Kraften att ta tag i root-privilegier är den ultimata ondskan i Unix- och Linux-system. Kevin Backhouse, en medlem av GitHub Security Lab, hittade polkits säkerhetshål under sina arbetsuppgifter. Han avslöjade det för polkit-underhållarna och Red Hats säkerhetsteam. Sedan, när en fix släpptes den 3 juni 2021, avslöjades den offentligt som CVE-2021-3560.
Backhouse fann att en obehörig lokal användare lätt kunde få ett root-skal i ett system med några standardskalverktyg som bash, kill och dbus-send. Konstigt nog, medan felet är ganska gammalt, började det bara nyligen levereras i de mest populära Linux-distributionerna. Till exempel om du kör Red Hat Enterprise Linux (RHEL) 7; Debian 10; eller Ubuntu 18.04; du är okänslig för detta säkerhetshål. Men om du kör den nyare RHEL 8, testar Debian; eller Ubuntu 20.04 kan du attackeras med den.
Varför? Eftersom den här buggykoden inte hade använts i de flesta Linux-distributioner. Nyligen backades dock den sårbara koden till fraktversioner av polkit. Ett gammalt säkerhetshål fick ett nytt liv.
Det är inte den enda anledningen till att detta fel gömde sig helt klart så länge. Backhouse förklarade att säkerhetshålet inte utlöses varje gång du kör program som kan kalla det. Varför? Det visar sig att polkit frågar dbus-daemon om UID [User ID] för den begärande processen flera gånger, på olika kodvägar. De flesta av dessa kodvägar hanterar felet korrekt, men en av dem gör det inte. Om du dödar kommandot dbus-send tidigt hanteras det av en av rätt kodvägar och begäran avvisas. För att utlösa den sårbara kodvägen måste du koppla bort precis vid rätt tillfälle. Och eftersom det är flera processer inblandade, varierar tidpunkten för det “rätta ögonblicket” från körning till nästa. Därför tar det vanligtvis några försök för att exploateringen ska lyckas. Jag antar att det också är anledningen till att felet inte tidigare upptäcktes.
Det är en lömsk liten sak.
Men när Backhouse sa att det inte alltid kan utnyttjas, är det ingen anledning att inte oroa sig för det. Du kan enkelt skriva ett skript som säkert kommer att aktivera det efter några minuters försök. Red Hat varnar “Det största hotet från denna sårbarhet är datakonfidentialitet och integritet samt systemtillgänglighet.”
Därför, som Backhouse påpekar, eftersom det är “väldigt enkelt och snabbt att utnyttja … är det viktigt att du uppdaterar dina Linux-installationer så snart som möjligt.”
Så du vet vad du ska göra nu, eller hur? Gå till arbetet med lapp: Du vill uppgradera polkit till version 0.119 eller senare.
Relaterade berättelser:
CloudLinux släpper UChecker-säkerhetsverktyg för Linux-servrar Linux och öppen källkodsmiljöer ökar till Bidens cybersäkerhetsutmaning – Linux med höga svårighetsgrad säkerhetshål hittade, fixade
Relaterade ämnen:
Enterprise Software Security TV Data Management CXO Data Centers