OLD | NEW |
1 # Linux Sandboxing | 1 # Linux Sandboxing |
2 | 2 |
3 Chromium uses a multiprocess model, which allows to give different privileges | 3 Chromium uses a multiprocess model, which allows to give different privileges |
4 and restrictions to different parts of the browser. For instance, we want | 4 and restrictions to different parts of the browser. For instance, we want |
5 renderers to run with a limited set of privileges since they process untrusted | 5 renderers to run with a limited set of privileges since they process untrusted |
6 input and are likely to be compromised. Renderers will use an IPC mechanism to | 6 input and are likely to be compromised. Renderers will use an IPC mechanism to |
7 request access to resource from a more privileged (browser process). | 7 request access to resource from a more privileged (browser process). |
8 You can find more about this general design | 8 You can find more about this general design |
9 [here](https://dev.chromium.org/developers/design-documents/sandbox). | 9 [here](https://dev.chromium.org/developers/design-documents/sandbox). |
10 | 10 |
(...skipping 23 matching lines...) Expand all Loading... |
34 using `open()` on `/proc` entries. | 34 using `open()` on `/proc` entries. |
35 | 35 |
36 Our layer-1 guarantees the integrity of processes running under different | 36 Our layer-1 guarantees the integrity of processes running under different |
37 `seccomp-bpf` policies. In addition, it allows restricting access to the | 37 `seccomp-bpf` policies. In addition, it allows restricting access to the |
38 network, something that is difficult to perform at the layer-2. | 38 network, something that is difficult to perform at the layer-2. |
39 | 39 |
40 ## Sandbox types summary | 40 ## Sandbox types summary |
41 | 41 |
42 | **Name** | **Layer and process** | **Linux flavors where available** | **State
** | | 42 | **Name** | **Layer and process** | **Linux flavors where available** | **State
** | |
43 |:---------|:----------------------|:----------------------------------|:-------
---| | 43 |:---------|:----------------------|:----------------------------------|:-------
---| |
44 | [Setuid sandbox](#The_setuid_sandbox.md) | Layer-1 in Zygote processes (render
ers, PPAPI, [NaCl](https://www.chromium.org/nativeclient), some utility processe
s) | Linux distributions and Chrome OS | Enabled by default (old kernels) and ma
intained | | 44 | [Setuid sandbox](#The-setuid-sandbox) | Layer-1 in Zygote processes (renderers
, PPAPI, [NaCl](https://www.chromium.org/nativeclient), some utility processes)
| Linux distributions and Chrome OS | Enabled by default (old kernels) and maint
ained | |
45 | [User namespaces sandbox](#User_namespaces_sandbox.md) | Modern alternative to
the setuid sandbox. Layer-1 in Zygote processes (renderers, PPAPI, [NaCl](https
://www.chromium.org/nativeclient), some utility processes) | Linux distributions
and Chrome OS (kernel >= 3.8) | Enabled by default (modern kernels) and activel
y developed | | 45 | [User namespaces sandbox](#User-namespaces-sandbox) | Modern alternative to th
e setuid sandbox. Layer-1 in Zygote processes (renderers, PPAPI, [NaCl](https://
www.chromium.org/nativeclient), some utility processes) | Linux distributions an
d Chrome OS (kernel >= 3.8) | Enabled by default (modern kernels) and actively d
eveloped | |
46 | [Seccomp-BPF](#The_seccomp-bpf_sandbox.md) | Layer-2 in some Zygote processes
(renderers, PPAPI, [NaCl](https://www.chromium.org/nativeclient)), Layer-1 + Lay
er-2 in GPU process | Linux kernel >= 3.5, Chrome OS and Ubuntu | Enabled by def
ault and actively developed | | 46 | [Seccomp-BPF](#The-sandbox-1) | Layer-2 in some Zygote processes (renderers, P
PAPI, [NaCl](https://www.chromium.org/nativeclient)), Layer-1 + Layer-2 in GPU p
rocess | Linux kernel >= 3.5, Chrome OS and Ubuntu | Enabled by default and acti
vely developed | |
47 | [Seccomp-legacy](#The_seccomp_sandbox.md) | Layer-2 in renderers | All
| [Deprecated](https://src.chromium.org/viewvc/chrome?re
vision=197301&view=revision) | | 47 | [Seccomp-legacy](#The-sandbox-2) | Layer-2 in renderers | All
| [Deprecated](https://src.chromium.org/viewvc/chrome?revision=19
7301&view=revision) | |
48 | [SELinux](#SELinux.md) | Layer-1 in Zygote processes (renderers, PPAPI) | SELi
nux distributions | [Deprecated](https://src.chromium.org/viewvc/chr
ome?revision=200838&view=revision) | | 48 | [SELinux](#SELinux) | Layer-1 in Zygote processes (renderers, PPAPI) | SELinux
distributions | [Deprecated](https://src.chromium.org/viewvc/chrome
?revision=200838&view=revision) | |
49 | AppArmor | Outer layer-1 in Zygote processes (renderers, PPAPI) | Not used
| Deprecated | | 49 | AppArmor | Outer layer-1 in Zygote processes (renderers, PPAPI) | Not used
| Deprecated | |
50 | 50 |
51 ## The setuid sandbox | 51 ## The setuid sandbox |
52 | 52 |
53 Also called SUID sandbox, our main layer-1 sandbox. | 53 Also called SUID sandbox, our main layer-1 sandbox. |
54 | 54 |
55 A SUID binary that will create a new network and PID namespace, as well as | 55 A SUID binary that will create a new network and PID namespace, as well as |
56 `chroot()` the process to an empty directory on request. | 56 `chroot()` the process to an empty directory on request. |
57 | 57 |
58 To disable it, use `--disable-setuid-sandbox`. (Do not remove the binary or | 58 To disable it, use `--disable-setuid-sandbox`. (Do not remove the binary or |
(...skipping 83 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
142 | 142 |
143 * [this page](linux_suid_sandbox_development.md) for the `setuid` sandbox | 143 * [this page](linux_suid_sandbox_development.md) for the `setuid` sandbox |
144 * [this page](https://www.chromium.org/for-testers/bug-reporting-guidelines/ha
nging-tabs) | 144 * [this page](https://www.chromium.org/for-testers/bug-reporting-guidelines/ha
nging-tabs) |
145 for triggering crashes | 145 for triggering crashes |
146 * [this page for debugging tricks](linux_debugging.md) | 146 * [this page for debugging tricks](linux_debugging.md) |
147 | 147 |
148 ## See also | 148 ## See also |
149 | 149 |
150 * [LinuxSandboxIPC](linux_sandbox_ipc.md) | 150 * [LinuxSandboxIPC](linux_sandbox_ipc.md) |
151 * [How Chromium's Linux sandbox affects Native Client](https://chromium.google
source.com/native_client/src/native_client.git/+/master/docs/linux_outer_sandbox
.md) | 151 * [How Chromium's Linux sandbox affects Native Client](https://chromium.google
source.com/native_client/src/native_client.git/+/master/docs/linux_outer_sandbox
.md) |
OLD | NEW |