This article is about the computer security mechanism. For the software testing environment, seeSandbox (software development).
Incomputer security, asandbox is a security mechanism for separating running programs, usually in an effort to mitigate system failures and/or softwarevulnerabilities from spreading. Thesandbox metaphor derives from the concept of a child's sandbox—a play area where children can build, destroy, and experiment without causing any real-world damage.[1] It is often used to analyze untested or untrusted programs or code, possibly originating from unverified or untrusted third parties, suppliers, users or websites, without risking harm to the host machine oroperating system.[2] A sandbox typically provides a tightly controlled set of resources for guest programs to run in, such as storage and memoryscratch space. Network access, the ability to inspect the host system, or read from input devices are usually disallowed or heavily restricted.
In the sense of providing a highly controlled environment, sandboxing can be comparable tovirtualization. Sandboxing is frequently used to test unverified programs that may contain avirus or othermalicious code without allowing the software to harm the host device.[3]
A sandbox is implemented by executing the software in a restricted operating system environment, thus controlling the resources (e.g.file descriptors, memory, file system space, etc.) that a process may use.[4]
Examples of sandbox implementations include the following:
Android was one of the first mainstream operating system to implement full application sandboxing, built by assigning each application its own Linux user ID.[5]GrapheneOS hardens this app sandboxing to achieve an added layer of security and avoid potentially malicious apps and, unlike stock Android, it allows sandboxing of every app in the OS.[6]
Virtual machinesemulate a complete host computer, on which a conventional operating system may boot and run as on actual hardware. The guest operating system runs sandboxed in the sense that it does not function natively on the host and can only access host resources through the emulator.
Ajail: network-access restrictions, and a restricted file system namespace. Jails are most commonly used invirtual hosting.[11]
Rule-based execution gives users full control over what processes are started, spawned (by other applications), or allowed to inject code into other applications and have access to the network, by having the system assign access levels for users or programs according to a set of determined rules.[12] It also can control file/registry security (what programs can read and write to the file system/registry). In such an environment, viruses andTrojans have fewer opportunities for infecting a computer. TheSELinux andApparmor security frameworks are two such implementations forLinux.
Security researchers rely heavily on sandboxing technologies to analyse malware behavior. By creating an environment that mimics or replicates the targeted desktops, researchers can evaluate how malware infects and compromises a target host. Numerousmalware analysis services are based on the sandboxing technology.[13]
Google Native Client is a sandbox for running compiled C and C++ code in the browser efficiently and securely, independent of the user's operating system.[14]
Capability systems can be thought of as a fine-grained sandboxing mechanism, in which programs are given opaque tokens when spawned and have the ability to do specific things based on what tokens they hold. Capability-based implementations can work at various levels, from kernel to user-space. An example of capability-based user-level sandboxing involves HTML rendering in aWeb browser.
Software Fault Isolation (SFI),[16] allows running untrusted native code by sandboxing all store, read and jump assembly instructions to isolated segments of memory.
Some of the use cases for sandboxes include the following:
Online judge systems to test programs in programming contests.
New-generationpastebins allowing users to execute pastedcode snippets on the pastebin's server.