Sandbox (software)

Een sandbox (Engels voor "zandbak") is een virtuele afgesloten ruimte op een computer waarin computerprogramma's kunnen werken zonder andere processen te versto…

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

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.[3]

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.[4] 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.[5]
  • 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.[6][7]
  • Windows Vista en latere edities bevatten een proces in een "low" modus draait, bekend als "Gebruikersaccountbeheer" (UAC).[8]
  • 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.[9]
  • 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.[10] 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.[11]
  • 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.[12]
  • 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), [13] 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

  1. Security/Sandbox - MozillaWiki. wiki.mozilla.org. Geraadpleegd op 30 maart 2019.
  2. Sandbox. chromium.googlesource.com. Geraadpleegd op 30 maart 2019.
  3. Sandboxing Applications (2001). Geraadpleegd op 7 mei 2013.
  4. Application Sandbox - Android Open Source Project. Geraadpleegd op 2 april 2021.
  5. Wilde, Daniel, GrapheneOS review: De-Googled goodness. 9to5google (16 april 2024).
  6. About App Sandbox. developer.apple.com. Geraadpleegd op 9 december 2020.
  7. (en) Security of runtime process in iOS and iPadOS. Apple Support. Geraadpleegd op 4 april 2021.
  8. (en) vinaypamnani-msft, How User Account Control works. learn.microsoft.com. Geraadpleegd op 14 juli 2025.
  9. Auto-Sandboxing secure system. Gearchiveerd op 12 februari 2015. Geraadpleegd op 30 januari 2015.
  10. Computer System Security and Access Controls (1991). Gearchiveerd op 28 mei 2013. Geraadpleegd op 17 mei 2013.
  11. Native Client Sandbox – Untrusted x86 Native Code. Geraadpleegd op 3 januari 2015.
  12. Internet Explorer Team Blog, Defense in Depth: Locking Down Mash-Ups with HTML5 Sandbox. IEBlog (14 July 2011).
  13. Wahbe, Robert, Efficient Software-Based Fault Isolation (1993).

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.