better bug reporting with better privacy
play

Better Bug Reporting with Better Privacy M.Cast ro, M.Cost a, JP . - PowerPoint PPT Presentation

Better Bug Reporting with Better Privacy M.Cast ro, M.Cost a, JP . Mart in Present ed by Horat iu Jula Imagine a crash Report the crash Bug reporting today Stack trace, memory dumps May be insufficient S olution: send path


  1. Better Bug Reporting with Better Privacy M.Cast ro, M.Cost a, JP . Mart in Present ed by Horat iu Jula

  2. Imagine a crash

  3. Report the crash

  4. Bug reporting today  Stack trace, memory dumps  May be insufficient  S olution: send path conditions  Application-specific extras, failure-inducing document  May reveal private information  Users may not know if what they send contains private data  S olution: send a new document, without private data (if possible), that reveals the same bug

  5. The approach Error detection in normal execution  Input log Replay bug in background  Instruction-level trace ymbolically execute the trace  Path conditions that hold for the bad input and cause S the bug S olve the constraints to get new inputs that satisfy the path conditions #bits revealed from the original inputs

  6. Example int ProcessMessage(int sock, char *msg) { char url[20]; char host[20]; int i=0; if (msg[0] != ’ G’ | | msg[1] != ’ E’ | | msg[2] != ’ T’ | | msg[3] != ’ ’ ) return -1; msg = msg+4; while (*msg != ’ \n’ && *msg != ’ ’ ) { url[i++] = *msg++; } Buffer overflow, for i >= 20 url[i] = 0; GetHost(msg, host); return ProcessGet(sock, url, host); }

  7. Compute path conditions int ProcessMessage(int sock, char *msg) { S tate: char url[20]; *msg = b0,b1,b2,… char host[20]; i = 0 int i=0; if (msg[0] != ’ G’ | | msg[1] != ’ E’ | | msg[2] != ’ T’ | | msg[3] != ’ ’ ) return -1; Conditions: msg = msg+4; while (*msg != ’ \n’ && *msg != ’ ’ ) { url[i++] = *msg++; } url[i] = 0; GetHost(msg, host); return ProcessGet(sock, url, host); }

  8. Compute path conditions int ProcessMessage(int sock, char *msg) { S tate: char url[20]; *msg = b0,b1,b2,… char host[20]; i = 0 int i=0; if (msg[0] != ’ G’ | | msg[1] != ’ E’ | | msg[2] != ’ T’ | | msg[3] != ’ ’ ) return -1; Conditions: msg = msg+4; b0=‘ G’ / \ b1=‘ E’ / \ while (*msg != ’ \n’ && *msg != ’ ’ ) { b2=‘ T’ / \ b3=‘ ’ url[i++] = *msg++; } url[i] = 0; GetHost(msg, host); return ProcessGet(sock, url, host); }

  9. Compute path conditions int ProcessMessage(int sock, char *msg) { S tate: char url[20]; *msg = b4,b5,b6,… char host[20]; i = 0 int i=0; if (msg[0] != ’ G’ | | msg[1] != ’ E’ | | msg[2] != ’ T’ | | msg[3] != ’ ’ ) return -1; Conditions: msg = msg+4; b0=‘ G’ / \ b1=‘ E’ / \ while (*msg != ’ \n’ && *msg != ’ ’ ) { b2=‘ T’ / \ b3=‘ ’ url[i++] = *msg++; } url[i] = 0; GetHost(msg, host); return ProcessGet(sock, url, host); }

  10. Compute path conditions int ProcessMessage(int sock, char *msg) { S tate: char url[20]; *msg = b20,b21,b22,… char host[20]; *url = b4,b5,b6,… int i=0; i = 20 if (msg[0] != ’ G’ | | msg[1] != ’ E’ | | msg[2] != ’ T’ | | msg[3] != ’ ’ ) return -1; Conditions: msg = msg+4; b0=‘ G’ / \ b1=‘ E’ / \ while (*msg != ’ \n’ && *msg != ’ ’ ) { b2=‘ T’ / \ b3=‘ ’ / \ url[i++] = *msg++; b4 != ‘ \n’ / \ b4 != ‘ ‘ / \ } … url[i] = 0; b20 != ‘ \n’ / \ b20 != ‘ ‘ GetHost(msg, host); return ProcessGet(sock, url, host); }

  11. S ummary  Symbolic execution reveals the constraints under which a bug can occur  Solving gives new inputs that trigger the same bug  For our example  Memory dumps may reveal private information  New input: ‘ GET ................’ (‘ .’ represents byte value 0)  Only 4 bytes were relevant for the bug and had to be revealed

  12. Evaluation  Efficient technique  Generates reports quickly (<2min)  Provides good privacy  Reveals very little of the original document (<15% )

  13. Related work  Vigilante (SOSP 2005)  Compute path conditions for an exploit and inline them into the application, as a filter for protecting the application against the exploit  Bouncer (SOSP 2007)  Extends Vigilante with  S implifying the path conditions  Learning new exploits by removing/ duplicating bytes in the original exploit  New path conditions are derived for each new exploit  The final filter is a disj unction of the path conditions of the exploits

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