59
Sandboxing CS-576 Systems Security Instructor: Georgios Portokalidis Fall 2018

Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

  • Upload
    others

  • View
    16

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

SandboxingCS-576 Systems Security

Instructor: Georgios PortokalidisFall 2018

Page 2: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Why?Software has bugsDefenses slipUntrusted code

Compartmentalization limits interference and damage!

Fall 2018

Sandboxing Means Isolation

“a sandbox is a security mechanism for separating running programs” -- wikipedia

Stevens Institute of Technology 2

Page 3: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Opportunities for Sandboxing: Browsers

Fall 2018

Flash plugin

Browser

JS engine

Internet

.swf

.js

Untrusted inputs

Stevens Institute of Technology 3

Page 4: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Opportunities for Sandboxing: Browsers

Flash plugin

Browser

JS engine

Internet

.swf

.js

Sandboxes

Untrusted inputs

Stevens Institute of Technology 4

Page 5: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Untrusted Code in Browsers

Flash plugin

Browser

JS engine

Internet

.html

.cssRendering

engine

Untrusted inputs

Stevens Institute of Technology 5

Page 6: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Untrusted Code in Browsers

Flash plugin

Browser

JS engine

Internet

.html

.cssRendering

engine

Untrusted inputs

Sandbox?

Stevens Institute of Technology 6

Page 7: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing MethodsVM-based

§ Run entire OS in isolation

OS-based§ Process-wide§ Available system calls and capabilities are restricted

Language-based§ Language isolates components

Inline reference monitor§ Integrated into untrusted code during compilation, code

generation, or through emulation§ Security checks injected to enforce policy

Fall 2018 Stevens Institute of Technology 7

Page 8: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing MethodsVM-based

§ Run entire OS in isolation

OS-based§ Process-wide§ Available system calls and capabilities are restricted

Language-based§ Language isolates components

Inline reference monitor§ Integrated into untrusted code during compilation, code

generation, or through emulation§ Security checks injected to enforce policy

Fall 2018 Stevens Institute of Technology 8

Page 9: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Lets Refresh What We Know About OSes

Stevens Institute of Technology 9

Page 10: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

OS Access Control of HW

User land

Kernel

Application Application Application

Trusted Kernel

CPU MEMORY HW DEVICESHardware

Stevens Institute of Technology 10

Page 11: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

OS Access Control of HW

User land

Kernel

Application Application Application

Trusted Kernel

CPU MEMORY HW DEVICESHardware

User space has restricted access to CPU and memory

User space cannot access HW devices

Stevens Institute of Technology 11

Page 12: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

OS Access Control of HW

User land

Kernel

Application Application Application

Trusted Kernel

CPU MEMORY HW DEVICESHardware

Stevens Institute of Technology 12

Page 13: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

OS Access Control of HW

User land

Kernel

Application Application Application

Trusted Kernel

CPU MEMORY HW DEVICESHardware

Privileged

Unprivileged

Stevens Institute of Technology 13

Page 14: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Example of OS-Level Access Control to HW

Stevens Institute of Technology 14

Page 15: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process-level IsolationProcesses cannot directly access each other’s state

Fall 2018

User land

Kernel

USER1 Application

USER1 Application

USER1 Application

Trusted Kernel

Stevens Institute of Technology 15

Page 16: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process-level IsolationThe kernel can setup inter-process communication

Fall 2018

User land

Kernel

USER1 Application

USER1 Application

USER1 Application

Trusted Kernel

IPCsetup

Stevens Institute of Technology 16

Page 17: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process-level IsolationThe kernel can setup inter-process communication

Fall 2018

User land

Kernel

USER1 Application

USER1 Application

USER1 Application

Trusted Kernel

IPCsetup

IPCchannel

Stevens Institute of Technology 17

Page 18: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process-level IsolationSame for processes owned by different users

Fall 2018

User land

Kernel

USER1Application

USER2Application

USER3Application

Trusted Kernel

IPCsetup

IPCchannel

Stevens Institute of Technology 18

Page 19: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

The memory-management unit (MMU) provides virtual memory

Execution rings separate user and kernel space

§ Indicated by bits in CPU status register

Processes are isolated into different virtual memory address spaces

Fall 2018

Hardware-based Enforcement

USER1 Application

USER2 Application

Trusted Kernel

Ring 3

Ring 0VMEM VMEM

Stevens Institute of Technology 19

Page 20: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing MethodsVM-based

§ Run entire OS in isolation

OS-based§ Process-wide§ Available system calls and capabilities are restricted

Language-based§ Language isolates components

Inline reference monitor§ Integrated into untrusted code during compilation, code

generation, or through emulation§ Security checks injected to enforce policy

Fall 2018 Stevens Institute of Technology 20

Page 21: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Building on Process IsolationRun code in its own process space to isolate it from browser processCongratulations you have just executed untrusted code from the Internet!

Fall 2018

Browser

Flash plugin

Browser

Flash plugin

Plugin container

IPC

Stevens Institute of Technology 21

Page 22: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Container must have limited privileges

Fall 2018

Building on Process Isolation

Browser

Flash plugin

Plugin container

IPC

Stevens Institute of Technology 22

Page 23: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Chromium Sandboxing in LinuxChromium runs plugins and the rendering engine for each tab in a separate processRendering processes are sandboxedSandboxed processes are managed by a broker process over IPC

Fall 2018

https://chromium.googlesource.com/chromium/src/+/master/docs/linux_sandboxing.md

Stevens Institute of Technology 23

Page 24: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018 Stevens Institute of Technology 24

Page 25: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process Sandbox: SUIDA helper binary with the setuid bit set is used

The SUID bit causes the execution of the process as root§ Enables access to privileged kernel APIs, such as namespaces

chroot() is used to change the process’ root directory§ Take away file system access from the process

Process is placed in new PID namespace§ Process cannot terminate or signal processes outside the namespace

Process is placed in new network namespace§ Restrict network access of process

Finally drop super-user privileges

Fall 2018 Stevens Institute of Technology 25

Page 26: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process Sandbox: User NamespacesUser namespaces are an unprivileged API

Used as an alternative to SUID sandbox

A process is placed a new namespace

Isolates:§ Filesystem§ Network§ PID§ IPC

Fall 2018 Stevens Institute of Technology 26

Page 27: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

User NamespacesA newly launched process can be put in a new namespace

§ Through the clone() system call

Fall 2018

Reading material: https://lwn.net/Articles/531114/

Namespace Constant IsolatesCgroup CLONE_NEWCGROUP Cgroup root directoryIPC CLONE_NEWIPC System V IPC, POSIX message queuesNetwork CLONE_NEWNET Network devices, stacks, ports, etc.Mount CLONE_NEWNS Mount pointsPID CLONE_NEWPID Process IDsUser CLONE_NEWUSER User and group IDsUTS CLONE_NEWUTS Hostname and NIS domain name

Available namespaces

Stevens Institute of Technology 27

Page 28: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Process Sandbox: SECCOMP BPFFilters the kernel APIs available to a process

Used together with previous sandboxes

Aims to protect the kernel from a malicious process

Available system calls are defined using Berkeley packet filters

§ Filters are compiled to a program that enforces policy

Fall 2018 Stevens Institute of Technology 28

Page 29: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

SECCOMP BPF ProgramsPrograms consist of instructions that can check the values of various system calls and their arguments

§ Cannot dereference pointersBPF can be hard to write and looks like assemblyExample:

§ a BPF load operation (BPF_LD), for a word (BPF_W), using the value in the instruction as an offset into the data area (BPF_ABS)

§ a jump-if-equal instruction (BPF_JMP | BPF JEQ) that compares the value in the instruction, which is known as "k", (BPF_K) to the value in the accumulator. So, if the architecture is x86-64, this jump will skip the next instruction (the offset of "1" for the jump true destination), otherwise it will execute it ("0" for jump false)

Fall 2018

BPF_STMT(BPF_LD | BPF_W | BPF_ABS, (offsetof(struct seccomp_data, arch)))

BPF_JUMP(BPF_JMP | BPF_JEQ | BPF_K , AUDIT_ARCH_X86_64 , 1, 0)

Stevens Institute of Technology 29

Page 30: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

SECCOMP BPF ProgramsWhat you can doFilter specific system calls

§ Or particular arguments to themDefine what action to take when an invalid call is made

What you can’t doDereference pointer argumentsRemove an installed filter

Fall 2018 Stevens Institute of Technology 30

Page 31: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

LibsecompOffers a simpler API for writing filters

Fall 2018

int seccomp_rule_add(uint32_t action, int syscall, unsigned int arg_cnt, ...);

seccomp_rule_add(SCMP_ACT_ALLOW, SCMP_SYS(close), 0);

Stevens Institute of Technology 31

Page 32: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

#include <stdio.h> /* printf */#include <unistd.h> /* dup2: just for test */#include <seccomp.h> /* libseccomp */

int main() {printf("step 1: unrestricted\n");

// Init the filterscmp_filter_ctx ctx;ctx = seccomp_init(SCMP_ACT_KILL); // default action: kill

// setup basic whitelistseccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(rt_sigreturn), 0);seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(exit), 0);seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(read), 0);seccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(write), 0);

// setup our ruleseccomp_rule_add(ctx, SCMP_ACT_ALLOW, SCMP_SYS(dup2), 2,

SCMP_A0(SCMP_CMP_EQ, 1),SCMP_A1(SCMP_CMP_EQ, 2));

// build and load the filterseccomp_load(ctx);printf("step 2: only 'write' and dup2(1, 2) syscalls\n");

// Redirect stderr to stdoutdup2(1, 2);printf("step 3: stderr redirected to stdout\n");

// Duplicate stderr to arbitrary fddup2(2, 42);printf("step 4: !! YOU SHOULD NOT SEE ME !!\n");

// Success (well, not so in this case...)return 0;

}

Stevens Institute of Technology 32

Page 33: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Limitations of OS and VM-based SandboxingContext switches between broker and sandboxed processes can be expensive

Fall 2018 Stevens Institute of Technology 33

Page 34: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing MethodsVM-based

§ Run entire OS in isolation

OS-based§ Process-wide§ Available system calls and capabilities are restricted

Language-based§ Language isolates components

Inline reference monitor§ Integrated into untrusted code during compilation, code

generation, or through emulation§ Security checks injected to enforce policy

Fall 2018 Stevens Institute of Technology 34

Page 35: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Example: JS/JavaThe language and the runtime environment/VM is enforcing security

§ Memory safe languages§ Memory corruption or leakage is not possible (at least in

theory)

Access control done at the API level, for example:§ Which files can be loaded§ Which frames are accessible through the DOM§ Where can code be loaded from § The VM acts as a reference monitor

Fall 2018 Stevens Institute of Technology 35

Page 36: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing MethodsVM-based

§ Run entire OS in isolation

OS-based§ Process-wide§ Available system calls and capabilities are restricted

Language-based§ Language isolates components

Inline reference monitor§ Integrated into untrusted code during compilation, code

generation, or through emulation§ Security checks injected to enforce policy

Fall 2018 Stevens Institute of Technology 36

Page 37: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Sandboxing Unsafe LanguagesPointers can be used to potential read/write arbitrary memory

Memory accesses need to be isolated first§ Can rarely rely on HW to contain memory operations§ Software checks are introduced in application code

Fall 2018 Stevens Institute of Technology 37

Page 38: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Software-fault IsolationRun multiple programs in the same address space that run in isolation

Each program runs in a different logical fault domain

Programs can access memory within their domain§ Ensures memory secrecy and integrity

Code within a domain cannot call/jump to code in other domains

§ Unless through secure interfaces

Fall 2018 Stevens Institute of Technology 38

Page 39: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Software-fault IsolationPrograms can only access memory within their domain

§ Ensures memory secrecy and integrity

Fall 2018

Write OK Write OK

Domain-1 Domain-2Writedisallowed

Stevens Institute of Technology 39

Page 40: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Software-fault IsolationPrograms can only access memory within their domain

§ Ensures memory secrecy and integrity

Code within a domain cannot call/jump to code in other domains

§ Unless through secure interfaces

Fall 2018

Function call

Domain-1 Domain-2Transferdisallowed

Function call

Stevens Institute of Technology 40

Page 41: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Software-fault IsolationPrograms can only access memory within their domain

§ Ensures memory secrecy and integrity

Code within a domain cannot call/jump to code in other domains

§ Unless through secure interfaces

Modify programs during compilation or by rewriting to enforce these properties

Fall 2018 Stevens Institute of Technology 41

Page 42: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesThrough boundary checking

Fall 2018

cmp 0x0300if less Errorcmp 0x04AAif greater Errorwrite x

0x0300

0x04AA

Stevens Institute of Technology 42

Page 43: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesWe can improve the boundary checks

§ By allocating domains in aligned memory ranges§ Using bit masking to help with checking

Fall 2018

tmp := x & FF00cmp tmp 0300if not equal Errorwrite x

0x0300

0x03FF

Stevens Institute of Technology 43

Page 44: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesFurther improvements

§ Do not detect error§ Constrain memory access to domain

Fall 2018

tmp : = x & 00FFtmp : = tmp | 0300write tmp

0x0300

0x03FF

Stevens Institute of Technology 44

Page 45: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesEliminating temporary registers is not always a good idea

Fall 2018

0x0300

0x03FF

…x : = x & 00FFx : = x | 0300write x

Malicious code could bypass masking

operations

Time Of CheckTime Of Use

(TOCTOU)

Stevens Institute of Technology 45

Page 46: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesCan malicious code bypass checks with temporary registers?

Fall 2018

tmp : = x & 00FFtmp : = tmp | 0300write tmp

0x0300

0x03FF

Stevens Institute of Technology 46

Page 47: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Memory AccessesCan malicious code bypass checks with temporary registers?

Fall 2018

tmp : = x & 00FFtmp : = tmp | 0300write tmp

0x0300

0x03FF

?• tmp has not been initialized

and will probably cause the program to crash.

• Can be forced to crash by setting tmp to bad address (e.g., 0xffffffff) after write

Stevens Institute of Technology 47

Page 48: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Control FlowSandboxes are mainly to used to constrain untrusted code so obviously this is a general problem

Fall 2018

…jmp ptr

?

Stevens Institute of Technology 49

Page 49: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Control FlowSimilar tricks can be applied

Fall 2018

…jmp ptr

…tptr : = ptr & 00FFtptr : = tptr | 0300jmp tptr

…call ptr

…tptr : = ptr & 00FFtptr : = tptr | 0300call tptr

…ret ?

Stevens Institute of Technology 50

Page 50: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Constraining Control FlowNaive approach

Fall 2018

ret

pop tptrtptr : = tptr & 00FFtptr : = tptr | 0300jmp ptr

Stevens Institute of Technology 51

Page 51: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

CISC TroubleConstraining within the domain is not enough

§ Instructions may be hidden within instructions in CISC programs

Fall 2018

ins ins ins ins ins ins

ins ins ins ins ins ins

ins ins ins ins ins ins

Stevens Institute of Technology 52

Page 52: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Pseudo Fixed-size InstructionsAlign every “pseudo” instruction on a 32-byte boundary

§ 0x1F bits are always zeroForce pointer so it can only point to a pseudo instruction

Fall 2018

pop tptrtptr : = tptr & 00E0tptr : = tptr | 0300jmp ptr

Stevens Institute of Technology 53

Page 53: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Benefits of SFINo context switches

Faster if run-time checks are faster than context switching

Fall 2018 Stevens Institute of Technology 54

Page 54: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Google Native Client (NaCL)A sandboxing technology for running a subset of Intel x86, ARM, or MIPS native code in a sandbox

https://developer.chrome.com/native-client

NaCL programs are compiled with modified compiler

Supports subset of language

Produces sandboxed programsFall 2018 Stevens Institute of Technology 55

Page 55: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Escaping SandboxesExploitation of a sandboxed component grants limited control

But sandboxes may have bugs

Multiple exploits in different components are usually required

In 2012’s pwnium competition 14 bugs where needed to take down chrome

§ http://blog.chromium.org/2012/05/tale-of-two-pwnies-part-1.html

Fall 2018 Stevens Institute of Technology 56

Page 56: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

Multiple Layers of Sandboxes

Sandboxed process

Sandboxedcomponent

Original process

Stevens Institute of Technology 57

Page 57: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Other Use Cases for IsolationProcess-level Isolation from the OS is frequently used to realize the principle of least privilege in servers

Examples: SSH, Web servers

Fall 2018 Stevens Institute of Technology 58

Page 58: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

SSH

SSH listening process

SSH request serving process

Connections

AuthenticateSSH request

serving process

SSH request serving process

fork()Runs as root

How is access control done here?

Stevens Institute of Technology 59

Page 59: Sandboxing · Sandboxing Means Isolation “a sandbox is a security mechanism for separating running programs” --wikipedia Stevens Institute of Technology 2. Opportunities for Sandboxing:

Fall 2018

SSH

SSH listening process

SSH request serving process

Connections

AuthenticateSSH request

serving process

SSH request serving process

fork()Runs as root

setuid()/seteuid()

Process drop privileges and run as the authenticated user

Stevens Institute of Technology 60