/gullible

Gullible GDB extension

Primary LanguagePythonGNU General Public License v3.0GPL-3.0

Gullible GDB extension

Gullible is a GDB extension that is designed to help determine if a crash
could be an exploitable security issue.

The name Gullible is a play on words. Microsoft has a tool named
!exploitable. Gullible is a synonym of exploitable in the right context.


Our initial set of testing will use the list Apple included in their
CrashWrangler announcement:

Exploitable if:
        Crash on write instruction
        Crash executing invalid address
        Crash calling an invalid address
        Crash accessing an uninitialized or freed pointer as indicated by
            using the MallocScribble environment variable
        Illegal instruction exception
        Abort due to -fstack-protector, _FORTIFY_SOURCE, heap corruption
            detected
        Stack trace of crashing thread contains certain functions such as
            malloc, free, szone_error, objc_MsgSend, etc.

Not exploitable if:
        Divide by zero exception
        Stack grows too large due to recursion
        Null dereference
        Other abort
        Crash on read instruction


******************************************************************************
How to test

For the moment, gullible isn't really meant to work outside of the
development directory. This will be fixed once we have it working nicely
and are ready to package it.

For now, set your PYTHONPATH to this directory.
% export PYTHONPATH=`pwd`/lib

Change to the bin directory.
% cd bin

Then run the gullible.sh command. For example:

% ./gullible.sh ../tests/testDivideByZero

Program received signal SIGFPE, Arithmetic exception.
0x000000000040054c in main (argc=1, argv=0x7fffffffdeb8) at testDivideByZero.c:9
9       printf("%d\n", 7/0);
DivideByZero


You can run the test suite by running "make test".