Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Sandbox (computer security)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Software security mechanism}} {{About|the computer security mechanism|the software testing environment|Sandbox (software development)}} <!--Please, do NOT edit this article for testing purposes as this is not Wikipedia's testing sandbox; that is located at "Wikipedia:Sandbox", without the quotes. Thank you. --> In [[computer security]], a '''sandbox''' is a security mechanism for separating running programs, usually in an effort to mitigate system failures and/or software [[Vulnerability (computing)|vulnerabilities]] from spreading. The [[sandpit |sandbox]] 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.<ref>{{Cite web |date=2023-09-13 |title=What Is a Sandbox Environment? - Meaning {{!}} Proofpoint UK |url=https://www.proofpoint.com/uk/threat-reference/sandbox |access-date=2024-05-28 |website=Proofpoint |language=en-gb}}</ref> It is often used to kill 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]].<ref>{{cite web |url=http://www.usenix.org/publications/library/proceedings/sec96/full_papers/goldberg/goldberg.pdf |title=A Secure Environment for Untrusted Helper Applications (Confining the Wily Hacker)|first1=Ian |last1=Goldberg |first2=David |last2=Wagner |first3=Randi |last3=Thomas |first4=Eric |last4=Brewer |name-list-style=amp |work=Proceedings of the Sixth USENIX UNIX Security Symposium|year=1996|access-date=25 October 2011}}</ref> A sandbox typically provides a tightly controlled set of resources for guest programs to run in, such as storage and memory [[scratch 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, sandboxes may be seen as a specific example of [[virtualization]]. Sandboxing is frequently used to test unverified programs that may contain a [[computer virus|virus]] or other [[Malware|malicious code]] without allowing the software to harm the host device.<ref>{{cite web |last=Geier |first=Eric |url=http://www.techhive.com/article/247416/how_to_keep_your_pc_safe_with_sandboxing.html |title=How to Keep Your PC Safe With Sandboxing |publisher=TechHive |date=2012-01-16 |access-date=2014-07-03 |archive-date=2014-07-12 |archive-url=https://web.archive.org/web/20140712130329/http://www.techhive.com/article/247416/how_to_keep_your_pc_safe_with_sandboxing.html |url-status=dead }}</ref> == Implementations == A sandbox is implemented by executing the software in a restricted operating system environment, thus controlling the resources (e.g. [[file descriptor]]s, memory, file system space, etc.) that a process may use.<ref>{{cite web |url=http://www.dmst.aueb.gr/dds/pubs/conf/2001-Freenix-Sandbox/html/sandbox32final.pdf |title=Sandboxing Applications|year=2001|access-date=7 May 2013}}</ref> Examples of sandbox implementations include the following: * [[Linux]] application sandboxing, built on [[Seccomp]], [[cgroups]] and [[Linux namespaces]]. Notably used by [[Systemd]], [[Google Chrome]], [[Firefox]], [[Firejail]]. * [[Android_(operating_system)|Android]] was the first mainstream operating system to implement full application sandboxing, built by assigning each application its own Linux user ID.<ref>{{Cite web|title=Application Sandbox - Android Open Source Project|url=https://source.android.com/security/app-sandbox|access-date=2021-04-02}}</ref> * [[Apple Inc.|Apple]] App Sandbox is required for apps distributed through Apple's [[Mac App Store]] and [[iOS]]/[[iPadOS]] [[App Store (iOS/iPadOS)|App Store]], and recommended for other signed apps.<ref>{{Cite web|title=About App Sandbox|url=https://developer.apple.com/library/archive/documentation/Security/Conceptual/AppSandboxDesignGuide/AboutAppSandbox/AboutAppSandbox.html|access-date=2020-12-09|website=developer.apple.com}}</ref><ref>{{Cite web|title=Security of runtime process in iOS and iPadOS|url=https://support.apple.com/guide/security/security-of-runtime-process-sec15bfe098e/web|access-date=2021-04-04|website=Apple Support|language=en}}</ref> * [[Windows Vista]] and later editions include a "low" mode process running, known as [[User Account Control|"User Account Control" (UAC)]], which only allows writing in specific directories and registry keys. [[Windows 10 Pro]], from version 1903, provides a feature known as Windows Sandbox.<ref>{{Cite web|url=https://techcommunity.microsoft.com/t5/windows-kernel-internals/windows-sandbox/ba-p/301849|title=Windows Sandbox|date=2018-12-18|access-date=2010-01-07}}</ref> * [[Google]] Sandboxed API.<ref>{{Citation|title=google/sandboxed-api|date=2020-12-08|url=https://github.com/google/sandboxed-api|publisher=Google|access-date=2020-12-09}}</ref> * [[Virtual machine]]s [[emulator|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 natively on the host and can only access host resources through the emulator. * A [[Operating-system-level virtualization|jail]]: network-access restrictions, and a restricted file system namespace. Jails are most commonly used in [[virtual hosting]].<ref>{{cite web |url=https://enterprise.comodo.com/security-solutions/endpoint-protection/auto-sandboxing.php |title=Auto-Sandboxing secure system |access-date=2015-01-30}}</ref> * 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.<ref>{{cite web | url=http://oreilly.com/catalog/csb/chapter/ch03.html | title=Computer System Security and Access Controls | year=1991 | access-date=17 May 2013 | url-status=dead | archive-url=https://web.archive.org/web/20130528005443/http://oreilly.com/catalog/csb/chapter/ch03.html | archive-date=28 May 2013 }}</ref> It also can control file/registry security (what programs can read and write to the file system/registry). In such an environment, viruses and [[Trojan virus|Trojans]] have fewer opportunities for infecting a computer. The [[SELinux]] and [[Apparmor]] security frameworks are two such implementations for [[Linux kernel|Linux]]. * 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.<ref>{{cite web |url=http://static.googleusercontent.com/media/research.google.com/en//pubs/archive/34913.pdf |title=Native Client Sandbox – Untrusted x86 Native Code |access-date=2015-01-03}}</ref> * [[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.<ref>[https://developer.chrome.com/native-client Welcome to Native Client]</ref> * [[Capability-based security|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]]. * [[seccomp|Secure Computing Mode (seccomp)]] strict mode, seccomp only allows the <code>write()</code>, <code>read()</code>, <code>exit()</code>, and <code>sigreturn()</code> system calls. * [[HTML5]] has a "sandbox" attribute for use with [[iframes]].<ref>{{cite web |author1=Internet Explorer Team Blog |title=Defense in Depth: Locking Down Mash-Ups with HTML5 Sandbox |url=https://blogs.msdn.microsoft.com/ie/2011/07/14/defense-in-depth-locking-down-mash-ups-with-html5-sandbox/ |website=IEBlog|date=14 July 2011 }}</ref> * [[Java virtual machine]]s 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),<ref>{{Cite web|url=https://courses.cs.washington.edu/courses/cse551/15sp/papers/sfi-sosp93.pdf|title=Efficient Software-Based Fault Isolation|last=Wahbe|first=Robert|date=1993}}</ref> 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-generation [[pastebins]] allowing users to execute pasted [[code snippets]] on the pastebin's server. == See also == * [[FreeBSD jail]] * [[Sandboxie]] * [[seccomp]] * [[Test bench]] * [[Tor (anonymity network)]] == References == {{Reflist|30em}} == External links == * [https://www.cr0.org/paper/jt-ce-sid_linux.pdf Security In-Depth for Linux Software: Preventing and Mitigating Security Bugs] * [https://www.chromium.org/developers/design-documents/sandbox Sandbox{{snd}} The Chromium Projects] * [https://www.freebsd.org/cgi/man.cgi?query=capsicum&sektion=4 FreeBSD capsicum(4) man page]{{snd}} a lightweight OS capability and sandbox framework * [https://man.openbsd.org/pledge.2 OpenBSD pledge(2) man page]{{snd}} a way to restrict system operations * [https://sarkarynaukary.in/google-chrome/praju/2021/en/ Sandbox testing importance] {{Webarchive|url=https://web.archive.org/web/20210426092153/https://sarkarynaukary.in/google-chrome/praju/2021/en/ |date=2021-04-26 }}{sandbox} Importance of sandbox in zero day flaw [[Category:Operating system security]] [[Category:Virtualization]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:About
(
edit
)
Template:Citation
(
edit
)
Template:Cite web
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Snd
(
edit
)
Template:Webarchive
(
edit
)