2020 Asplos

Reference 1

Most influential: Africa(Kenya) zebra tracking; peer-to-peer epidemic propagation; energy saving.

Betteryless in IoT: Intermittent

Timekeeping in Intermittent Computing

RC circuits: capacitor discharged time.

This work: a sequential discharged chain of RC circuits instead of one.

TotalRecall

Avoid all NVM-writes by taking checkpoints that reside entirely in SRAM.

SRAM volatility: ~5 minutes (20 C)

Long time off times: predictable; irrelavant;

TICS: Batteryless on legacy software

Time annotated C source.

64 KB FRAM

Cyber attacks

Egalito: binary recompiler

50 software bugs per 1k lines!

binary level transformation

PIC by default (ASLR):

  • base address in register -> expensive on 32 bit; good on 64 bit x86, etc.

Three categories of binary transformation

Binary patching: jmp detour;; e.g. DyInst

Process virtualization: switch address space during exe; e.g. DynamoRIO, PIN

Binary recompilation: shifting everything up/down;

  • e.g. Ramblr, McSema
  • Difficult to perform: require precise pointer, function, jump table analysis
  • has same power as the original linker/compiler backend

Binary disassembly is undecidable

Dynamics techniques to conquer :

  • DynamoRIO, PIN (Dynamic binary translation)
  • Valgrind, Dyninst, Qemu

Or, statically with sacrifices:

  • Under-approximate code, preserve layout. (most binary rewriting)

  • Use heuristics and speculative disassembly. (e.g., Ramblr)

  • Over-approximate code and pointers. (e.g., superset disassembly)

Egalito (layout agnostic)

bin -> IR -> bin

recompiler passes

fewer heuristics

Egalitarian: binary transformation more equal with source level transformation; compile and defend itself.

Machine code <-> Egalito IR (=~ Machine specific IR) <-> Higher-level representation (=~ LLVM IR)

  • Find all pointers. via heuristics; PIC code;

Evaluation

near zero overhead.

X86_64, ARM64, partial RISC-V support.

Source code

https://egalito.org/

https://github.com/columbia/egalito

Created Mar 27, 2020 // Last Updated Mar 29, 2020

If you could revise
the fundmental principles of
computer system design
to improve security...

... what would you change?