Sandbox (computer security)
From Wikipedia, the free encyclopedia, as archived copy
Jump to navigationJump to search
In computer security, a "sandbox" is a security mechanism for separating running programs, usually in an effort to mitigate system failures or software vulnerabilities from spreading. It is often used to execute untested or untrusted programs or code, possibly from unverified or untrusted third parties, suppliers, users or websites, without risking harm to the host machine or operating system.[1] A sandbox typically provides a tightly controlled set of resources for guest programs to run in, such as scratch space on disk and memory. 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, sandboxes may be seen as a specific example of virtualization. Sandboxing is frequently used to test unverified programs that may contain a virus or other malicious code, without allowing the software to harm the host device.[2]
Implementations
A sandbox is implemented by executing the software in a restricted operating system environment, thus controlling the resources (for example, file descriptors, memory, file system space, etc.) that a process may use.[3]
Examples of sandbox implementations include the following:
- Google Sandboxed API[4]
- A jail: network-access restrictions, and a restricted file system namespace. Jails are most commonly used in virtual hosting.[5]
- 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 net, by having the system assign access levels for users or programs according to a set of determined rules.[6] It also can control file/registry security (what programs can read and write to the file system/registry). In such an environment, viruses and Trojans have fewer opportunities of infecting a computer. The SELinux and Apparmor security frameworks are two such implementations for Linux.
- Virtual machines emulate 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 negatively[clarification needed] on the host and can only access host resources through the emulator.
- Sandboxing on native hosts: 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. Numerous malware analysis services are based on the sandboxing technology.[7]
- 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.[8]
- 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 a Web browser.
- Secure Computing Mode (seccomp) is a sandbox built in the Linux kernel. When activated in strict mode, seccomp only allows the
write() , read() , exit() , and sigreturn() system calls.
- HTML5 has a "sandbox" attribute for use with iframes.[9]
- Java virtual machines include a sandbox to restrict the actions of untrusted code, such as a Java applet.
- The .NET Common Language Runtime provides Code Access Security to enforce restrictions on untrusted code.
- Software Fault Isolation (SFI),[10] allows running untrusted native code by sandboxing all store, read and jump assembly instructions to isolated segments of memory.
- Windows Vista and later editions include a "low" mode process running, known as "User Account Control" (UAC), which only allows writing in a specific directory and registry keys.
Some of the use cases for sandboxes include the following:
See also
Sandbox (software development)
Jump to navigationJump to search
For the Wikipedia feature, where newcomers can experiment with editing, see Wikipedia:Sandbox.
Sandboxing protects "live" servers and their data, vetted source code distributions, and other collections of code, data and/or content, proprietary or public, from changes that could be damaging (regardless of the intent of the author of those changes) to a mission-critical system or which could simply be difficult to revert. Sandboxes replicate at least the minimal functionality needed to accurately test the programs or other code under development (e.g. usage of the same environment variables as, or access to an identical database to that used by, the stable prior implementation intended to be modified; there are many other possibilities, as the specific functionality needs vary widely with the nature of the code and the application[s] for which it is intended).A sandbox is a testing environment that isolates untested code changes and outright experimentation from the production environment or repository,[1] in the context of software development including Web development and revision control.
The concept of sandbox (sometimes also called a working directory, a test server or development server) is typically built into revision control software such as CVS and Subversion (SVN), in which developers "check out" a copy of the source code tree, or a branch thereof, to examine and work on. Only after the developer has (hopefully) fully tested the code changes in their own sandbox, the changes would be checked back into and merged with the repository and thereby made available to other developers or end users of the software.[2]
By further analogy, the term "sandbox" can also be applied in computing and networking to other temporary or indefinite isolation areas, such as security sandboxes and search engine sandboxes (both of which have highly specific meanings), that prevent incoming data from affecting a "live" system (or aspects thereof) unless/until defined requirements or criteria have been met.
In web services
The term sandbox is commonly used for the development of Web services to refer to a mirrored production environment for use by external developers. Typically, a third-party developer will develop and create an application that will use a web service from the sandbox, which is used to allow a third-party team to validate their code before migrating it to the production environment. Microsoft,[3] Google,[citation needed] Amazon.com,[4] Salesforce.com,[5] PayPal,[6] eBay[7] and Yahoo,[8] among others, provide such services.
In wikis
Wikis also typically employ a shared sandbox model of testing, though it is intended principally for learning and outright experimentation with features rather than for testing of alterations to existing content (the wiki analog of source code). An edit preview mode is usually used instead to test specific changes made to the texts or layout of wiki pages.
See also
Source from: https://en.wikipedia.org/wiki/Sandbox_(computer_security) |
|