{"title":"Deity: Finding Deep Rooted Bugs in JavaScript Engines","authors":"Hongyang Lin, Junhu Zhu, Jianshan Peng, Dixia Zhu","doi":"10.1109/ICCT46805.2019.8947153","DOIUrl":null,"url":null,"abstract":"Fuzzing [1] is a well-known technique which was employed to provide unexpected or random data as input to JavaScript engines in hopes of finding a security vulnerability. For effective fuzzing, the input must be both syntactically correct and uncommonly randomized for exceptions such as crashes, failing built-in code assertions, or potential memory leaks. In this work, we introduced system Deity which managed to resolve the conflict with innovative AST(Abstract Syntax Tree) [2] based tree mutation and generating methods. It leverages a high-level structural representation of intermediate process JavaScript code. Our evaluation demonstrates the effectiveness of Deity. For large-scale JavaScript engines (njs, mjs, Javascript-Core, ChakraCore, Espruino, Jerryscript) fuzzing, our results significantly show that Deity can improve code coverage and finding more deep rooted bugs (i.e., 35 new bugs, among which we discovered 21 new vulnerabilities with 3 CVEs assigned) over Superion and CodeAlchemist.","PeriodicalId":306112,"journal":{"name":"2019 IEEE 19th International Conference on Communication Technology (ICCT)","volume":"221 1","pages":"0"},"PeriodicalIF":0.0000,"publicationDate":"2019-10-01","publicationTypes":"Journal Article","fieldsOfStudy":null,"isOpenAccess":false,"openAccessPdf":"","citationCount":"2","resultStr":null,"platform":"Semanticscholar","paperid":null,"PeriodicalName":"2019 IEEE 19th International Conference on Communication Technology (ICCT)","FirstCategoryId":"1085","ListUrlMain":"https://doi.org/10.1109/ICCT46805.2019.8947153","RegionNum":0,"RegionCategory":null,"ArticlePicture":[],"TitleCN":null,"AbstractTextCN":null,"PMCID":null,"EPubDate":"","PubModel":"","JCR":"","JCRName":"","Score":null,"Total":0}
引用次数: 2
Abstract
Fuzzing [1] is a well-known technique which was employed to provide unexpected or random data as input to JavaScript engines in hopes of finding a security vulnerability. For effective fuzzing, the input must be both syntactically correct and uncommonly randomized for exceptions such as crashes, failing built-in code assertions, or potential memory leaks. In this work, we introduced system Deity which managed to resolve the conflict with innovative AST(Abstract Syntax Tree) [2] based tree mutation and generating methods. It leverages a high-level structural representation of intermediate process JavaScript code. Our evaluation demonstrates the effectiveness of Deity. For large-scale JavaScript engines (njs, mjs, Javascript-Core, ChakraCore, Espruino, Jerryscript) fuzzing, our results significantly show that Deity can improve code coverage and finding more deep rooted bugs (i.e., 35 new bugs, among which we discovered 21 new vulnerabilities with 3 CVEs assigned) over Superion and CodeAlchemist.