DieHard: Probabilistic Memory Safety for Unsafe Languages

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    DieHard: Probabilistic Memory Safety for Unsafe Languages - Presentation Transcript

    1. DieHard: Probabilistic Memory Safety for Unsafe Programming Languages Emery Berger University of Massachusetts Amherst Ben Zorn Microsoft Research
    2. Problems with Unsafe Languages
      • C, C++: pervasive apps, but langs. memory unsafe
      • Numerous opportunities for security vulnerabilities, errors
        • Double free
        • Invalid free
        • Uninitialized reads
        • Dangling pointers
        • Buffer overflows (stack & heap )
    3. Current Approaches
      • Unsound, may work or abort
        • Windows, GNU libc, etc., Rx [Zhou]
      • Unsound, will definitely continue
        • Failure oblivious [Rinard]
      • Sound, definitely aborts (fail-safe)
        • CCured [Necula] , CRED [Ruwase & Lam], SAFECode [Dhurjati, Kowshik & Adve]
          • Requires C source, programmer intervention
          • 30% to 20X slowdowns
        • Good for debugging , less for deployment
    4. Probabilistic Memory Safety
      • Fully-randomized memory manager
        • Increases odds of benign memory errors
        • Ensures different heaps across users
      • Replication
        • Run multiple replicas simultaneously, vote on results
          • Detects crashing & non-crashing errors
      • Trades space for increased reliability
      DieHard: correct execution in face of errors with high probability
    5. Soundness for “Erroneous” Programs
      • Normally: memory errors ) ? …
      • Consider infinite-heap allocator:
        • All new s fresh ; ignore delete
          • No dangling pointers, invalid frees, double frees
        • Every object infinitely large
          • No buffer overflows, data overwrites
      • Transparent to correct program
      • “ Erroneous” programs sound
    6. Approximating Infinite Heaps
      • Infinite ) M-heaps: probabilistic soundness
      • Pad allocations & defer deallocations
        • Simple
        • No protection from larger overflows
          • pad = 8 bytes, overflow = 9 bytes…
        • Deterministic : overflow crashes everyone
      • Better: randomize heap
        • Probabilistic protection against errors
          • Independent across heaps
        • Efficient implementation…
    7. Implementation Choices
      • Conventional, freelist-based heaps
        • Hard to randomize, protect from errors
          • Double frees, heap corruption
      • What about bitmaps? [Wilson90]
        • Catastrophic fragmentation
          • Each small object likely to occupy one page
      obj obj obj obj pages
    8. Randomized Heap Layout
      • Bitmap-based, segregated size classes
        • Bit represents one object of given size
          • i.e., one bit = 2 i+3 bytes, etc.
        • Prevents fragmentation
      00000001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
    9. Randomized Allocation
      • malloc(8) :
        • compute size class = ceil(log 2 sz) – 3
        • randomly probe bitmap for zero-bit (free)
      • Fast: runtime O(1)
        • M=2 ) E[# of probes] · 2
      00000001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
      • malloc(8) :
        • compute size class = ceil(log 2 sz) – 3
        • randomly probe bitmap for zero-bit (free)
      • Fast: runtime O(1)
        • M=2 ) E[# of probes] · 2
      Randomized Allocation 00010001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
      • free(ptr) :
        • Ensure object valid – aligned to right address
        • Ensure allocated – bit set
        • Resets bit
      • Prevents invalid frees, double frees
      Randomized Deallocation 00010001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
    10. Randomized Deallocation
      • free(ptr) :
        • Ensure object valid – aligned to right address
        • Ensure allocated – bit set
        • Resets bit
      • Prevents invalid frees, double frees
      00010001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
      • free(ptr) :
        • Ensure object valid – aligned to right address
        • Ensure allocated – bit set
        • Resets bit
      • Prevents invalid frees, double frees
      Randomized Deallocation 000 0 0001 1010 10 size = 2 i+3 2 i+4 2 i+5 metadata heap
    11. Randomized Heaps & Reliability
      • Objects randomly spread across heap
      • Different run = different heap
        • Errors across heaps independent
      2 3 4 5 3 1 6 object size = 2 i+4 object size = 2 i+3 … My Mozilla: “malignant” overflow Your Mozilla: “benign” overflow 1 1 6 3 2 5 4 …
    12. DieHard software architecture
      • “ Output equivalent” – kill failed replicas
      broadcast vote input output execute replicas
      • Each replica has different allocator
      replica 3 seed 3 replica 1 seed 1 replica 2 seed 2
    13. Results
      • Analytical results (pictures!)
        • Buffer overflows
        • Dangling pointer errors
        • Uninitialized reads
      • Empirical results
        • Runtime overhead
        • Error avoidance
          • Injected faults & actual applications
    14. Analytical Results: Buffer Overflows
      • Model overflow as write of live data
        • Heap half full (max occupancy)
    15. Analytical Results: Buffer Overflows
      • Model overflow as write of live data
        • Heap half full (max occupancy)
    16. Analytical Results: Buffer Overflows
      • Model overflow as write of live data
        • Heap half full (max occupancy)
    17. Analytical Results: Buffer Overflows
      • Replicas: Increase odds of avoiding overflow in at least one replica
      replicas
    18. Analytical Results: Buffer Overflows
      • Replicas: Increase odds of avoiding overflow in at least one replica
      replicas
    19. Analytical Results: Buffer Overflows
      • Replicas: Increase odds of avoiding overflow in at least one replica
      replicas
      • P(Overflow in all replicas) = (1/2) 3 = 1/8
      • P(No overflow in ¸ 1 replica) = 1-(1/2) 3 = 7/8
    20. Analytical Results: Buffer Overflows
      • F = free space
      • H = heap size
      • N = # objects worth of overflow
      • k = replicas
      • Overflow one object
    21. Empirical Results: Runtime
    22. Empirical Results: Runtime
    23. Empirical Results: Error Avoidance
      • Injected faults:
        • Dangling pointers ( @ 50%, 10 allocations)
          • glibc : crashes ; DieHard : 9/10 correct
        • Overflows (@1%, 4 bytes over) –
          • glibc : crashes 9/10, inf loop ; DieHard : 10/10 correct
      • Real faults:
        • Avoids Squid web cache overflow
          • Crashes BDW & glibc
        • Avoids dangling pointer error in Mozilla
          • DoS in glibc & Windows
    24. Conclusion
      • Randomization + replicas = probabilistic memory safety
        • Improves over today (0%)
        • Useful point between absolute soundness (fail-stop) and unsound
      • Trades hardware resources (RAM,CPU) for reliability
        • Hardware trends
          • Larger memories, multi-core CPUs
        • Follows in footsteps of ECC memory, RAID
    25. DieHard software
      • http://www.cs.umass.edu/~emery/diehard
      • Linux, Solaris (stand-alone & replicated)
      • Windows (stand-alone only)

    + Emery BergerEmery Berger, 3 years ago

    custom

    1597 views, 1 favs, 1 embeds more stats

    DieHard uses randomization and replication to trans more

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 1597
      • 1592 on SlideShare
      • 5 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 32
    Most viewed embeds
    • 5 views on http://prisms.cs.umass.edu

    more

    All embeds
    • 5 views on http://prisms.cs.umass.edu

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories

    Tags