자바스크립트 엔진에 대한 시맨틱 보존적 변이기반 퍼징
Semantics-Preserving Mutation-Based Fuzzing on JavaScript Interpreters
0
조회
0
다운로드
0
인용
0
참고문헌
키워드
초록
퍼징은 입력값을 무작위로 생성해 소프트웨어를 테스팅하는 방법으로, 처음 고안된 이래로 다양한 방식의 퍼징이연구되고 있다. 그중 변이기법을 적용한 퍼징은 확률에 따른 비트 반전이나 특별 값 치환과 같이 비교적 간단한 접근법을 사용함에도, 많은 버그를 발견해온 만큼 효율적인 방법이라고 할 수 있다. 하지만 인터프리터는 문법, 시맨틱이 올바른 입력값을 요구하기 때문에 일반적인 변이기법을 적용하기에는 어려움이 있다. 이에 본 연구에서는 동적데이터 흐름 분석을 통해 변이기법을 인터프리터 퍼징에 적용할 수 있는 방법에 대해 제시하고자 한다. 본 연구에서제시하는 JMFuzzer는 문법, 시맨틱의 올바름을 고려해 자바스크립트 인터프리터에서 오류 없이 정상적으로 동작하는 다양한 유형의 테스트케이스를 생성할 수 있다. 최종적으로 본 연구에서는 최신 버전의 자바스크립트 인터프리터에서 알려지지 않은 취약점들을 찾았으며, 이를 각 회사에 제보했다.
Abstract
Fuzzing is a method of testing software by randomly generating test cases. Since its introduction, a variety of fuzzingtechniques have been studied. Among them, mutation-based fuzzing is an efficient method that finds real-world bugs eventhough it uses a simple approach such as probabilistic bit-flipping and character substitution. However, the interpreter fuzzinghas difficulty in applying general mutation techniques because the interpreter requires grammar and semantic correctnessinput values. In this paper, we present a novel mutation-based fuzzing on JavaScript interpreters with a dynamic data flowanalysis. To this end, we implement JMFuzzer that can generate various types of mutated test cases that operate normallywithout runtime errors in JavaScript interpreter considering syntax and semantics. As a result, we found numerous unknownvulnerabilities in the latest JavaScript interpreters. We reported all of them to the vendors.
참고문헌 (23)
- "ChakraCore Just-In-Time bugs" (2019)[URL]
- "CVE-2018-0834 Patch Commit" (2019)[URL]
- "CVE-2018-0837 Patch Commit" (2019)[URL]
- "CVE-2018-0840 Patch Commit" (2019)[URL]
- "Mozilla Security funfuzz" (2019)[URL]
- Christian Holler, "Fuzzing with code fragments", Proceedings of the USENIX Security Symposium, pp.445~458 (2012)
- HyungSeok Han, "CodeAlchemist:Semantics-aware Code Generation to Find Vulnerabilities in JavaScript Engines", Proceedings of the Network and Distributed System Security Symposium (2019)
- Suyoung Lee, "Montage: A Neural Network Language Model-Guided JavaScript Fuzzer", Proceedings of the USENIX Security Symposium (2020)
- The art, science, and engineering of fuzzing: A survey, "Valentin J. M. Manès", ~ (2019)
- "Basic Fuzzing Framework" (2019)[URL]
- "radamsa" (2019)[URL]
- Marcel Böhme, "Directed greybox fuzzing", Proceedings of the ACM Conference on Computer and Communications Security, pp.2329~2344 (2017)
- Shuitao Gan, "CollAFL:Path sensitive fuzzing", Proceedings of the IEEE Symposium on Security and Privacy, pp.660~677 (2018)
- "American Fuzzy Lop" (2019)[URL]
- S. K. Cha, "Program-adaptive mutational fuzzing", Proceedings of the IEEE Symposium on Security and Privacy, pp.725~741 (2015)
- A. Rebert, "Optimizing seed selection for fuzzing", Proceedings of the USENIX Security Symposium, pp.861~875 (2014)
- Samuel Groß, "FuzzIL: Coverage Guid ed Fuzzing for JavaScript Engines", Master, pp.2018
- J. Wang, "Skyfire: Data-driven seed generation for fuzzing", Proceedings of the IEEE Symposium on Security and Privacy, pp.579~594 (2017)
- J. Patra, "Leaerning to fuzz: Application-independent fuzz testing with probabilistic, generative models of input data", TUDarmstadt, Tech. Rep. TUD-CS-2016-14664, ~ (2016)
- S. Veggalam, "IFuzzer: An evolutionary int erprter fuzzer using genetic programm ing", Proceedings of the European Symposium on Research in Computer Security, pp.581~601 (2016)
- "Esprima" (2019)[URL]
- "ECMAScript 2015 language specification" (2015)[URL]
- "Test262 ECMAScript conformance test suite" (2019)[URL]
