
Operativsystemintegritet
Apple designer operativsystemprogramvare med tanke på sikkerhet. Det inkluderer en maskinvarebasert «root of trust» – som gjør det mulig med sikker oppstart – og en sikker prosess for programvareoppdateringer som er både rask og trygg. Apples operativsystemer bruker også spesialbygde, silisiumbaserte maskinvarefunksjoner for å bidra til å forhindre utnyttelse når operativsystemet kjører. Disse funksjonene ved kjøring beskytter integriteten til godkjent kode når den kjøres. Apples operativsystem bidrar til å redusere angreps- og utnyttelsesteknikker – uansett om de stammer fra en ondsinnet app, fra internett eller gjennom en annen kanal. Disse beskyttelsene er tilgjengelige på enheter med støttede Apple-designede SoC-er, inkludert iOS, iPadOS, macOS på Macer med Apple-chip, tvOS, visionOS og watchOS.
Funksjon | 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) støttes på A15 og nyere, og på M2 og nyere SOC-er og erstatter Page Protection Layer på støttede plattformer.
2: Page Protection Layer (PPL) og Secure Page Table Monitor (SPTM) håndhever kjøringen av signert og godkjent kode på alle plattformer, bortsett fra i macOS (siden macOS er designet for å kjøre all kode). Alle de andre sikkerhetsegenskapene, inkludert å beskytte sidetabeller, finnes på alle støttede plattformer.
Kernel Integrity Protection
Etter at operativsystemkjernen fullfører initialisering, aktiveres Kernel Integrity Protection (KIP) for å bidra til å hindre modifisering av kjerne- og driverkode. Minnekontrolleren har et beskyttet område i fysisk minne der iBoot laster inn kjernen og kjerneutvidelser. Når oppstart er fullført, hindrer minnekontrolleren skriving til det beskyttede minneområdet. Applikasjonsprosessorens minneadministreringsenhet (MMU) er konfigurert for å bidra til å forhindre tilordning av privilegert kode fra fysisk minne utenfor det beskyttede minneområdet, og for å bidra til å forhindre skrivbare tilordninger av fysisk minne innen kjerneminneområdet.
For å hindre rekonfigurering, låses maskinvaren som brukes til å aktivere KIP etter at oppstartsprosessen fullføres.
Raske rettighetsrestriksjoner
Fra og med Apple A11 Bionic og S3-SoC-er ble nye maskinvaregrunnelementer introdusert. Disse grunnelementene (raske rettighetsrestriksjoner) inkluderer et CPU-register som raskt begrenser rettigheter etter tråd. Med raske rettighetsrestriksjoner (også kjent som APRR), kan støttede operativsystemer fjerne kjørerettigheter fra minnet uten å ta belastningen som oppstår ved et systemkall og en sidetabellgjennomgang/rydding. Disse registrene reduserer risikoen for angrep fra internett ytterligere, spesielt kode som er kompilert ved kjøring (JIT-kompilert – Just-in-time), siden minnet faktisk ikke er kjørbart samtidig som det kan leses og skrives.
System Coprocessor Integrity Protection
Koprosessorfirmware håndterer mange kritiske systemoppgaver, for eksempel Secure Enclave, bildesensorprosessoren og koprosessoren for bevegelse. Dennes sikkerhet er derfor en viktig del av sikkerheten til hele systemet. For å hindre modifisering av koprosessorfirmwaren bruker Apple en mekanisme som kalles System Coprocessor Integrity Protection (SCIP).
SCIP fungerer nesten som KIP: Ved oppstart laster iBoot hver koprosessors firmware inn i et beskyttet minneområde, et som er reservert og separat fra KIP-området. iBoot konfigurerer hver koprosessors minneenhet for å bidra til å forhindre:
utførbare tilordninger utenfor sin del av det beskyttede minneområdet
skrivbare tilordninger innenfor sin del av det beskyttede minneområdet
Også ved oppstart, for å konfigurere SCIP for Secure Enclave, brukes Secure Enclave-operativsystemet. Etter at oppstartsprosessen er fullført, låses maskinvaren som brukes til aktivere SCIP. Dette er utviklet for å hindre rekonfigurering.
Pointer Authentication Codes
Pointer Authentication Codes (PAC-er) brukes til å beskytte mot utnyttelse av feil i minnet. Systemprogramvare og innebygde apper bruker PAC til å bidra til å forhindre modifisering av funksjonspekere og returadresser (kodepekere). PAC bruker fem hemmelige 128-bit-verdier til å signere kjerneinstruksjoner og data, og hver brukerområdeprosess har sine egne B-nøkler. Objekter saltes og signeres som vist under.
Objekt | Nøkkel | Salt |
|---|---|---|
Funksjonsreturadresse | IB | Lagringsadresse |
Funksjonspekere | IA | 0 |
Blokkoppkallsfunksjon | IA | Lagringsadresse |
Blokkdeskriptorpeker | DA | Lagringsadresse + 0xC0BB |
Objective-C-metodebuffer | IB | Lagringsadresse + Klasse + Velger |
Objective-C-Isapeker | DA | Lagringsadresse + 0x6AE1 |
Objective-C-Superpeker | DA | Lagringsadresse + 0xB5AB |
Selektorskrevet Objective-C-ivars | DB | Lagringsadresse + 0x57C2 |
Objective-C-skrivebeskyttet klassedatapeker | DA | Lagringsadresse + 0x61F8 |
C++ V-tabelloppføringer | IA | Lagringsadresse + hash (mangled method name) |
C++ V-tabellpekere | DA | Lagringsadresse + hash (mangled base V-Table name) |
Beregnet Goto-etikett | IA | Hash (funksjonsnavn) |
Kjernetrådtilstand | GA | • |
Brukers trådtilstandsregistre | IA | Lagringsadresse |
Signaturverdien lagres i de ubrukte utfyllings-bit-ene øverst i 64-bitspekeren. Signaturen verifiseres før bruk, og utfyllingen gjenopprettes for å bidra til å sikre en fungerende pekeradresse. Hvis verifiseringen mislykkes, avbrytes det. Denne verifiseringen vanskeliggjør mange angrep, for eksempel Return-Oriented Programming-angrep (ROP), som forsøker å lure enheten til å kjøre eksisterende kode på en ondsinnet måte ved å manipulere funksjonsreturadresser lagret på stabelen.
Page Protection Layer
Page Protection Layer (PPL) i iOS, iPadOS, visionOS og watchOS er utviklet for å hindre brukerområdekode i å bli modifisert etter at kodesignaturverifisering er fullført. PPL bygger på KIP og raske rettighetsrestriksjoner og styrer sidetabellrettighetsoverstyringene for å sikre at kun PPL kan endre beskyttede sider som inneholder brukerkode og sidetabeller. Systemet tilbyr en enorm reduksjon i angrepsflate ved å støtte systemomfattende kodeintegritetshåndheving, selv i møte med en kompromittert kjerne. Denne beskyttelsen tilbys ikke på macOS fordi PPL kun gjelder på systemer der all kjørt kode må signeres.
Secure Page Table Monitor og Trusted Execution Monitor
Secure Page Table Monitor (SPTM) og Trusted Execution Monitor (TXM) i iOS, iPadOS, macOS og visionOS er utviklet for å samarbeide for å bidra til å beskytte sidetabeller for både bruker- og kjerneprosesser mot endringer. Dette inkluderer når angripere har skriverettigheter for kjernen og kan omgå kontrollflytbeskyttelsene. SPTM gjør dette ved å bruke høyere rettighetsnivå enn kjernen, og ved å bruke TXM, som har lavere rettighetsnivå, til å håndheve reglene som styrer kjøring av kode. Systemet er designet slik at kompromittering av TMX ikke automatisk oversettes til en forbigåing av SPTM, siden rettighetsnivåene holdes adskilt og godkjenningen styres mellom dem. I SOC-ene A15 eller nyere og M2 eller nyere erstatter SPTM (kombinert med TXM) PPL for å skape en mindre angrepsflate som ikke er avhengig av godkjenning fra kjernen, selv under tidlig oppstart. SPTM er avhengig av nye grunnelementer fra chipen, som er en videreutvikling av de raske rettighetsrestriksjonene som PPL bruker, og de er bare tilgjengelige på prosessorene som er oppført i tabellen over.
Memory Integrity Enforcement
Memory Integrity Enforcement (MIE) er et omfattende minnesikkerhetsforsvar for Apple-plattformer som er tilgjengelig på A19- og M5-prosessorer og nyere. MIE er bygget på det solide grunnlaget fra Apples sikre minneallokatorer sammen med Enhanced Memory Tagging Extension (EMTE) i synkron modus. Det støttes av omfattende Tag Confidentiality Enforcement-regelsett. MIE er innebygget i Apple-chiper og tilbyr enestående minnesikkerhetsbeskyttelse som alltid er på for viktige angrepsflater inkludert kjernen, og som fortsatt leverer kreftene og ytelsen som brukerne forventer. Du finner mer informasjon om dette under Memory Integrity Enforcement: A complete vision for memory safety in Apple device på Apple Security Research-bloggen.
Memory Tagging Extension
Arm lanserte Memory Tagging Extension-spesifikasjoner (MTE) i 2019 som et maskinvareverktøy for å hjelpe med å finne minnekorrupsjonsfeil. MTE er et system for minneetiketter og etikettkontroll, hvor alle minneallokeringer merkes med en hemmelighet. Maskinvaren garanterer at senere forespørsler om minnetilgang kun godkjennes dersom forespørselen inneholder den riktige hemmeligheten. Hvis hemmelighetene ikke stemmer overens, vil appen krasje og hendelsen registreres. Dette gjør at utviklere kan identifisere minnekorrupsjonsfeil akkurat når de skjer.
Enhanced Memory Tagging Extension
EMTE tetter hullene som hindrer MTE fra å være et aktivt forsvar, inkludert å kun støtte den sikrere synkrone modusen. I tillegg vil tilgang til umerket minne fra et område med merket minne kreve at det aktuelle områdets etikett er kjent, slik at det blir betydelig vanskeligere for angripere å gjøre feil utenfor det aktuelle området i dynamisk merket minne om til en måte å omgå EMTE på ved å direkte endre umerkede allokeringer.
Tag Confidentiality Enforcement
Tag Confidentiality Enforcement beskytter implementeringen av de sikre allokeringene fra tekniske trusler og beskytter konfidensialiteten til EMTE-merker – inkludert mot angrep fra sidekanaler og spekulative utføringer. Secure Page Table Monitor beskytter cachen og etikettlagringen i kjerneallokeringen. Systemet sikrer også at når kjernen bruker minne på vegne av en app, er den underlagt samme etikettkontrollregler som brukerområdet. Tag Confidentiality Enforcement er også designet for å redusere etikettlekkasje som skyldes timing eller spekulative angrep, og inkluderer til og med beskyttelse mot Spectre V1.