
Operativsystemets integritet
Apple designer sin operativsystemsoftware med sikkerhed som et centralt element. Designet omfatter en tillidsrod i hardwaren, der bruges til at gøre sikker start mulig, og en hurtig og sikker softwareopdateringsproces. Apples operativsystemer bruger også deres specielle chipbaserede hardwarefunktioner til at mindske risikoen for udnyttelse under operativsystemets afvikling. Under afvikling af godkendt kode beskytter disse funktioner den godkendte kodes integritet. Apples operativsystemer er med til at danne et bolværk mod angrebs- og udnyttelsesteknikker, uanset om de kommer fra en skadelig app, fra internettet eller en anden kanal. Disse beskyttelsesforanstaltninger findes på enheder med SoC’er designet af Apple, herunder iOS, iPadOS, macOS på en Mac med Apple Silicon, tvOS, visionOS og watchOS.
Funktion | A10 | A11, S3 | A12-A14 S4-S10 | A15-A18 | M1 | M2-M4 | A19 M5 |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
|
|
|
| |
|
|
|
1 |
2 |
|
| |
|
|
|
|
|
2 |
2 | |
Memory Integrity Enforcement med Enhanced Memory Tagging Extension |
|
|
|
|
|
|
|
1: Secure Page Table Monitor (SPTM) understøttes på A15 og nyere og M2 og nyere SOC’er og erstatter Sidebeskyttelseslag på understøttede platforme.
2: Sidebeskyttelseslag (PPL) og Secure Page Table Monitor (SPTM) gennemtvinger, at signeret og godkendt kode afvikles på alle platforme med undtagelse af macOS (da macOS er udviklet til at afvikle alle koder). Alle andre sikkerhedsegenskaber, herunder beskyttelse af sidetabeller, er til stede på alle understøttede platforme.
Beskyttelse af kernens integritet
Når initialiseringen af operativsystemets kerne er færdig, aktiveres beskyttelsen af kernens integritet (KIP – Kernel Integrity Protection) for at bidrage til at forhindre modificering af kerne- og driverkode. Styreenheden til hukommelse tilvejebringer et beskyttet område i den fysiske hukommelse, som iBoot bruger til at indlæse kernen og kerneudvidelser. Når starten er gennemført, afviser styreenheden til hukommelse forsøg på at skrive til det beskyttede område af den fysiske hukommelse. App-processorens MMU (Memory Management Unit) konfigureres, så den bidrager til at forhindre overførsel af privilegeret kode fra fysisk hukommelse uden for det beskyttede hukommelsesområde og er med til at forhindre overførsel af fysisk hukommelse med skrivemulighed inden for kernehukommelsesområdet.
Ændring af konfigurationen forhindres, ved at den hardware, der bruges til at aktivere KIP, låses, når startprocessen er færdig.
Hurtige begrænsninger i adgangen
Med Apple A11 Bionic og S3 SoC‘er som de første blev der indført en ny basal hardwarefunktion. Denne basale funktion, Hurtige begrænsninger i adgangen, omfatter et CPU-register, der hurtigt begrænser adgangen pr. tråd. Disse hurtige begrænsninger i adgangen (kaldes også APRR-registre) gør det muligt for understøttede operativsystemer at fjerne afviklingstilladelser fra hukommelsen uden at bruge ressourcer på et systemkald og gennemgang eller tømning af sidetabellen. Disse registre danner et ekstra bolværk mod angreb fra internettet, især mod kode, der kompileres på afviklingstidspunktet (JIT-kompileres), da hukommelsen i praksis ikke kan afvikles, samtidig med at der læses fra den eller skrives til den.
Beskyttelse af integriteten af systemets hjælpeprocessor
Hjælpeprocessorfirmware håndterer mange kritiske systemopgaver, f.eks. Secure Enclave, billedsensorprocessoren og bevægelseshjælpeprocessoren. Dens sikkerhed er derfor et vigtigt element i hele systemets sikkerhed. Apple bruger mekanismen Beskyttelse af integriteten af systemets hjælpeprocessor (SCIP – System Coprocessor Integrity Protection) til at forhindre modificering af hjælpeprocessorfirmwaren.
SCIP fungerer på næsten samme måde som KIP: Under starten indlæser iBoot hver enkelt hjælpeprocessors firmware i et beskyttet hukommelsesområde, der er reserveret hertil og adskilt fra KIP-området. iBoot konfigurerer hver enkelt hjælpeprocessors hukommelsesenhed for at være med til at forhindre:
Eksekverbare mapninger uden for dens del af det beskyttede hukommelsesområde
Overførsel med skrivemulighed inden for dens del af det beskyttede hukommelsesområde
Under starten bruges Secure Enclave-operativsystemet til at konfigurere SCIP til Secure Enclave. Når startprocessen er færdig, låses den hardware, der bruges til at aktivere SCIP. Det har til formål at forhindre ændring af konfigurationen.
Koder til markørgodkendelse
Koder til markørgodkendelse (PAC) bruges til at beskytte mod udnyttelse af fejl, der ødelægger hukommelsen. Systemsoftware og indbyggede apps bruger PAC til at bidrage til at forhindre modificering af funktionsmarkører og returadresser (kodemarkører). PAC benytter fem hemmelige 128-bit værdier til at signere kerneinstruktioner og data, og hver brugerområdeproces har sine egne B-nøgler. Emner bliver tilføjet og signeret som vist nedenfor.
Emne | Nøgle | Salt |
|---|---|---|
Funktionsreturadresse | IB | Lagringsadresse |
Funktionsmarkører | IA | 0 |
Blokaktiveringsfunktion | IA | Lagringsadresse |
Blokbeskrivelsesmarkør | DA | Lagringsadresse + 0xC0BB |
Objective-C Method Cache | IB | Lagringsadresse + Klasse + Vælger |
Objective-C Isa-markør | DA | Lagringsadresse + 0x6AE1 |
Objective-C Super-markør | DA | Lagringsadresse + 0xB5AB |
Vælgerindtastede Objective-C ivars | DB | Lagringsadresse + 0x57C2 |
Objective-C Skrivebeskyttet klassedatamarkør | DA | Lagringsadresse + 0x61F8 |
C++ V-tabelværdier | IA | Lagringsadresse + Hash (name mangling-metode) |
C++ V-tabelmarkører | DA | Lagringsadresse + Hash (name mangling-base V-tabel) |
Beregnet Goto-label | IA | Hash (funktionsnavn) |
Kerne-trådtilstand | GA | • |
Registre over brugertråde | IA | Lagringsadresse |
Signaturværdien opbevares i de ubrugte padding-bits øverst i 64-bit markøren. Signaturen bliver godkendt inden brug, og paddingen bliver gendannet for at være med til at sikre, at markøradressen fungerer. Manglende godkendelse resulterer i en afbrydelse. Denne godkendelse forhindrer mange angreb, som f.eks. ROP-angreb (Return Oriented Programming), der forsøger at narre enheden til at afvikle eksisterende kode på en ondsindet måde ved at manipulere funktionsreturadresser, der opbevares i stakken.
Sidebeskyttelseslag
Sidebeskyttelseslag (Page Protection Layer, PPL) i iOS, iPadOS, visionOS og watchOS har til formål at forhindre, at kode i brugerområdet modificeres, efter godkendelsen af kodesignaturen er gennemført. PPL, der bygger på KIP og hurtige begrænsninger i adgangen, administrerer tilsidesættelser af sidetabeltilladelser for at sikre, at kun PPL kan ændre beskyttede sider, der indeholder brugerkode og sidetabeller. Systemet reducerer angrebsfladen betydeligt, fordi det understøtter håndhævelse af kodeintegritet i hele systemet, selv hvis en kerne bliver kompromitteret. Denne beskyttelse findes ikke i macOS, fordi PPL kun kan anvendes på systemer, hvor al kode, der afvikles, skal være signeret.
Secure Page Table Monitor og Trusted Execution Monitor
Secure Page Table Monitor (SPTM) og Trusted Execution Monitor (TXM) på iOS, iPadOS, macOS og visionOS er designet til at arbejde sammen, så de bidrager til at beskytte sidetabeller til både bruger og kerneprocesser mod ændringer. Det omfatter også tilfælde, hvor hackere har mulighed for at skrive i kernen og kan omgå beskyttelsesforanstaltninger for kontrolflow. Det gør SPTM ved at bruge et højere rettighedsniveau end kernen og ved at bruge TXM, som har færre rettigheder, til at håndhæve de politikker, der styrer afviklingen af kode. Dette system er designet sådan, at kompromittering af TMX ikke automatisk er ensbetydende med omgåelse af SPTM, takket være denne adskillelse af rettigheder og styringen af godkendelser mellem dem. På A15- og M2-SoC’er og nyere versioner bliver PPL erstattet af SPTM (kombineret med TXM), og det giver en mindre angrebsflade, som ikke er afhængig af tillid til kernen – heller ikke i begyndelsen af startprocessen. SPTM er afhængig af nye primitiver til Silicon, der er en videreudvikling af de hurtige begrænsninger i adgangen, som Sidebeskyttelseslag bruger. De er kun tilgængelige for de processorer, som er anført i tabellen ovenfor.
Memory Integrity Enforcement
Memory Integrity Enforcement (MIE) er et omfattende sikkerhedsforsvar til Apple-platforme, der er tilgængelig på A19- og M5-processorer og nyere. MIE er bygget på det robuste grundlag fra Apples sikre hukommelsesallokatorer sammen med Enhanced Memory Tagging Extension (EMTE) i en synkron funktion og understøttes af omfattende politikker for Tag Confidentiality Enforcement. MIE er indbygget i Apple Silicon og tilbyder uforlignelig beskyttelse af hukommelsessikkerheden, der altid er slået til, for vigtige angrebsflader, herunder kernen, samtidig med at kraften og ydeevnen, som brugere forventer, opretholdes. Du kan få flere oplysninger i Memory Integrity Enforcement: A complete vision for memory safety in Apple devices på Apples blog om sikkerhedsforskning.
Memory Tagging Extension
Arm offentliggjorde specifikationen til Memory Tagging Extension i 2019 som et værktøj til hardware, som kan hjælpe med at finde fejl, der ødelægger hukommelsen. MTE er et system til hukommelsesmærkning og kontrol af mærker, hvor hver hukommelsesallokering mærkes med en nøgle. Hardwaren garanterer, at der kun gives tilladelse til senere anmodninger om adgang til hukommelsen, hvis anmodningen indeholder den korrekte nøgle. Hvis nøglerne ikke stemmer overens, går appen ned, og hændelsen logføres. Dermed kan udviklere med det samme identificere fejl, der ødelægger hukommelsen, når de opstår.
Enhanced Memory Tagging Extension
EMTE lukker hullerne, der forhindrer MTE i at være et aktivt forsvar og understøtter kun den mere sikre synkrone funktion. Desuden kræver adgang til den ikke-mærkede hukommelse fra et mærket hukommelsesområde kendskab til det områdes mærke, så det bliver betydeligt sværere for hackere at bruge OOB-fejl i den dynamisk mærkede hukommelse til at slippe uden om EMTE ved at modificere ikke-mærkede allokeringer direkte.
Tag Confidentiality Enforcement
Tag Confidentiality Enforcement beskytter implementeringen af de sikre allokatorer mod tekniske trusler og beskytter EMTE-mærkernes fortrolighed, herunder mod angreb rettet mod sidekanaler og angreb med spekulativ udførelse. Secure Page Table Monitor beskytter kerneallokatorens understøttelseslagring og lagring af mærker. Systemet sikrer også, at når kernen får adgang til hukommelsen på vegne af en app, er systemet også underlagt de samme regler for kontrol af mærker som brugerområdet. Tag Confidentiality Enforcement er også designet til at afbøde, at der lækkes mærker som følge af angreb rettet mod tidsmåling eller spekulative angreb og indeholder også en beskyttelse mod Spectre V1.