Sikkerhetsprosesser ved kjøring i iOS og iPadOS
iOS og iPadOS bidrar til å sørge for sikkerhet ved kjøring ved å bruke en «sandkasse», rettighetserklæringer og ASLR (Address Space Layout Randomization).
Sandkasseteknologi
Alle tredjepartsapper begrenses av sandkasseteknologi, slik at de ikke får tilgang til filer som er lagret av andre apper, og ikke har lov til å gjøre endringer på enheten. Sandkasseteknologi er utviklet for å hindre at apper samler inn eller gjør endringer i informasjon som er lagret av andre apper. Alle apper har en unik hjemmekatalog for filene sine, som tilordnes tilfeldig når appen installeres. Hvis en tredjepartsapp trenger tilgang til informasjon som ikke tilhører den selv, får den det kun ved å bruke tjenester som uttrykkelig kommer fra iOS og iPadOS.
Systemfiler og -ressurser skjermes også mot brukerens apper. De fleste systemfilene og ressursene i iOS og iPadOS kjører som brukeren «mobile» uten rettigheter, og det samme gjør alle tredjepartsapper. Hele operativsystempartisjonen aktiveres med skrivebeskyttelse. Unødvendige verktøy, for eksempel tjenester for fjernpålogging, tas ikke med i systemprogramvaren, og API-er tillater ikke at apper utvider sine egne rettigheter for å endre andre apper eller iOS og iPadOS.
Bruk av rettigheter
Tilgangen som tredjepartsapper har til brukerinformasjon og til funksjoner som iCloud og tilleggsfunksjoner, kontrolleres ved hjelp av rettighetserklæringer. Rettigheter er nøkkelverdipar som er knyttet til en app, og som tillater autentisering utover faktorer under kjøring, for eksempel en UNIX-bruker-ID. Siden rettigheter er signert digitalt, kan de ikke endres. Rettigheter brukes i stor grad av systemapper og daemoner for å utføre spesifikke privilegerte operasjoner som ellers ville kreve at prosessen kjøres som «root»-bruker. Det reduserer muligheten for at noen lurer til seg tilgang gjennom en kompromittert systemapp eller -daemon.
Dessuten kan apper kun utføre bakgrunnsbehandling gjennom API-er levert av systemet. Dette lar apper fortsette å fungere uten dårligere ytelse og uten at batteritiden påvirkes i stor grad.
Address Space Layout Randomization
ASLR (Address Space Layout Randomization) bidrar til å hindre uvedkommende i å utnytte feil i minnet. Innebygde apper bruker ASLR for å bidra til at alle minneområder genereres tilfeldig ved oppstart. I tillegg til å brukes under oppstart vil ASLR tilfeldig plassere minneadressene til kjørbar kode, systembiblioteker og relatert programmering for å redusere faren for mange former for utnyttelse. Et «return-to-libc»-angrep forsøker for eksempel å lure en enhet til å kjøre skadelig kode ved å manipulere minneadressene til stabler og systembiblioteker. Tilfeldig plassering av disse gjør det vanskeligere å utføre angrepet, særlig på flere enheter. Xcode, og utviklingsmiljøene til iOS og iPadOS, kompilerer automatisk tredjepartsapper med ASLR-støtte slått på.
Execute Never-funksjon
Ytterligere beskyttelse kommer fra iOS og iPadOS ved hjelp av ARMs XN-funksjon (Execute Never), som merker minnesider som ikke-kjørbare. Minnesider som er merket som både skrivbare og kjørbare, kan bare brukes av apper under nøye kontrollerte forhold: Kjernen kontrollerer at den finner den dynamiske kodesigneringsrettigheten som kun Apple har. Selv da er det kun mulig å foreta ett enkelt mmap
-anrop for å be om en kjørbar og skrivbar side, som blir gitt en tilfeldig adresse. Safari bruker denne funksjonaliteten til JavaScript just-in-time-kompilatoren (JIT).