Een sandbox (Engels voor "zandbak") is een virtuele afgesloten ruimte op een computer waarin computerprogramma's kunnen werken zonder andere processen te verstoren. In een sandbox heeft uitgevoerde code geen toegang tot processen of bestanden buiten de sandbox. Hierdoor zou het de beveiliging ten goede komen. Sandboxen worden voornamelijk gebruikt om code uit te voeren die niet vertrouwd wordt of onstabiel bevonden wordt.
Gebruik Webbrowsers zoals Mozilla Firefox en Google Chrome maken een sandbox aan voor elk tabblad. Plug-ins zoals Adobe Flash Player plaatst Mozilla Firefox in een sandbox. Sandboxie gebruikt een sandbox om te voorkomen dat een niet-vertrouwd programma of malware toegang heeft tot de rest van het systeem. Virtuele machines zoals VirtualBox en die van VMware zijn sandboxen die een computer nabootsen en de rechten tot de fysieke computeronderdelen voor software binnen de virtuele machine beperken.
Implementaties Een sandbox wordt geïmplementeerd door de software uit te voeren in een beperkte besturingssysteemomgeving, waardoor de bronnen (bijv. bestandsdescriptors, geheugen, bestandssysteemruimte, enz.) die een proces mag gebruiken, worden beheerd.
Voorbeelden van sandbox-implementaties zijn onder andere de volgende:
Sandboxing voor Linux- applicaties, gebouwd op de seccomp-, cgroups- en namespaces-functies van de Linux-kernel. Vooral gebruikt door Systemd, Google Chrome, Firefox en Firejail. Android was een van de eerste gangbare besturingssystemen die volledige applicatie-sandboxing implementeerde, door elke applicatie een eigen Linux-gebruikers-ID toe te wijzen. GrapheneOS versterkt deze app-sandboxing om een extra beveiligingslaag te creëren en potentieel kwaadaardige apps te vermijden en, in tegenstelling tot standaard Android, maakt het sandboxing van elke app in het OS mogelijk. Apple App Sandbox is vereist voor apps die worden gedistribueerd via de Mac App Store en de iOS / iPadOS App Store van Apple, en wordt aanbevolen voor andere ondertekende apps. Windows Vista en latere edities bevatten een proces in een "low" modus draait, bekend als "Gebruikersaccountbeheer" (UAC). Google Sandboxed API. Virtuele machines emuleren een volledige hostcomputer, waarop een conventioneel besturingssysteem kan opstarten en draaien zoals op echte hardware. Het gastbesturingssysteem draait gesandboxed in die zin dat het niet rechtstreeks op de host functioneert en alleen toegang heeft tot hostbronnen via de emulator. Een jail: beperkingen op netwerktoegang en een beperkte bestandssysteem-namespace. Jails worden meestal gebruikt in virtuele hosting. Regelgebaseerde uitvoering geeft gebruikers volledige controle over welke processen worden gestart, aangemaakt (door andere applicaties) of code mogen injecteren in andere applicaties en toegang hebben tot het netwerk, doordat het systeem toegangsniveaus toewijst aan gebruikers of programma's volgens een reeks vastgestelde regels. Het kan ook de beveiliging van bestanden/registers beheren (welke programma's het bestandssysteem/register mogen lezen en schrijven). In zo'n omgeving hebben virussen en Trojaanse paarden minder kans om een computer te infecteren. De beveiligingsframeworks SELinux en Apparmor zijn twee zulke implementaties voor Linux. Beveiligingsonderzoekers vertrouwen sterk op sandboxing-technologieën om het gedrag van malware te analyseren. Door een omgeving te creëren die de beoogde desktops nabootst of repliceert, kunnen onderzoekers evalueren hoe malware een doelhost infecteert en compromitteert. Talrijke malware-analysediensten zijn gebaseerd op de sandboxing-technologie. Google Native Client is een sandbox voor het efficiënt en veilig uitvoeren van gecompileerde C- en C++-code in de browser, onafhankelijk van het besturingssysteem van de gebruiker. Capability-systemen kunnen worden gezien als een fijnmazig sandbox-mechanisme, waarbij programma's ondoorzichtige tokens krijgen wanneer ze worden gestart en in staat zijn om specifieke acties uit te voeren op basis van de tokens die ze bezitten. Capability-gebaseerde implementaties kunnen op verschillende niveaus werken, van de kernel tot user space. Een voorbeeld van capability-gebaseerde sandboxing op gebruikersniveau is HTML-rendering in een webbrowser, bij zowel Chromium als WebKit. In de Secure Computing Mode (seccomp) strict modus staat seccomp alleen de systeemaanroepen write(), read(), exit() en sigreturn() toe. HTML5 heeft een "sandbox"-attribuut voor gebruik met iframes. Java virtuele machines bevatten een sandbox om de acties van onbetrouwbare code, zoals een Java-applet, te beperken. De .NET Common Language Runtime biedt Code Access Security om beperkingen op te leggen aan onbetrouwbare code. Software Fault Isolation (SFI), maakt het mogelijk om onbetrouwbare native code uit te voeren door alle store-, read- en jump-assemblerinstructies in een sandbox te plaatsen naar geïsoleerde geheugensegmenten.
Enkele gebruiksscenario's voor sandboxen zijn:
Online beoordelingssystemen (online judges) om programma's te testen tijdens programmeerwedstrijden. Nieuwe generatie pastebins die gebruikers toelaten om geplakte codefragmenten rechtstreeks uit te voeren op de server van de pastebin.
Referenties
Categorie:Beveiliging Categorie:Software