I Mac OS Big Sur har Apple slutat tillåta vissa sorters systemtillägg (kernel extensions) från tredjepartsutvecklare. Det här var väntat och något Apple började varna för i Catalina. Det gäller än så länge inte alla kernel extensions, utan enbart dem som redan har fått en motsvarighet i Apples nya ”system extension”-format. Det är en säkrare och stabilare teknik för att bygga drivrutiner och annat som tidigare kördes som kernel extensions.

Hittills handlar det om kernel extensions som hanterar antivirus, brandväggar av olika slag, inmatningsenheter och drivrutiner för usb-tillbehör. Andra, mindre vanliga sorter fungerar fortfarande, till exempel virtuella filsystem. I framtiden är tanken att kernel extensions kommer att tas bort helt och hållet.

Det här innebär stora förändringar för utvecklare, men på vissa områden också för oss användare. Framför allt gäller det användare av brandväggar som Little Snitch, vpn-tjänster och nätverksbegränsare som Tripmode (som bara tillåter trafik från utvalda program så att du inte slösar på begränsad data när du till exempel är uppkopplad via mobilen eller ett 4g-modem).

Apples egna processer kringgår filter

Program som Little Snitch och Tripmode måste numera använda vad Apple kallar Network Extension API, ett programmeringsgränssnitt som ger tillgång till de allra flesta funktioner som tidigare fanns i motsvarande kernel extension. Men vad Apple har missat att nämna för någon är att det finns ett system med undantag som gör att dessa program inte längre kan filtrera precis alla nätverksanslutningar.

Du kan själv titta på listan som ligger i filen /System/Library/Frameworks/NetworkExtension.framework/Versions/A/Resources/Info.plist, under nyckeln ”ContentFilterExclusionList”. Här hittar vi processer som rör till exempel Facetime, Imessage, Icloud, Kartor och Siri.

Vill du testa att det verkligen är så här kan du det också. Installera Lulu 2.0 från Patrick Wardle (du måste både godkänna installationen av ett systemtillägg och att programmet filtrerar din internettrafik). Aktivera sedan Block Mode i inställningarna. Det här ska stänga av all trafik, och det fungerar för webbläsare, Mail och annat. Men testa att öppna Facetime och ringa någon – det fungerar och kan alltså inte blockeras.

David Dudok de Wit, utvecklaren av Tripmode, skriver på Medium om upptäckten och konsekvenserna det har för användare. För just Tripmode innebär det att du inte längre kan stoppa till exempel Icloud från att synka och Meddelanden från att hämta nya meddelanden, inklusive tunga bilagor som bilder och filmer. Resultatet är att programmet blir mer eller mindre värdelöst för huvudsyftet att blockera allt internet utom det allra viktigaste när du har en dyr uppkoppling.

Objective Development, utvecklarna av Little Snitch, skriver också om upptäckten, och att de tar för givet att Apple kommer rätta till det.

Blockat eller inte?
Brandväggen Lulu inställd på att blockera allt, men vad är detta? Mac App Store får fortfarande kommunicera som vanligt. (Klicka för större bild.)

Vpn också?

Vpn-program kan inte heller använda kernel extensions längre i Big Sur. Flera utvecklare har redan bytt till den moderna systemtilläggsvarianten. Men precis som brandväggar ser det inte bättre ut än att Apples undantag även gäller vpn-anslutningar. Det betyder att Facetime och många andra inbyggda processer kan fortsätta kommunicera med Apples servrar från din publika ip-adress och inte genom den vpn-tunnel du är ansluten till.

Våra undersökningar visar att det här bara verkar gälla vpn-program som använder ett nytt systemtillägg för att implementera ett eget vpn-protokoll. När vi ansluter via Mac OS inbyggda l2tp/ipsec manuellt inställt via Systeminställningar skickas till exempel Mac App Store-trafiken via vpn, och likaså med tredjepartsprogrammet Windscribe. Windscribe kan ansluta via olika protokoll som Ikev2 och openvpn. De här kör inga kernel extensions men fungerar ändå som vanligt.

Dåligt för både säkerhet och integritet

Ur ett säkerhetsperspektiv är den här förändringen allvarlig. Om brandväggar som Little Snitch och Lulu inte kan se eller stoppa trafik ut från datorn kan du inte förlita dig på sådana program för att hindra skadeprogram och bedrägliga program att ”ringa hem”. Patrick Wardle på Objective See har redan upptäckt en teknik som gör det möjligt för ett skadligt program att haka på trafiken från något av Apples undantagna processer för att skicka ut data från datorn.

Attackvektorn för hackare och skadeprogramsskapare går från ”hur kan vi hitta ett sätt att kringgå Little Snitch” till ”vilken av Apples 56 undantagna processer kan ha en sårbarhet vi kan utnyttja”. Risken har alltså blivit minst 56 gånger högre.

Apple talar sig ofta varmt om värdet av integritet och hur mycket företaget gör för att skydda sina användare från snokande reklamsäljare och annat. Men att inte kunna se och blockera all utgående trafik från datorn kan inte på något sätt tolkas som en förbättring av vare sig säkerhet eller integritetsskydd.

Vi får se framöver om Apple kommer att uttala sig och om vi får någon förklaring. För vi kan inte se någon rimlig orsak till att kringgå brandväggar eller vpn-anslutningar. ”Skicka all trafik över vpn” ska göra just det – all trafik betyder inte ”all trafik utom från pålitliga Apple-processer”.

Men vi har ytterst svårt att tro att Apple skulle göra det omöjligt att skicka all trafik över vpn med flit. Det är något många företag ställer som krav för att köpa in och använda datorer och Apple vill knappast förlora den marknaden. Eftersom systemets inbyggda vpn-funktion fortfarande ser ut att fungera fullt ut gissar vi att det är ett misstag från Apples sida att undantagslistan gäller även nya vpn-program.

Med det sagt är det inte på något sätt acceptabelt att inte kunna filtrera all trafik inklusive alla systemprocesser via brandväggar.

Rabalder kring certifikatkoll

Förutom ovan nämnda problematik har ett annat bekymmer i Big Sur, som även gäller Catalina, uppdagats den senaste veckan, och som har diskuterats flitigt på Twitter och olika Macsajter. Det handlar om hur systemet kontrollerar utvecklarcertifikat för att se till att du inte kör något program från en utvecklare vars certifikat har dragits in.

Mac OS har en bakgrundsprocess kallad trustd som sköter detta (som även kontrollerar certifikaten för säkra webbplatser). Hackaren Paul Jeffrey skrev först om att Apple-servern ocsp.apple.com låg nere när många användare försökte uppdatera till Big Sur och hur det fick program att starta extremt långsamt även på Catalina. Orsaken är att Gatekeeper kontrollerar när du startar ett program, som är kryptografiskt signerat av utvecklaren, om certifikatet fortfarande är giltigt.

Ocsp står för online certificate status protocol. Det är en internetstandard och inget Apple har hittat på. Det har uppmärksammats att meddelandena som skickas dit inte är krypterade, men det beror på att själva protokollet är utformat så. Paul Jeffrey beskrev det som att Mac OS skickar uppgifter om vilket program du öppnar, men bland andra Jacopo Jannone har tittat närmre på detta och det stämmer inte helt. För det första är det ett serienummer för utvecklarcertifikatet som skickas (vilket inte kan göra skillnad på olika program från samma utvecklare), och för det andra är det inte varje gång du startar programmet utan då och då.

Men en del utvecklare har bara ett program och varje certifikatkoll för det avslöjar att någon på din ip-adress har använt just det programmet åtminstone vid det tillfället.

Apple har dock redan svarat på den här kritiken och meddelar i ett supportdokument att ett nytt system för certifikatkontroll ska tas fram där all trafik är krypterad så att din internetoperatör och andra inte kan spionera på vilken utvecklares program du använder. Systemet ska också bli bättre på att hantera serverproblem (så att det inte tar en halv evighet att starta ett program) och till slut ska en systeminställning tillkomma för att stänga av kontrollerna helt för den som inte vill dela någon data med Apple.

Så här skyddar du dig

Tills vi har ett rakare svar från Apple om nätverksfiltrering finns det ändå en del du kan göra för att stoppa Apples program.

Den första metoden är att stänga av delar av System Integrity Protection (SIP) i Mac OS, så att du kan använda de gamla versionerna av Little Snitch, Lilu, Tripmode och så vidare med kernel extension. Apple kan inte stoppa dessa från att filtrera sin egen trafik. Eftersom det här gör Macen mindre säker i allmänhet är det inget vi rekommenderar vanliga användare, utan något vi lämnar åt experter som förstår hur det fungerar och som kan hantera riskerna.

Vad en del kommentarer på Twitter och andra ställen har poängterat är att en brandvägg som körs på den enhet från vilken du vill filtrera internettrafik ändå aldrig går att lita på till hundra procent. Ett avancerat skadeprogram som tagit sig in på din dator kan alltid hitta sätt att kringgå datorns mjukvara. Den andra metoden är därför att använda en extern brandvägg, till exempel en avancerad router med öppna källkodsbrandväggen pfsense. Det här är långt ifrån enkelt att komma igång med och inte i närheten lika användarvänligt som Little Snitch eller Lulu.

Miles Wolbe på tinyapps.org beskriver en tredje metod som går ut på att redigera Apples undantagslista – vilket inte är det lättaste med alla skydd Apple har lagt till i Big Sur.

Om du inte är intresserad av att stoppa Apples trafik men vill se till att den går genom en vpn är det lite lättare. Om din router redan har inbyggd vpn-klient kan du konfigurera den så att hela nätverket ligger bakom vpn:en, och om inte kan du skaffa en. Du kan också kolla om din nuvarande router stödjer öppen källkod-mjukvara som dd-wrt eller Openwrt som också har inbyggd vpn-klient.

Förhoppningsvis inser Apple problemet och återställer möjligheten att filtrera all trafik. Om inte annat lär det vara ett tvång från många företag, och är det något vi kan räkna med så är det att Apple tänker med plånboken.