Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Sandbox #546

Open
1 task
anitsh opened this issue Jun 7, 2021 · 0 comments
Open
1 task

Sandbox #546

anitsh opened this issue Jun 7, 2021 · 0 comments
Labels
basics Basic concepts, fundaments principles, could be about anything. cybersec Cybersecurity done Task completed

Comments

@anitsh
Copy link
Owner

anitsh commented Jun 7, 2021

A sandbox is a security mechanism for separating running programs, usually in an effort to mitigate system failures and/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.

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 virus or other malicious code, without allowing the software to harm the host device.

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.

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.
  • 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. 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 for infecting a computer. The SELinux and Apparmor security frameworks are two such implementations for Linux.
  • 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.
  • Android was the first mainstream operating system to implement full application sandboxing, built by assigning each application its own Linux user ID.
  • Apple App Sandbox is required for apps distributed through Apple's Mac App Store and iOS/iPadOS App Store, and recommended for other signed apps.
  • A jail: network-access restrictions, and a restricted file system namespace. Jails are most commonly used in virtual hosting.
  • 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.
  • 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
  • HTML5 has a "sandbox" attribute for use with iframes.
  • 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.
  • Windows Sandbox, available since Windows 10 1903 (not available in Windows 10 Home).
  • Software Fault Isolation (SFI), allows running untrusted native code by sandboxing all store, read and jump assembly instructions to isolated segments of memory.

Resource

@anitsh anitsh added done Task completed cybersec Cybersecurity basics Basic concepts, fundaments principles, could be about anything. labels Jun 7, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
basics Basic concepts, fundaments principles, could be about anything. cybersec Cybersecurity done Task completed
Projects
None yet
Development

No branches or pull requests

1 participant