TY - GEN
T1 - Ifuzzer
T2 - 21st European Symposium on Research in Computer Security, ESORICS 2016
AU - Veggalam, Spandan
AU - Rawat, Sanjay
AU - Haller, Istvan
AU - Bos, Herbert
PY - 2016/9
Y1 - 2016/9
N2 - We present an automated evolutionary fuzzing technique to find bugs in JavaScript interpreters. Fuzzing is an automated black box testing technique used for finding security vulnerabilities in the software by providing random data as input. However, in the case of an interpreter, fuzzing is challenging because the inputs are piece of codes that should be syntactically/semantically valid to pass the interpreter’s elementary checks. On the other hand, the fuzzed input should also be uncommon enough to trigger exceptional behavior in the interpreter, such as crashes, memory leaks and failing assertions. In our approach, we use evolutionary computing techniques, specifically genetic programming, to guide the fuzzer in generating uncommon input code fragments that may trigger exceptional behavior in the interpreter. We implement a prototype named IFuzzer to evaluate our technique on real-world examples. IFuzzer uses the language grammar to generate valid inputs. We applied IFuzzer first on an older version of the JavaScript interpreter of Mozilla (to allow for a fair comparison to existing work) and found 40 bugs, of which 12 were exploitable. On subsequently targeting the latest builds of the interpreter, IFuzzer found 17 bugs, of which four were security bugs.
AB - We present an automated evolutionary fuzzing technique to find bugs in JavaScript interpreters. Fuzzing is an automated black box testing technique used for finding security vulnerabilities in the software by providing random data as input. However, in the case of an interpreter, fuzzing is challenging because the inputs are piece of codes that should be syntactically/semantically valid to pass the interpreter’s elementary checks. On the other hand, the fuzzed input should also be uncommon enough to trigger exceptional behavior in the interpreter, such as crashes, memory leaks and failing assertions. In our approach, we use evolutionary computing techniques, specifically genetic programming, to guide the fuzzer in generating uncommon input code fragments that may trigger exceptional behavior in the interpreter. We implement a prototype named IFuzzer to evaluate our technique on real-world examples. IFuzzer uses the language grammar to generate valid inputs. We applied IFuzzer first on an older version of the JavaScript interpreter of Mozilla (to allow for a fair comparison to existing work) and found 40 bugs, of which 12 were exploitable. On subsequently targeting the latest builds of the interpreter, IFuzzer found 17 bugs, of which four were security bugs.
KW - Evolutionary computing
KW - Fuzzing
KW - Genetic programming
KW - System security
KW - Vulnerability
KW - Scripting languages
UR - http://www.scopus.com/inward/record.url?scp=84990052443&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=84990052443&partnerID=8YFLogxK
U2 - 10.1007/978-3-319-45744-4_29
DO - 10.1007/978-3-319-45744-4_29
M3 - Conference contribution
AN - SCOPUS:84990052443
SN - 9783319457437
VL - 9878 LNCS
T3 - Lecture Notes in Computer Science (including subseries Lecture Notes in Artificial Intelligence and Lecture Notes in Bioinformatics)
SP - 581
EP - 601
BT - Computer Security - 21st European Symposium on Research in Computer Security, ESORICS 2016, Proceedings
PB - Springer/Verlag
Y2 - 26 September 2016 through 30 September 2016
ER -