outline
play

Outline 31st IEEE Symposium on Security & Privacy Introduction - PDF document

Outline 31st IEEE Symposium on Security & Privacy Introduction TaintScope: A Checksum-Aware Background Directed Fuzzing Tool for Automatic Motivation Software Vulnerability Detection TaintScope Intuition Tielei Wang 1 ,


  1. Outline 31st IEEE Symposium on Security & Privacy � Introduction TaintScope: A Checksum-Aware � Background Directed Fuzzing Tool for Automatic � Motivation Software Vulnerability Detection � TaintScope � Intuition Tielei Wang 1 , Tao Wei 1 , Guofei Gu 2 , Wei Zou 1 � System Design 1 Peking University, China � Evaluation ...... 2 Texas A&M University, US � Conclusion 2 Fuzzing/Fuzz Testing Fuzzing is great � Feed target applications with malformed inputs In the best case, malformed e.g., invalid, unexpected, or random test cases inputs will explore different � Proven to be remarkably successful program paths, and trigger � E.g., randomly mutate well-formed inputs and runs the target application with the “ mutations” security vulnerabilities Malformed Input crash Fuzzer Application However… Introduction TaintScope Conclusion Introduction TaintScope Conclusion 3 4 A quick example Checksum: the bottleneck re-compute a new checksum Checksum is a common way to test the integrity 1 void decode_image(FILE* fd){ of input data 2 ... 3 int length = get_length(fd); read the attached 4 int recomputed_chksum = checksum(fd, length); checksum Most mutations are blocked 5 int chksum_in_file = get_checksum(fd); at the checksum test point //line 6 is used to check the integrity of inputs 6 if(chksum_in_file != recomputed_chksum) 7 error(); 8 int Width = get_width(fd); compare tow values 9 int Height = get_height(fd); if(checksum( D ata )!= C hksum ) 10 int size = Width*Height*sizeof(int);// integer overflow 11 int* p = malloc(size); 12 ... � Malformed images will be dropped when the decoder � Malformed images will be dropped when the de function detects checksums mismatch Introduction Introduction TaintScope Conclusion TaintScope Conclusion 5 6

  2. Our motivation Intuition � Disable checksum checks by control flow alteration � Penetrate checksum checks! if(checksum( D ata )!= C hksum ) goto L1; exit(); L1: Our Goal continue(); Original program Modified program � Fuzz the modified program � Repair the checksum fields in malformed inputs that can crash the modified program Introduction TaintScope Conclusion Introduction TaintScope Conclusion 7 8 Key Questions TaintScope Overview � Q1: How to locate the checksum test Q1 Q2 Q3 instructions in a binary program? Modified Crashed Program Samples Checksum Directed Checksum � Q2: How to effectively and efficiently fuzz for Locator Fuzzer Repairer security vulnerability detection? Instruction Hot Bytes Info � Q3: How to generate the correct checksum Profile value for the invalid inputs that can crash the Reports Execution Monitor modified program? Introduction TaintScope Conclusion 9 10 A1: Locate the checksum test instruction A1: Locate the checksum test instruction Key Observation 2 Key Observation 1 Well-formed inputs can pass the checksum test, Checksum is usually used to protect a large number but most malformed inputs cannot of input bytes D ata C hksum We log the behaviors of candidate � conditional jump instructions if(checksum( D ata ) != C hksum ) � Based on fine-grained taint analysis, we first find the conditional jump instructions (e.g., �� , �� ) that depend on more than a certain number of input bytes � Take these conditional jump instructions as candidates TaintScope TaintScope Introduction Conclusion Introduction Conclusion 11 12

  3. � � � � � � A1: Locate the checksum test instruction A1: Locate the checksum test instruction Key Observation 2 Key Observation 2 Well-formed inputs can pass the checksum test, Well-formed inputs can pass the checksum test, but most malformed inputs cannot but most malformed inputs cannot We log the behaviors of candidate We log the behaviors of candidate � � conditional jump instructions conditional jump instructions Run well-formed inputs, identify the Run well-formed inputs, identify the always-taken and always-not-taken insts always-taken and always-not-taken insts Run malformed inputs, also identify the always-taken and always-not-taken insts Introduction TaintScope Conclusion Introduction TaintScope Conclusion 13 14 A1: Locate the checksum test instruction A2: Effective and efficient fuzzing � Blindly mutating will create huge amount of redundant test Key Observation 2 cases --- ineffective and inefficient Well-formed inputs can pass the checksum test, Directly modifying “width” or “height" but most malformed inputs cannot 1 void decode_image(FILE* fd){ fields will trigger the bug easily 2 ... ... We log the behaviors of candidate 6 if(chksum_in_file != recomputed_chksu � goto 8; conditional jump instructions 7 error(); Run well-formed inputs, identify the 8 int Width = get_width(fd); always-taken and always-not-taken insts 9 int Height = get_height(fd); 10 int size = Width*Height*sizeof(int) ;//integer overflow Run malformed inputs, also identify the 11 int* p = malloc(size) ; always-taken and always-not-taken insts 12 … Identify the conditional jump inst that � Directed fuzzing: focus on modifying the “ hot bytes ” that behaves completely different when refer to the input bytes flow into critical system/library calls processing well-formed and malformed inputs � Memory allocation, string operation… Introduction TaintScope Conclusion Introduction TaintScope Conclusion 15 16 A3: Generate the correct checksum Design Summary � The classical solution is symbolic execution � Directed Fuzzing and constraint solving � Identify and modify “hot bytes” in valid inputs to Solving checksum( D ata )== C hksum is hard or generate malformed inputs � On top of PIN binary instrumentation platform impossible, if both D ata and C hksum are symbolic values � Checksum-aware Fuzzing � We use combined concrete/symbolic execution � Locate checksum check points and checksum fields. � Only leave the bytes in the checksum field as symbolic values � Modify the program to accept all kinds input data � Collect and solve the trace constraints on C hksum when reaching the checksum test inst. � Generate correct checksum fields for malformed � Note that: inputs that can crash the modified program checksum( D ata ) is a runtime determinable constant value. � � Offline symbolically execute the trace, using STP solver C hksum originates from the checksum field, but may be transformed, such � as from hex/oct to dec number, from little-endian to big-endian. TaintScope TaintScope Introduction Conclusion Introduction Conclusion 17 18

  4. Evaluation Evaluation 1 : locate checksum points � We test several common checksum algorithms, including � Component evaluation CRC32, MD5, Adler32. TaintScope accurately located the � E1: Whether TaintScope can locate checksum check statements . points and checksum fields? � E2: How many hot byte in a valid input? � E3: Whether TaintScope can generate a correct checksum field? � Overall evaluation � E 4 : Whether TaintScope can detect previous unknown vulnerabilities in real-world applications? Introduction TaintScope Conclusion Introduction TaintScope Conclusion 19 20 Evaluation 3 : generate correct checksum Evaluation 2 : identify hot bytes fields � We measured the number of bytes could affect the size � We test malformed inputs in four kinds of file arguments in memory allocation functions formats. � TaintScope is able to generate correct checksum fields. Introduction TaintScope Conclusion Introduction TaintScope Conclusion 21 22 Evaluation 4 : 27 previous unknown vulns Evaluation 4 : 27 previous unknown vulns MS Paint Google Picasa Adobe Acrobat ImageMagick irfanview gstreamer Winamp XEmacs wxWidgets PDFlib Amaya dillo TaintScope Introduction Conclusion 23 24

  5. Evaluation 4: 27 previous unknown vulns Conclusion � Checksum is a big challenge for fuzzing tools � TaintScope can perform: � Directed fuzzing � Identify which bytes flow into system/library calls. � dramatically reduce the mutation space. � Checksum-aware fuzzing � Disable checksum checks by control flow alternation. � Generate correct checksum fields in invalid inputs. � TaintScope detected dozens of serious previous unknown vulnerabilities. Introduction TaintScope Conclusion Introduction TaintScope Conclusion 25 26 Thanks for your attention!

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