Sikkerhed under afvikling af apps i iOS og iPadOS
iOS og iPadOS bidrager til sikkerheden under afvikling af apps ved at bruge et isoleret miljø (en “sandbox”), erklærede berettigelser og ASLR (Address Space Layout Randomization).
Placering i et isoleret miljø
Alle apps fra tredjeparter afvikles i et isoleret miljø (“sandbox”), der forhindrer dem i at få adgang til arkiver, som andre apps har oprettet, og i at foretage ændringer af enheden. “Sandboxing” har til formål at forhindre apps i at indsamle eller ændre oplysninger, som andre apps har gemt. Hver app har sit eget hjemmebibliotek til sine arkiver. Det tildeles efter en tilfældighedsalgoritme, når appen installeres. Hvis en app fra en tredjepart har behov for at få adgang til andre oplysninger end sine egne, gør den det udelukkende ved hjælp af tjenester i iOS og iPadOS.
Systemarkiver og -ressourcer skærmes også mod brugernes apps. De fleste systemarkiver og -ressourcer i iOS og iPadOS afvikles som den ikke-privilegerede bruger i “mobile”. Det samme gør alle apps fra tredjeparter. Hele partitionen med operativsystemet er aktiveret som skrivebeskyttet. Unødvendige værktøjer, f.eks. tjenesterne til ekstern login, indgår ikke i systemsoftwaren, og API'er tillader ikke, at apps eskalerer deres tilladelser for at ændre andre apps eller iOS og iPadOS.
Brug af berettigelse
Adgang fra apps fra tredjeparter til brugeroplysninger og funktioner som iCloud og udvidelsesmuligheder styres ved hjælp af erklærede berettigelser. Berettigelser er parvise nøgler og værdier, som indgår i appens signatur og tillader godkendelse ud over afviklingsfaktorer som f.eks. bruger-id til UNIX. Eftersom berettigelser er signeret digitalt, kan de ikke ændres. Berettigelser bruges i vidt omfang af systemapps og -dæmoner til at udføre bestemte, privilegerede funktioner, som ellers skulle udføres som root. Det giver en langt mindre risiko for, at en systemapp eller en systemdæmon, som er blevet kompromitteret, eskalerer sine tilladelser.
Apps kan desuden kun udføre opgaver i baggrunden via systemets API'er. Det gør, at apps kan blive ved med at fungere uden at forringe ydeevnen eller forkorte batteritiden voldsomt.
ASLR (Address Space Layout Randomization)
ASLR (Address Space Layout Randomization) er med til at beskytte mod udnyttelse af fejl, der ødelægger hukommelsen. Indbyggede apps bruger ASLR til at bidrage til at sikre en tilfældig placering af alle hukommelsesområder, når de startes. Ud over funktionen under start placerer ASLR hukommelsesadresserne til app-kode, systembiblioteker og relaterede programmeringskonstruktioner tilfældigt og mindsker derved sandsynligheden for mange angreb. Eksempelvis forsøger et return-to-libc-angreb at narre en enhed til at udføre en ondsindet kode ved at manipulere hukommelsesadresserne i stakken og systembibliotekerne. Når de placeres tilfældigt, er det sværere at foretage et angreb, især på flere enheder samtidig. Xcode, såvel som udviklingsmiljøerne i iOS og iPadOS, kompilerer automatisk apps fra tredjeparter med ASLR-understøttelse slået til.
Funktionen Execute Never
Yderligere beskyttelse opnås ved, at iOS og iPadOS bruger ARM-funktionen Execute Never (XN), som markerer hukommelsessider som ikke-app-sider. Hukommelsessider, der både er markeret med skriveadgang og som app-sider, kan kun bruges af apps under yderst kontrollerede betingelser: Kernen undersøger, om den Apple-mærkede berettigelse “dynamisk kodesignering” er til stede. Selv da kan der kun foretages et enkelt mmap
-kald for at anmode om en app-side, der er skriveadgang til, og som er tildelt en tilfældig adresse. Safari bruger denne funktionalitet til sin JavaScript JIT-compiler (Just-in-Time).