Git Product home page Git Product logo

sgxbounds's People

Contributors

dimakuv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sgxbounds's Issues

how can I run the program by using sgxbouds optimization

I have done this:

  1. write a test.c
    2.clang -c -emit-llvm runtime.c test.c
    3.llvm-link runtime.bc test.bc > test-runtime.bc
    4.opt -load ./sgxbouds.so < test-runtime.bc > test-sgx.bc -sgxbouds -enable-opt -debug
    5.clang -c -emit-llvm wrappers.c
    6.llvm-link test-sgx.bc wrappers.bc >test-result.bc
    7,lli test-result.bc

when I doing the 7 step, It assert some errors:
1.function 'get_heap_end' which could not be resolved!
2.function 'malloc_real' which could not be resolved!

It seems the sgxbouds does not contain those functions realize,only contains declarations.
And I know malloc_real means "malloc" in glibc,But what get_heap_end is.
I can not find get_heap_end in glibc.
Need help,Thanks

Design ignores the potential for type confusion and use-after-free bugs

This is not an implementation bug, but an undisclosed design assumption. The code assumes that the type information from the code matches the run time types (pointer to type X always pointing to X or derived type). As such, the instrumented code is still vulnerable to buffer overflows triggered by type confusion or use-after-free bugs.

Example:

void foo(myStruct* ptr)
{
ptr->myField = X;
}

Here is SafePtr will assume that the access is correct, since myField is within the size of myStruct, when in fact ptr might be pointing to anything due to a type confusion or a use-after-free bug.

AddressSanitizer shares this limitation, but it is explicitely designed as a debug tool with no guarantees.

byval arguments are uninstrumented, but can be used as actual pointers

The byval attributes are uninstrumented (given fake upper bounds), but in reality the programmer can take the address of such argument and pass it along as any other pointer. At the IR level this looks as passing the "fake" pointer (with no bounds information) to the callee. This pattern is actually hit in either SPEC2006 or Chrome. There is also no need to use fake bounds information, since the actual size is already known at compile time.

Please highlight that stack arrays are unprotected

As title says, people should not have to read through every line of the code to know about such limitations. Especially since the paper talks so much about the importance of handling arrays well, yet never mentions this limitation.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.