From daa3defac0cab7e2ce5aa5b4f3192a4071953660 Mon Sep 17 00:00:00 2001 From: Wiktor Garbacz Date: Tue, 3 Sep 2019 03:01:04 -0700 Subject: [PATCH] Internal change PiperOrigin-RevId: 266889781 Change-Id: Ibea87a7bb5fafb50ae3d09f7b0df876beecaf087 --- sandboxed_api/docs/examples.md | 37 -- sandboxed_api/docs/host-code.md | 76 ---- sandboxed_api/docs/howitworks.md | 29 -- sandboxed_api/docs/images/playing-in-sand.png | Bin 107237 -> 0 bytes sandboxed_api/docs/images/sapi-overview.png | Bin 41423 -> 0 bytes sandboxed_api/docs/library.md | 123 ------ sandboxed_api/docs/sandbox-overview.md | 52 --- sandboxed_api/docs/transactions.md | 133 ------- sandboxed_api/docs/variables.md | 69 ---- sandboxed_api/sandbox2/docs/examples.md | 119 ------ sandboxed_api/sandbox2/docs/faq.md | 123 ------ .../sandbox2/docs/getting-started.md | 356 ------------------ sandboxed_api/sandbox2/docs/howitworks.md | 57 --- 13 files changed, 1174 deletions(-) delete mode 100644 sandboxed_api/docs/examples.md delete mode 100644 sandboxed_api/docs/host-code.md delete mode 100644 sandboxed_api/docs/howitworks.md delete mode 100644 sandboxed_api/docs/images/playing-in-sand.png delete mode 100644 sandboxed_api/docs/images/sapi-overview.png delete mode 100644 sandboxed_api/docs/library.md delete mode 100644 sandboxed_api/docs/sandbox-overview.md delete mode 100644 sandboxed_api/docs/transactions.md delete mode 100644 sandboxed_api/docs/variables.md delete mode 100644 sandboxed_api/sandbox2/docs/examples.md delete mode 100644 sandboxed_api/sandbox2/docs/faq.md delete mode 100644 sandboxed_api/sandbox2/docs/getting-started.md delete mode 100644 sandboxed_api/sandbox2/docs/howitworks.md diff --git a/sandboxed_api/docs/examples.md b/sandboxed_api/docs/examples.md deleted file mode 100644 index 6b00100..0000000 --- a/sandboxed_api/docs/examples.md +++ /dev/null @@ -1,37 +0,0 @@ -# Examples - -We have prepared some examples, which might help you to implement your first -Sandboxed API library. - - -## Sum - -A demo library implementing a few [C functions](../examples/sum/lib/sum.c) and a -single [C++ function](../examples/sum/lib/sum_cpp.cc). -It uses ProtoBuffs to exchange data between host code and the SAPI Library. - -* The sandbox definition can be found in the - [sandbox.h](../examples/sum/lib/sandbox.h) file. -* The (automatically generated) function annotation file (a file providing - prototypes of sandboxed functions) can be found in - `bazel-out/genfiles/sandboxed_api/examples/sum/lib/sum-sapi.sapi.h` - after a Bazel build. -* The actual execution logic (a.k.a. host code) making use of the exported - sandboxed procedures can be found in [main_sum.cc](../examples/sum/main_sum.cc). - - -## zlib - -This is a demo implementation (functional, but currently not used in production) -for the zlib library exporting some of its functions, and making them available -to the [host code](../examples/zlib/main_zlib.cc). - -The demonstrated functionality of the host code is decoding of zlib streams -from stdin to stdout. - -This SAPI library doesn't use the `sandbox.h` file, as it uses the default -Sandbox2 policy, and an embedded SAPI library, so there is no need to provide -`sapi::Sandbox::GetLibPath()` nor `sapi::Sandbox::GetPolicy()` methods. - -The zlib SAPI can be found in [//sapi_sandbox/examples/zlib](../examples/zlib), -along with its [host code](../examples/zlib/main_zlib.cc). diff --git a/sandboxed_api/docs/host-code.md b/sandboxed_api/docs/host-code.md deleted file mode 100644 index 4023839..0000000 --- a/sandboxed_api/docs/host-code.md +++ /dev/null @@ -1,76 +0,0 @@ -# Host Code - -## Description - -The *host code* is the actual code making use of the functionality offered by -its contained/isolated/sandboxed counterpart, i.e. a [SAPI Library](library.md). - -Such code implements the logic, that any program making use of a typical library -would: it calls functions exported by said library, passing and receiving data -to/from it. - -Given that the SAPI Library lives in a separate and contained/sandboxed process, -calling such functions directly is not possible. Therefore the SAPI project -provides tools which create an API object that proxies accesses to sandboxed -libraries. - -More on that can be found under [library](library.md). - - -## Variables - -In order to make sure that host code can access variables and memory blocks in -a remote process, SAPI provides a comprehensive set of C++ classes. These try to -make the implementation of the main logic code simpler. To do this you will -sometimes have to use those objects instead of typical data types known from C. - -For example, instead of an array of three `int`'s, you will instead have to use -and pass to sandboxed functions the following object -```cpp - int arr[3] = {1, 2, 3}; - sapi::v::Array sarr(arr, ABSL_ARRAYSIZE(arr)); -``` - -[Read more](variables.md) on the internal data representation used in host -code. - - -## Transactions - -When you use a typical library of functions, you do not have to worry about the -fact that a call to a library might fail at runtime, as the linker ensures all -necessary functions are available after compilation. - -Unfortunately with the SAPI, the sandboxed library lives in a separate process, -therefore we need to check for all kinds of problems related to passing such -calls via our RPC layer. - -Users of SAPI need to check - in addition to regular errors returned by the -native API of a library - for errors returned by the RPC layer. Sometimes these -errors might not be interesting, for example when doing bulk processing and you -would just restart the sandbox. - -Handling these errors would mean that each call to a SAPI library is followed -by an additional check to RPC layer of SAPI. To make handling of such -cases easier we have implemented the `::sapi::Transaction` class. - -This module makes sure that all function calls to the sandboxed library were -completed without any RPC-level problems, or it will return relevant error. - -Read more about this module under [Transactions](transactions.md). - - -## Sandbox restarts - -Many sandboxees handle sensitive user input. This data might be at risk when the -sandboxee was corrupted at some point and stores data between runs - imagine -an Imagemagick sandbox that starts sending out pictures of the previous run. To -avoid this we need to stop reusing sandboxes. This can be achieved by restarting -the sandboxee with `::sapi::Sandbox::Restart()` or -`::sapi::Transaction::Restart()` when using transactions. - -**Restarting the sandboxee will invalidate any references to the sandboxee!** -This means passed file descriptors/allocated memory will not exist anymore. - -Note: Restarting the sandboxee takes some time, about *75-80 ms* on modern -machines (more if network namespaces are used). diff --git a/sandboxed_api/docs/howitworks.md b/sandboxed_api/docs/howitworks.md deleted file mode 100644 index b34a96c..0000000 --- a/sandboxed_api/docs/howitworks.md +++ /dev/null @@ -1,29 +0,0 @@ -# How it works - -## Overview - -The Sandboxed API project allows to run code of libraries in a sandboxed -environment, isolated with the help of [Sandbox2](../sandbox2/README.md). - -Our goal is to provide developers with tools to prepare such libraries for the -sandboxing process, as well as necessary APIs to communicate (i.e. make function -calls and receive results) with such library. - -All calls to the sandboxed library are passed over our custom RPC implementation -to a sandboxed process, and the results are passed back to the caller. - -![SAPI Diagram](images/sapi-overview.png) - -The project also provides [primitives](variables.md) for manual and -automatic (based on custom pointer attributes) memory synchronization (arrays, -structures) between the SAPI Libraries and the host code. - -A [high-level Transactions API](transactions.md) provides monitoring of SAPI -Libraries, and restarts them if they fail (e.g, due to security violations, -crashes or resource exhaustion). - - -## Getting started - -Read our [Get Started](getting-started.md) page to set up your first Sandboxed -API project. diff --git a/sandboxed_api/docs/images/playing-in-sand.png b/sandboxed_api/docs/images/playing-in-sand.png deleted file mode 100644 index 38a568dc2a315dd72c64c56e457f4d72a341503f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 107237 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 -instead of `T`. In the event that the library function invocation fails (e.g. -because of a sandbox violation), the return value will contain details about -the error that occurred. - -In order to deal with those exceptional situations, the high-level -`::sapi::Transaction` module can be used. - - -### `::sapi::Transaction` - -With SAPI we are trying to isolate the [host code](host-code.md) from such -problems in the sandboxed library, giving ability to the caller to restart or -abort the problematic data processing request. -The transaction class goes one step further and automatically repeats processes -that have failed. - -The usual pattern when dealing with libraries looks like this: - -```cpp - LibInit(); - while (data = NextDataToProcess()) { - result += LibProcessData(data); - } - LibClose(); -``` - -This translates to this code when using SAPI: - -```cpp -::sapi::Status Init(::sapi::Sandbox* sandbox) { - LibraryAPI lib(sandbox); - SAPI_RETURN_IF_ERROR(lib.LibInit()); - return ::sapi::OkStatus(); -} - -::sapi::Status Finish(::sapi::Sandbox *sandbox) { - // ... -} - -::sapi::Status handle_data(::sapi::Sandbox *sandbox, Data data_to_process, - Result *out) { - LibraryAPI lib(sandbox); - SAPI_ASSIGN_OR_RETURN(*out, lib.LibProcessData(data_to_process)); - return ::sapi::OkStatus(); -} - -void handle() { - // ... - ::sapi::BasicTransaction transaction(Init, Finish); - while (data = NextDataToProcess()) { - ::sandbox2::Result result; - transaction.Run(handle_data, data, &result); - // ... - } - // ... -} -``` - -The transaction class makes sure to reinitialize the library in the case that an -error occures during the `handle_data` invovcation - more on this later. - -SAPI transaction can be used in two different ways, depending on your -requirements: - -* Implementing a transaction class inheriting from `::sapi::Transaction`, -* Using function pointers passed to `::sapi::BasicTransaction`, see above. - -Both methods allow you to specify the following three functions: - -* `::sapi::Transaction::Init()`, which will be called **only once** during each - transaction to the sandboxed library (and, also, during each restart of the - transaction). It's similar to calling a `LibInit()` function from a typical - C/C++ library. -* `::sapi::Transaction::Main()`, which will be called for each call to - `::sapi::Transaction::Run()`. -* `::sapi::Transaction::Finish()`, which will be called during the - `::sapi::Transaction` object destruction, resembling the call to a typical - `LibClose()` function call. - -### Transaction Restarts - -If any kind of problem arises during execution of the -`Init()`/`Main()`/`Finish()` methods, e.g, they return a failure return code due -to library error, or sandboxed process crash, or a security sandbox violation, -the transaction will be restarted (by default, `kDefaultRetryCnt` times, see -[transaction.h](../transaction.h)). - -During such restarts the `Init()`/`Main()` flow is observed (i.e, the `Init()` -function is called again), and if repeated calls to the -`::sapi::Transaction::Run()` method return errors, then the whole method -returns an error to its caller. - -### Sandbox/RPC Error handling - -Although the automatically generated [SAPI library -interface](library.md#Interface-Generation) tries to be as similar to the -original library function prototype we somehow need to signal Sandbox/RPC -errors. Instead of providing the return value directly, SAPI makes use of -`::sapi::StatusOr` for return types `T` != `void` or `::sapi::Status` for -functions returning `void`. - -Example of how to use the API (from the sum example): - -```cpp -::sapi::Status SumTransaction::Main() { - SumApi f(GetSandbox()); - // ::sapi::StatusOr sum(int a, int b) - SAPI_ASSIGN_OR_RETURN(int v, f.sum(1000, 337)); - ... - // ::sapi::Status sums(sapi::v::Ptr* params) - SumParams params; - params.mutable_data()->a = 1111; - params.mutable_data()->b = 222; - params.mutable_data()->ret = 0; - SAPI_RETURN_IF_ERROR(f.sums(params.PtrBoth())); - ... - int *ssaddr; - SAPI_RETURN_IF_ERROR(GetSandbox()->Symbol( - "sumsymbol", reinterpret_cast(&ssaddr))); - ::sapi::v::Int sumsymbol; - sumsymbol.SetRemote(ssaddr); - SAPI_RETURN_IF_ERROR(GetSandbox()->TransferFromSandboxee(&sumsymbol)); - ... - return ::sapi::OkStatus(); -} -``` - diff --git a/sandboxed_api/docs/variables.md b/sandboxed_api/docs/variables.md deleted file mode 100644 index 954a370..0000000 --- a/sandboxed_api/docs/variables.md +++ /dev/null @@ -1,69 +0,0 @@ -# Variables - -Typically, you'll be able to use native C-types to deal with the SAPI Library, -but sometimes some special types will be required. This mainly happens when -passing pointers to simple types, and pointers to memory blocks (structures, -arrays). Because you operate on local process memory (of the host code), when -calling a function taking a pointer, it must be converted into a corresponding -pointer inside the sandboxed process (SAPI Library) memory. - -Take a look at the [SAPI directory](..). The `var_*.h` files provide classes -and templates representing various types of data, e.g. `::sapi::v::UChar` -represents well-known `unsigned char` while `::sapi::v::Array` represents -an array of integers (`int[]`). - - -## Pointers - -When creating your host code, you'll be generally using functions exported by -an auto-generated SAPI interface header file from your SAPI Library. Most of -them will take simple types (or typedef'd types), but when a pointer is needed, -you need to wrap it with the `::sapi::v::Ptr` template class. - -Most types that you will use, provide the following methods: - -* `::PtrNone()`: this pointer, when passed to the SAPI Library function, - doesn't synchronize the underlying memory between the host code process and - the SAPI Library process. -* `::PtrBefore()`: when passed to the SAPI Library function, will synchronize - memory of the object it points to, before the call takes place. This means, - that the local memory of the pointed variable will be transferred to the - SAPI Library process before the call is initiated. -* `::PtrAfter()`: this pointer will synchronize memory of the object it points - to, after the call has taken place. This means, that the remote memory of a - pointed variable will be transferred to the host code process' memory, after - the call has been completed. -* `::PtrBoth()`: combines the functionality of both `::PtrBefore()` and - `::PtrAfter()` - - -## Structures - -When a pointer to a structure is used inside a call to a SAPI Library, that -structure needs to created with the `::sapi::v::Struct` template. You can use -the `PtrNone()`/`Before()`/`After()`/`Both()` methods of this template to obtain -a relevant `::sapi::v::Ptr` object that can be used in SAPI Library function -calls. - - -## Arrays - -The `::sapi::v::Array` template allow to wrap both existing arrays of elements, -as well as dynamically create one for you (please take a look at its -constructor to decide which one you would like to use). - -The use of pointers is analogous to [Structures](#structures). - - -## Examples - -Our canonical [sum library](../examples/sum/main_sum.cc) demonstrates use of -pointers to call sandboxed functions in its corresponding SAPI Library. - -You might also want to take a look at the [Examples](examples.md) page to -familiarize yourself with other working examples of libraries sandboxed -with SAPI. - -* [sum library](../examples/sum/main_sum.cc) -* [stringop](../examples/stringop/main_stringop.cc) -* [zlib](../examples/zlib/main_zlib.cc) diff --git a/sandboxed_api/sandbox2/docs/examples.md b/sandboxed_api/sandbox2/docs/examples.md deleted file mode 100644 index 237b781..0000000 --- a/sandboxed_api/sandbox2/docs/examples.md +++ /dev/null @@ -1,119 +0,0 @@ -# Examples - -## Overview - -We have prepared a few examples to demonstrate how to use sandbox2 depending on -your situation and how to write policies. - -You can find them in [//sandboxed_api/sandbox2/examples](../examples), read on -for detailed explanations. - -## CRC4 - -The CRC4 example is an intentionally buggy calculation of a CRC4 checksum, it -demonstrates how to sandbox another program and how to communicate with it. - -* [crc4bin.cc](../examples/crc4/crc4bin.cc): is the program we want to sandbox - (the *sandboxee*) -* [crc4sandbox.cc](../examples/crc4/crc4sandbox.cc): is the sandbox program that - will run it (the *executor*). - -How it works: -1. The *executor* starts the *sandboxee* from its file path using - `::sandbox2::GetDataDependencyFilePath()`. -2. The *executor* sends input to the *sandboxee* over the communication channel - `Comms` using `SendBytes()`. -3. The *sandboxee* calculates the CRC4 and sends its replies back to the - *executor* over the communication channel `Comms` which receives it with - `RecvUint32()`. - -If the program makes any other syscall other than communicating (`read()` and -`write()`), it is killed for policy violation. - - -## static - -The static example demonstrates how to sandbox a statically linked binary, such -as a third-party binary for which you do not have the source, so is not aware -that it will be sandboxed. - -* [static_bin.cc](../examples/static/static_bin.cc): the *sandboxee* is a - static C binary that converts ASCII text from standard input to uppercase. -* [static_sandbox.cc](../examples/static/static_sandbox.cc): the *executor* - with its policy, limits and using a file descriptor for *sandboxee* input. - -How it works: - -1. The *executor* starts the *sandboxee* from its file path using - `GetDataDependencyFilepath`, just like for **CRC4**. -2. It sets up limits, opens a file descriptor on `/proc/version` and marks it - to be mapped in the *sandboxee* with `MapFd`. -3. The policy allows some syscalls (`open`) to return an error (`ENOENT`), - rather than being killed for policy violation. This can be useful when - sandboxing a third party program where we cannot modify which syscalls are - made, but we can make them fail gracefully. - -## tool - -The tool example is both a tool to develop your own policies and experiment with -**sandbox2** APIs as well a demonstration of its features. - -* [sandbox2tool.cc](..examples/tool/sandbox2tool.cc): the *executor* - demonstrating - * how to run another binary sandboxed, - * how to set up filesystem checks, and - * how the *executor* can run the *sandboxee* asynchronously to read its - output progressively - -Try it yourself: - -```bash -bazel run //sandboxed_api/sandbox2/examples/tool:sandbox2tool -- \ - /bin/cat /etc/hostname -``` - -Flags: - -* `--sandbox2tool_keep_env` to keep current environment variables -* `--sandbox2tool_redirect_fd1` to receive the *sandboxee* STDOUT_FILENO (1) - and output it locally -* `--sandbox2tool_cpu_timeout` to set CPU timeout in seconds -* `--sandbox2tool_walltime_timeout` to set wall-time timeout in seconds -* `--sandbox2tool_file_size_creation_limit` to set the maximum size of created - files -* `--sandbox2tool_cwd` to set sandbox current working directory - -## custom_fork - -The custom_fork example demonstrates how to create a sandbox, which will -initialize the binary, and then wait for `fork()` requests coming from the -parent executor. - -This mode offers potentially increased performance with regard to other types of -sandboxing, as here, creating new instances of sandboxees doesn't require -executing new binaries, just fork()-ing the existing ones - -* [custom_fork_bin.cc](../examples/custom_fork): is the custom fork-server, - receiving requests to `fork()` (via `Client::WaitAndFork`) in order to spawn - new sandboxees -* [custom_fork_sandbox.cc](../examples/custom_fork/custom_fork_sandbox.cc): is - the executor, which starts a custom fork server. Then it sends requests to it - (via new executors) to spawn (via `fork()`) new sandboxees. - -## network - -Enabling the network namespace prevents the sandboxed process from connecting to -the outside world. This example demonstrates how to deal with this problem. - -Namespaces are enabled when either -`::sandbox2::PolicyBuilder::EnableNamespaces()` is called, or some other -function that enables namespaces like `AddFile()`. To deal with this problem, -we can initialize a connection inside the executor and pass the socket file -descriptor via `::sandbox2::Comms::SendFD()`. The sandboxee receives the socket -by using `::sandbox2::Comms::RecvFD()` and then it can use this socket to -exchange the data as usual. - -* [network_bin.cc](examples/network/network_bin.cc): is the program we want to - sandbox (the sandboxee). -* [network_sandbox.cc](examples/network/network_sandbox.cc): is the sandbox - program that will run it (the executor). diff --git a/sandboxed_api/sandbox2/docs/faq.md b/sandboxed_api/sandbox2/docs/faq.md deleted file mode 100644 index 188b699..0000000 --- a/sandboxed_api/sandbox2/docs/faq.md +++ /dev/null @@ -1,123 +0,0 @@ -# FAQ - -## Can I use threads? - -Yes, threads are supported in sandbox2. - -### All threads must be sandboxed - -Because of the way Linux works, the seccomp-bpf policy is applied to the current -thread only: this means other existing threads do not get the policy, but future -threads will inherit the policy. - -If you are using sandbox2 in the -[default mode](getstarted.md#a-Execute-a-binary-with-sandboxing-already-enabled) -where sandboxing is enabled before `execve()`, all threads will inherit the -policy, and there is no problem. This is the preferred mode of sandboxing. - -If you want to use the -[second mode](getstarted.md#b-Tell-the-executor-when-to-be-sandboxed) where the -executor has -`set_enable_sandbox_before_exec(false)` and the sandboxee tells the executor -when it wants to be sandboxed with `SandboxMeHere()`, then the filter still -needs to be applied to all threads. Otherwise, there is a risk of a sandbox -escape: malicious code could migrate from a sandboxed thread to an unsandboxed -thread. - -The Linux kernel introduced the TSYNC flag in version 3.17, which allows -applying a policy to all threads. Before this flag, it was only possible to -apply the policy on a thread-by-thread basis. - -If sandbox2 detects that it is running on a kernel without TSYNC-support and you -call `SandboxMeHere()` from multi-threaded program, sandbox2 will abort, since -this would compromise the safety of the sandbox. - -## How should I compile my sandboxee? - -If not careful, it is easy to inherit a lot of dependencies and side effects -(extra syscalls, file accesses or even network connections) which make -sandboxing harder (tracking down all side effects) and less safe (because the -syscall and file policies are wider). Some compile options can help reduce this: - -* statically compile the sandboxee binary to avoid dynamic linking which uses a - lot of syscalls (`open()`/`openat()`, `mmap()`, etc.). Also since Bazel adds - `pie` by default but static is incompatible with it, use the features flag to - force it off. - That is, use the following options in - [cc_binary](https://docs.bazel.build/versions/master/be/c-cpp.html#cc_binary) - rules: - - ```python - linkstatic = 1, - features = [ - "fully_static_link", # link libc statically - "-pie", - ], - ``` - - *However:* this has the downside of reducing ASLR heap entropy (from 30 bits - to 8 bits), making exploits easier. Decide carefully what is preferable - depending on your sandbox implementation and policy: - - * **not static**: good heap ASLR, potentially harder to get initial code - execution but at the cost of a less effective sandbox policy, potentially - easier to break out of. - * **static**: bad heap ASLR, potentially easier to get initial code execution - but a more effective sandbox policy, potentially harder to break out of. - - It is an unfortunate choice to make because the compiler does not support - static PIE (Position Independent Executables). PIE is implemented by having - the binary be a dynamic object, and the dynamic loader maps it at a random - location before executing it. Then because the heap is traditionnally placed - at a random offset after the base address of the binary (and expanded with - `brk` syscall), it means for static binaries the heap ASLR entropy is only - this offset because there is no PIE. - -For examples of these compiling options, look at the -[static](examples.md#static) example -[BUILD.bazel](../examples/static/BUILD.bazel): `static_bin.cc` is compiled -statically, which allows us to have a very tight syscall policy. This works -nicely for sandboxing third party binaries too. - -## Can I sandbox 32-bit x86 binaries? - -Sandbox2 can only sandbox the same arch as it was compiled with. - -In addition, support for 32-bit x86 has been removed from Sandbox2. If you try -to use a 64-bit x86 executor to sandbox a 32-bit x86 binary, or a 64-bit x86 -binary making 32-bit syscalls (via `int 0x80`), both will generate a sandbox -violation that can be identified with the architecture label *[X86-32]*. - -The reason behind this behavior is that syscall numbers are different between -architectures and since the syscall policy is written in the architecture of the -executor, it would be dangerous to allow a different architecture for the -sandboxee. Indeed, allowing an seemingly harmless syscall that in fact means -another more harmful syscall could open up the sandbox to an escape. - -## Any limits on the number of sandboxes an executor process can request? - -For each sandboxee instance (new process spawned from the forkserver) a new -thread is created - that's where the limitation would lie. - -## Can an Executor request the creation of more than one Sandbox? - -No. There is a 1:1 correspondence - an `Executor` instance stores the PID of the -sandboxee, manages the `Comms` instance to the `Sandbox` instance, etc. - -## Can I use sandbox2 from Go? - -Yes. Write your executor in C++ and expose it to Go via SWIG. - -## Why do I get `Function not implemented` inside `forkserver.cc?` - -Sandbox2 only supports running on reasonably new kernels. Our current cut-off is -the 3.19 kernel though that might change in the future. The reason for this is -that we are using relatively new kernel features including user namespaces and -seccomp with the TSYNC flag. - -If you are running on prod, this should not be in issue, since almost the entire -fleet is running a new enough kernel. If you have any issues with this, please -contact us. - -If you are running on Debian or Ubuntu, updating your kernel is as easy as -`apt-get install linux-image-[recent version]`. diff --git a/sandboxed_api/sandbox2/docs/getting-started.md b/sandboxed_api/sandbox2/docs/getting-started.md deleted file mode 100644 index 6bf6ace..0000000 --- a/sandboxed_api/sandbox2/docs/getting-started.md +++ /dev/null @@ -1,356 +0,0 @@ -# Getting started with Sandbox2 - -## Introduction - -In this guide, you will learn how to create your own sandbox, policy and tweaks. -It is meant as a guide, alongside the [examples](examples.md) and code -documentation in the header files. - - -## 1. Choose an executor - -Sandboxing starts with an *executor* (see [How it works](howitworks.md)), which -will be responsible for running the *sandboxee*. The API for this is in -[executor.h](../executor.h). It is very flexible to let you choose what works -best for your use case. - -### a. Execute a binary with sandboxing already enabled - -This is the simplest and safest way to use sandboxing. For examples see -[static](examples.md#static) and [sandboxed tool](examples.md#tool). - -```c++ -#include "sandboxed_api/sandbox2/executor.h" - -std::string path = "path/to/binary"; -std::vector args = {path}; // args[0] will become the sandboxed - // process' argv[0], typically the - // path to the binary. -auto executor = absl::make_unique(path, args); -``` - -### b. Tell the executor when to be sandboxed - -This offers you the flexibility to be unsandboxed during initialization, then -choose when to enter sandboxing by calling -`::sandbox2::Client::SandboxMeHere()`. The code has to be careful to always -call this or it would be unsafe to proceed, and it has to be single-threaded -(read why in the [FAQ](faq.md#Can-I-use-threads)). For an example see -[crc4](examples.md#CRC4). - -Note: The [filesystem restrictions](#Filesystem-checks) will be in effect right -from the start of your sandboxee. Using this mode allows you to enable the -syscall filter later on from the sandboxee. - -```c++ -#include "sandboxed_api/sandbox2/executor.h" - -std::string path = "path/to/binary"; -std::vector args = {path}; -auto executor = absl::make_unique(path, args); -executor->set_enable_sandbox_before_exec(false); -``` - -### c. Prepare a binary, wait for fork requests, and sandbox on your own - -This mode allows you to start a binary, prepare it for sandboxing, and - at the -specific moment of your binary's lifecycle - make it available for the -executor. The executor will send fork request to your binary, which will -`fork()` (via `::sandbox2::ForkingClient::WaitAndFork()`). The newly created -process will be ready to be sandboxed with -`::sandbox2::Client::SandboxMeHere()`. This mode comes with a few downsides, -however: For example, it pulls in more dependencies in your sandboxee and -does not play well with namespaces, so it is only recommended it if you have -tight performance requirements. - -For an example see [custom_fork](examples.md#custom_fork). - -```c++ -#include "sandboxed_api/sandbox2/executor.h" - -// Start the custom ForkServer -std::string path = "path/to/binary"; -std::vector args = {path}; -auto fork_executor = absl::make_unique(path, args); -fork_executor->StartForkServer(); - -// Initialize Executor with Comms channel to the ForkServer -auto executor = absl::make_unique( - fork_executor->ipc()->GetComms()); -``` - -## 2. Creating a policy - -Once you have an executor you need to define the policy for the sandboxee: this -will restrict the syscalls and arguments that the sandboxee can make as well as -the files it can access. For instance, a policy could allow `read()` on a given -file descriptor (e.g. `0` for stdin) but not another. - -To create a [policy object][filter], use the -[PolicyBuilder](../policybuilder.h). It comes with helper functions that allow -many common operations (such as `AllowSystemMalloc()`), whitelist syscalls -(`AllowSyscall()`) or grant access to files (`AddFile()`). - -If you want to restrict syscall arguments or need to perform more complicated -checks, you can specify a raw seccomp-bpf filter using the bpf helper macros -from the Linux kernel. See the [kernel documentation][filter] for more -information about BPF. If you find yourself writing repetitive BPF-code that -you think should have a usability-wrapper, feel free to file a feature request. - -Coming up with the syscalls to whitelist is still a bit of manual work -unfortunately. Create a policy with the syscalls you know your binary needs and -run it with a common workload. If a violation gets triggered, whitelist the -syscall and repeat the process. If you run into a violation that you think might -be risky to whitelist and the program handles errors gracefullly, you can try to -make it return an error instead with `BlockSyscallWithErrno()`. - -[filter]: https://www.kernel.org/doc/Documentation/networking/filter.txt - -```c++ -#include "sandboxed_api/sandbox2/policy.h" -#include "sandboxed_api/sandbox2/policybuilder.h" -#include "sandboxed_api/sandbox2/util/bpf_helper.h" - -std::unique_ptr CreatePolicy() { - return sandbox2::PolicyBuilder() - .AllowSyscall(__NR_read) // See also AllowRead() - .AllowTime() // Allow time, gettimeofday and clock_gettime - .AddPolicyOnSyscall(__NR_write, { - ARG(0), // fd is the first argument of write (argument #0) - JEQ(1, ALLOW), // allow write only on fd 1 - KILL, // kill if not fd 1 - }) - .AddPolicyOnSyscall(__NR_mprotect, { - ARG_32(2), // prot is a 32-bit wide argument, so it's OK to use *_32 - // macro here - JNE32(PROT_READ | PROT_WRITE, KILL), // prot must be the RW, otherwise - // kill the process - ARG(1), // len is a 64-bit argument - JNE(0x1000, KILL), // Allow single page syscalls only, otherwise kill - // the process - ALLOW, // Allow for the syscall to proceed, if prot and - // size match - }) - // Allow the open() syscall but always return "not found". - .BlockSyscallWithErrno(__NR_open, ENOENT) - .BuildOrDie(); -} -``` - -Tip: Test for the most used syscalls at the beginning so you can allow them -early without consulting the rest of the policy. - - -### Filesystem checks - -The default way to grant access to files is by using the `AddFile()` class of -functions of the `PolicyBuilder`. This will automatically enable user namespace -support that allows us to create a custom chroot for the sandboxee and gives you -some other features such as creating tmpfs mounts. - -```c++ - sandbox2::PolicyBuilder() - // ... - .AddFile("/etc/localtime") - .AddDirectory("/usr/share/fonts") - .AddTmpfs("/tmp") - .BuildOrDie(); -``` - -## 3. Adjusting limits - -Sandboxing by restricting syscalls is one thing, but if the job can run -indefinitely or exhaust RAM and other resources that is not good either. -Therefore, by default the sandboxee runs under tight execution limits, which can -be adjusted using the [Limits](../limits.h) class, available by calling -`limits()` on the `Executor` object created earlier. For an example see [sandbox -tool](examples.md#tool). - -```c++ -// Restrict the address space size of the sandboxee to 4 GiB. -executor->limits()->set_rLimit_as(4ULL << 30); -// Kill sandboxee with SIGXFSZ if it writes more than 1 GiB to the filesystem. -executor->limits()->set_rLimit_fsize(1ULL << 30); -// Number of file descriptors which can be used by the sandboxee. -executor->limits()->set_rLimit_nofile(1ULL << 10); -// The sandboxee is not allowed to create core files. -executor->limits()->set_rLimit_core(0); -// Maximum 300s of real CPU time. -executor->limits()->set_rLimit_cpu(300); -// Maximum 120s of wall time. -executor->limits()->set_walltime_limit(absl::Seconds(120)); -``` - -## 4. Running the sandboxee - -With our executor and policy ready, we can now create the `Sandbox2` object and -run it synchronously. For an example see [static](examples.md#static). - -```c++ -#include "sandboxed_api/sandbox2/sandbox2.h" - -sandbox2::Sandbox2 s2(std::move(executor), std::move(policy)); -auto result = s2.Run(); // Synchronous -LOG(INFO) << "Result of sandbox execution: " << result.ToString(); -``` - -You can also run it asynchronously, for instance to communicate with the -sandboxee. For examples see [crc4](examples.md#CRC4) and [sandbox -tool](examples.md#tool). - -```c++ -#include "sandboxed_api/sandbox2/sandbox2.h" - -sandbox2::Sandbox2 s2(std::move(executor), std::move(policy)); -if (s2.RunAsync()) { - ... // Communicate with sandboxee, use s2.Kill() to kill it if needed -} -auto result = s2.AwaitResult(); -LOG(INFO) << "Final execution status: " << result.ToString(); -``` - -## 5. Communicating with the sandboxee - -The executor can communicate with the sandboxee with file descriptors. - -Depending on your situation, that can be all that you need (e.g., to share a -file with the sandboxee or to read the sandboxee standard output). - -If you need more communication logic, you can implement your own protocol or -reuse our convenient **comms** API able to send integers, strings, byte -buffers, protobufs or file descriptors. Bonus: in addition to C++, we also -provide a pure-C comms library, so it can be used easily when sandboxing C -third-party projects. - -### a. Sharing file descriptors - -Using the [IPC](../ipc.h) (*Inter-Process Communication*) API, you can either: - -* use `MapFd()` to map file descriptors from the executor to the sandboxee, for - instance to share a file opened from the executor for use in the sandboxee, - as it is done in the [static](examples.md#static) example. - - ```c++ - // The executor opened /proc/version and passes it to the sandboxee as stdin - executor->ipc()->MapFd(proc_version_fd, STDIN_FILENO); - ``` - or - -* use `ReceiveFd()` to create a socketpair endpoint, for instance to read the - sandboxee standard output or standard error, as it is done in the - [sandbox tool](examples.md#tool) example. - - ```c++ - // The executor receives a file descriptor of the sandboxee stdout - int recv_fd1 = executor->ipc())->ReceiveFd(STDOUT_FILENO); - ``` - -### b. Using the comms API - -Using the [comms](../comms.h) API, you can send integers, strings or byte -buffers. For an example see [crc4](examples.md#CRC4). - -To use comms, first get it from the executor IPC: - -```c++ -auto* comms = executor->ipc()->GetComms(); -``` - -To send data to the sandboxee, use one of the `Send*` family of functions. -For instance in the case of [crc4](examples.md#CRC4), the executor sends an -`unsigned char buf[size]` with `SendBytes(buf, size)`: - -```c++ -if (!(comms->SendBytes(static_cast(buf), sz))) { - /* handle error */ -} -``` - -To receive data from the sandboxee, use one of the `Recv*` functions. For -instance in the case of [crc4](examples.md#CRC4), the executor receives the -checksum into an 32-bit unsigned integer: - -```c++ -uint32_t crc4; -if (!(comms->RecvUint32(&crc4))) { - /* handle error */ -} -``` - -### c. Sharing data with buffers - -In some situations, it can be useful to share data between executor and -sandboxee in order to share large amounts of data and to avoid expensive copies -that are sent back and forth. The [buffer API](../buffer.h) serves this use -case: the executor creates a `Buffer`, either by size and data to be passed, or -directly from a file descriptor, and passes it to the sandboxee using -`comms->SendFD()` in the executor and `comms->RecvFD()` in the sandboxee. - -For example, to create a buffer in the executor, send its file descriptor to -the sandboxee, and afterwards see what the sandboxee did with it: - -```c++ -sandbox2::Buffer buffer; -buffer.Create(1ULL << 20); // 1 MiB -s2.RunAsync(); -comms->SendFD(buffer.GetFD()); -auto result = s2.AwaitResult(); -uint8_t* buf = buffer.buffer(); // As modified by sandboxee -size_t len = buffer.size(); -``` - -On the other side the sandboxee receives the buffer file descriptor, creates the -buffer object and can work with it: - -```c++ -int fd; -comms.RecvFD(&fd); -sandbox2::Buffer buffer; -buffer.Setup(fd); -uint8_t *buf = buffer.GetBuffer(); -memset(buf, 'X', buffer.GetSize()); /* work with the buffer */ -``` - -## 6. Exiting - -If running the sandbox synchronously, then `Run` will only return when it's -finished: - -```c++ -auto result = s2.Run(); -LOG(INFO) << "Final execution status: " << result.ToString(); -``` - -If running asynchronously, you can decide at anytime to kill the sandboxee: - -```c++ -s2.Kill() -``` - -Or just wait for completion and the final execution status: - -```c++ -auto result = s2.AwaitResult(); -LOG(INFO) << "Final execution status: " << result.ToString(); -``` - -## 7. Test - -Like regular code, your sandbox implementation should have tests. Sandbox tests -are not meant to test the program correctness, but instead to check whether the -sandboxed program can run without issues like sandbox violations. This also -makes sure that the policy is correct. - -A sandboxed program is tested the same way it would run in production, with the -arguments and input files it would normally process. - -It can be as simple as a shell test or C++ tests using sub processes. Check out -[the examples](examples.md) for inspiration. - -## Conclusion - -Thanks for reading this far, we hope you liked our guide and now feel empowered -to create your own sandboxes to help keep your users safe. - -Creating sandboxes and policies is a difficult task prone to subtle errors. To -remain on the safe side, have a security expert review your policy and code. diff --git a/sandboxed_api/sandbox2/docs/howitworks.md b/sandboxed_api/sandbox2/docs/howitworks.md deleted file mode 100644 index e92d94e..0000000 --- a/sandboxed_api/sandbox2/docs/howitworks.md +++ /dev/null @@ -1,57 +0,0 @@ -# How it works - -## Overview - -The sandbox technology is organized around 2 processes: - -* An **executor** sets up and runs the *monitor*: - * Also known as *parent*, *supervisor* or *monitor* - * By itself is not sandboxed - * Is regular C++ code using the Sandbox2 API - -* The **sandboxee**, a child program running in the sandboxed environment: - * Also known as *child* or *sandboxed process* - * Receives its policy from the executor and applies it - * Can come in different shapes: - * Another binary, like in the [crc4](../examples/crc4/crc4sandbox.cc) and - [static](../examples/static/static_sandbox.cc) examples - * A third party binary for which you do not have the source - -Purpose/goal: - -* Restrict the sandboxee to a set of allowed syscalls and their arguments -* The tighter the policy, the better - -Example: - -A really tight policy could deny all except reads and writes on standard -input and output file descriptors. Inside this sandbox, a program could take -input, process it, and send the output back. -* The processing is not allowed to make any other syscall, or else it is killed - for policy violation. -* If the processing is compromised (code execution by a malicious user), it - cannot do anything bad other than producing bad output (that the executor and - others still need to handle correctly). - - -## Sandbox Policies - -The sandbox relies on **seccomp-bpf** provided by the Linux kernel. **seccomp** -is a Linux kernel facility for sandboxing and **BPF** is a way to write syscall -filters (the very same used for network filters). Read more about -[seccomp-bpf on Wikipedia](https://en.wikipedia.org/wiki/Seccomp#seccomp-bpf). - -In practice, you will generate your policy using our -[PolicyBuilder class](../policybuilder.h). If you need more complex rules, you -can specify raw BPF macros, like in the [crc4](../examples/crc4/crc4sandbox.cc) -example. - -Filesystem accesses are restricted with the help of Linux -[user namespaces](http://man7.org/linux/man-pages/man7/user_namespaces.7.html). -User namespaces allow to drop the sandboxee into a custom chroot environment -without requiring root privileges. - -## Getting Started - -Read our [Getting started](getting-started.md) page to set up your first -sandbox.