Intflow: Integer Error Handling with Information Flow Tracking

Intflow: Integer Error Handling with Information Flow Tracking

IntFlow: Integer Error Handling With Information Flow Tracking Marios Pomonis Theofilos Petsios Kangkook Jee Michalis Polychronakis Angelos D. Keromytis December 7, 2014 Columbia University [email protected] IntFlow Columbia University 1 / 29 Integer Error [email protected] IntFlow Columbia University 2 / 29 Example 1. img t *table ptr; 2. unsigned int num imgs = get num imgs(); 3. unsigned int alloc size = sizeof(img t) * num imgs; 4. table ptr = (img t *) malloc(alloc size); 5. for (i = 0; i < num imgs; i++) 6. table ptr[i] = read img(i); [email protected] IntFlow Columbia University 3 / 29 Integer Errors Mathematical representation vs machine representation Instances: Integer overflow/underflow Precision loss Signedness change [email protected] IntFlow Columbia University 4 / 29 Characteristics Mainly C/C++ specific: Signed integers only (Java, Python) Overflow protection (Python) Undefined: Negative ! unsigned INT MAX + 1 Optimizations Expected behavior [email protected] IntFlow Columbia University 5 / 29 Importance Can lead to buffer overflows, memory leaks etc... Integral part of exploits Erroneous memory allocation Integer overflow in top 25 most dangerous software errors > 50 vulnerability reports (CVE) in 2014 QuickTime ! Signedness change launchd (iOS) ! Integer overflow Wireshark ! Signedness change Google Chrome ! Integer overflow [email protected] IntFlow Columbia University 6 / 29 Integer Overflow Checker (IOC)[ICSE2012] Clang AST /* a = b + c */ Dangerous operation bool error = false; Static: operation ! a = safe add(b, c, error); safe function if (error) Dynamic: detect report(); errors Report and (optionally) abort Clang trunk v3.3 [email protected] IntFlow Columbia University 7 / 29 Integer Overflow Checker (IOC)[ICSE2012] Dynamic detection mechanism Offline use Input set from user [email protected] IntFlow Columbia University 8 / 29 IOC Issue Overly comprehensive Lack of severity level Error 6= vulnerability [email protected] IntFlow Columbia University 9 / 29 Developer Intended Violations Idioms ! errors Examples Controlled umax = (unsigned) -1; Expected bahavior neg = (char) INT MAX; Not affected by smax = 1 << (WIDTH - 1) - 1; attacker smax++; IOC ! report all Large list Manually distill critical errors [email protected] IntFlow Columbia University 10 / 29 Intflow Goals: 1. Eliminate reports of developer intended violations 2. Retain and highlight critical error reports [email protected] IntFlow Columbia University 11 / 29 IntFlow Challenges: 1. Can we identify potential vulnerabilities? 2. Can we identify potentially exploitable vulnerabilities? 3. Can we do it accurately? [email protected] IntFlow Columbia University 12 / 29 Critical Arithmetic Errors An error is potentially critical if: 1. Untrusted source ! arithmetic error e.g. read(), getenv()... OR 2. Arithmetic error ! sensitive sink e.g. *alloc(), strcpy()... [email protected] IntFlow Columbia University 13 / 29 IntFlow: Architecture [email protected] IntFlow Columbia University 14 / 29 Static Information Flow Tracking Set of techniques analyzing data-flow Common compiler methodology Distinguishes flows to/from integer operations Pros Cons 3 No runtime 7 Accuracy overhead 7 Scalability 3 Coverage [email protected] IntFlow Columbia University 15 / 29 IntFlow: Architecture [email protected] IntFlow Columbia University 16 / 29 Backward Slicing: Operation ! Sources [email protected] IntFlow Columbia University 17 / 29 Forward Slicing: Source ! Operation [email protected] IntFlow Columbia University 18 / 29 Forward Slicing: Source ! Operation [email protected] IntFlow Columbia University 19 / 29 Sources Examination If sources = trusted ! result = developer intended [email protected] IntFlow Columbia University 20 / 29 Remove IOC Check [email protected] IntFlow Columbia University 21 / 29 IntFlow: Architecture [email protected] IntFlow Columbia University 22 / 29 Sensitive Operations Dynamic detection Operations ! sensitive functions Operation ! bit Check before a sensitive function Report if any bit set [email protected] IntFlow Columbia University 23 / 29 Modes Of Operation Blacklisting mode Untrusted sources ! operation Whitelisting mode Trusted sources ! operation Sensitive mode Operation ! sensitive sinks Combination of modes Blacklisting/Whitelisting + Sensitive " Confidence - # Completeness [email protected] IntFlow Columbia University 24 / 29 Evaluation Whitelisting mode Flexible Context agnostic 3 Untrusted sources 3 Error propagation Upper bound on report number [email protected] IntFlow Columbia University 25 / 29 SPEC CINT2000 250 IOC Intended IntFlow Intended 200 IOC Critical IntFlow Critical 150 100 40 30 20 10 Number of Reported Arithmetic Errors 0 gzip vpr gcc crafty parser perlbmk gap vortex [email protected] IntFlow Columbia University 26 / 29 Real-world Applications Detected vulnerabilities: CVE Number Application Error Type CVE-2009-3481 Dillo Integer Overflow CVE-2012-3481 GIMP Integer Overflow CVE-2010-1516 Swftools Integer Overflow CVE-2013-6489 Pidgin Signedness Change Produced reports Overall Dillo GIMP Swftools Pidgin IOC 330 31 231 68 0 IntFlow 82 26 13 43 0 [email protected] IntFlow Columbia University 27 / 29 Runtime Overhead Offline use CPU-bound (e.g. grep): 50-80% IO-bound (e.g. nginx): 20% [email protected] IntFlow Columbia University 28 / 29 Summary Coupled IFT with IOC Identified critical errors Focused on potentially exploitable vulnerabilities Code: http://nsl.cs.columbia.edu/projects/intflow [email protected] IntFlow Columbia University 29 / 29 Bonus Backup Slides [email protected] IntFlow Columbia University 29 / 29 Runtime Overhead 2 Whitelisting 1.9 Blacklisting 1.8 Sensitive 1.7 1.6 1.5 1.4 1.3 1.2 1.1 1 0.9 Slowdown (normalized) 0.8 0.7 0.6 0.5 grep wget wwwx zshx tcpdump cher nginx [email protected] IntFlow Columbia University 29 / 29 Additional Evaluation Results Independent stress test (red team) Artificial vulnerabilities in popular applications IO Inputs Good: no exploit ! normal execution Bad: exploit ! detect and abort TP+TN Aggregate result ( Total ): 79.30% [email protected] IntFlow Columbia University 29 / 29.

View Full Text

Details

  • File Type
    pdf
  • Upload Time
    -
  • Content Languages
    English
  • Upload User
    Anonymous/Not logged-in
  • File Pages
    32 Page
  • File Size
    -

Download

Channel Download Status
Express Download Enable

Copyright

We respect the copyrights and intellectual property rights of all users. All uploaded documents are either original works of the uploader or authorized works of the rightful owners.

  • Not to be reproduced or distributed without explicit permission.
  • Not used for commercial purposes outside of approved use cases.
  • Not used to infringe on the rights of the original creators.
  • If you believe any content infringes your copyright, please contact us immediately.

Support

For help with questions, suggestions, or problems, please contact us