ctsrd
play

CTSRD CRASH-worthy Trustworthy Systems Research and Development - PowerPoint PPT Presentation

CTSRD CTSRD CRASH-worthy Trustworthy Systems Research and Development Beyond the PDP-11: Architectural support for a memory-safe C abstract machine David Chisnall , Colin Rothwell , Brooks Davis , Robert N.M. Watson ,


  1. CTSRD CTSRD CRASH-worthy Trustworthy Systems Research and Development Beyond the PDP-11: Architectural support for a memory-safe C abstract machine David Chisnall † , Colin Rothwell † , Brooks Davis ‡ , Robert N.M. Watson † , Jonathan Woodruff † , Munraj Vadera † , Simon W. Moore † , Peter G. Neumann ‡ , and Michael Roe † ‡SRI International †University of Cambridge Approved for public release; distribution is unlimited. This research is sponsored by the Defense Advanced Research Projects Agency (DARPA) and the Air Force Research Laboratory (AFRL), under contracts FA8750-10-C-0237 and FA8750-11- C-0249. The views, opinions, and/or findings contained in this article/presentation are those of the author(s)/presenter(s) and should not be interpreted as representing the official views or policies of the Department of Defense or the U.S. Government.

  2. Why bring the PDP-11 into it? • First target for C • Flat, byte-addressable memory • C split memory into objects purely in software • All widely deployed C implementations follow this model 2

  3. Memory safety for compartmentalisation • Processes are isolated by hardware (MMU), but expensive • Fine-grained compartmentalisation needs: • Cheap compartments • Fine-grained sharing 3

  4. From compartments to objects Process A Process B • Sharing requires Pointer Buffer pointers with enforced bounds and permissions Process A • Can we use this mechanism for every Pointer Buffer pointer? 4

  5. The initial CHERI ISA • All memory accesses via a capability register • ISA allows reducing capabilities • Tagged memory protects capabilities 5

  6. Binary compatibility More compatible More safe n64 Hybrid Pure-capability Pure MIPS Some pointers All pointers are are capabilities capabilities 6

  7. The prototype CPU • 64-bit MIPS-compatible ISA ( ≈ R4000) • CHERI ISA extensions • Runs at 100MHz on FPGA • Full software stack 7

  8. Real world code • A lot of C is implementation defined • Most real C code does interesting things with pointers • Case study: tcpdump does most of them (on untrusted data, running as root) Supporting just the standard isn’t enough 8

  9. Common pointer idioms • Full list in the paper • Around 2M lines of C code surveyed • Thousands of instances found • Breaking them is not acceptable! 9

  10. Example: The mask idiom // The low bit of an aligned pointer is // always 0, so we can hide a flag in it int *set_flag(int *b) { return (int*)((intptr_t)b | 1); } 00x1601231230 10

  11. Example: The mask idiom // The low bit of an aligned pointer is // always 0, so we can hide a flag in it int *set_flag(int *b) { return (int*)((intptr_t)b | 1); } 00x1601231230 00x1601231231 10

  12. Example: Invalid Intermediates Pointer Buffer End 11

  13. Example: Invalid Intermediates Pointer Pointer += x; Buffer End 11

  14. Example: Invalid Intermediates Pointer Pointer += x; if (Pointer > End) Buffer End 11

  15. Example: Invalid Intermediates Pointer Pointer += x; if (Pointer > End) Pointer = End - 1; Buffer End 11

  16. Capabilities Unforgeable Old CHERI Capabilities: Base ¡[64] Monotonic length Length ¡[64] and permissions Permissions ¡[32] Type ¡[24] Experimental ¡[136] Grant rights 12

  17. Fat Pointers Describe a point Add metadata 13

  18. Capabilities + Fat Pointers Unforgeable Describe a point Monotonic length and permissions Add metadata Grant rights 14

  19. Capabilities + Fat Pointers Unforgeable Describe a point Monotonic length and permissions Add metadata Grant rights 14

  20. New CHERI Capabilities Base ¡[64] Length ¡[64] Permissions ¡[32] Type ¡[24] Reserved ¡[8] Offset ¡[64] • CHERI capabilities extended to include an offset field • Checks apply only on dereference 15

  21. It’s alive! • Fully supports real-world C pointer use. • Negligible overhead in tcpdump • More performance evaluation in the paper 16

  22. Conclusions • We have shown that a capability model can provide a memory-safe C abstract machine • This paves the way for fine-grained compartmentalisation of C programs • Come and see us at IEEE Security and Privacy for the next part of the story! http://chericpu.org 17

Download Presentation
Download Policy: The content available on the website is offered to you 'AS IS' for your personal information and use only. It cannot be commercialized, licensed, or distributed on other websites without prior consent from the author. To download a presentation, simply click this link. If you encounter any difficulties during the download process, it's possible that the publisher has removed the file from their server.

Recommend


More recommend