본문 바로가기
KERD
논문KCI 등재

최적화 컴파일된 자바스크립트 함수에 대한 최적화 해제 회피를 이용하는 런타임 가드 커버리지 유도 퍼저

Runtime-Guard Coverage Guided Fuzzer Avoiding Deoptimization for Optimized Javascript Functions

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

자바스크립트 엔진은 주로 웹 브라우저에 적재되어 웹 페이지를 표시하는 여러 기능 중 자바스크립트 코드를 입력으로 받아 처리하는 모듈이다. 자바스크립트 엔진 내 취약점은 종단 사용자의 시스템 보안을 위협할 수 있어 많은퍼징 테스트 연구가 수행되었다. 그중 일부 연구는 자바스크립트 엔진 내 테스트 커버리지를 유도하는 방식으로 퍼징 효율을 높였으나, 최적화되어 동적으로 생성된 기계어 코드에 대한 커버리지 유도 퍼징은 시도되지 않았다. 최적화된 자바스크립트 코드는 예외적인 흐름 발생 시 코드를 해제하는 런타임 가드의 기능으로 인해 퍼징을 통한 충분한 반복 테스트가 어렵다. 본 논문은 이러한 문제점을 해결하기 위해 최적화 해제를 회피하여 최적화된 기계어 코드에 대해 퍼징 테스트를 수행하는 방법을 제안한다. 또한, 동적 바이너리 계측 방식으로 수행된 런타임 가드의 커버리지를 계측하고 커버리지 증가를 유도하는 방식을 제안한다. 실험을 통해, 본 연구가 제안하는 방식이 런타임 가드커버리지, 시간당 테스트 횟수의 두가지 척도에서 기존의 방식보다 뛰어남을 보인다.

Abstract

The JavaScript engine is a module that receives JavaScript code as input and processes it, among many functions that areloaded into web browsers and display web pages. Many fuzzing test studies have been conducted as vulnerabilities inJavaScript engines could threaten the system security of end-users running JavaScript through browsers. Some of them haveincreased fuzzing efficiency by guiding test coverage in JavaScript engines, but no coverage guided fuzzing of optimized,dynamically generated machine code was attempted. Optimized JavaScript codes are difficult to perform sufficient iterativetesting through fuzzing due to the function of runtime guards to free the code in the event of exceptional control flow. Tosolve these problems, this paper proposes a method of performing fuzzing tests on optimized machine code by avoidingdeoptimization. In addition, we propose a method to measure the coverage of runtime-guards by the dynamic binaryinstrumentation and to guide increment of runtime-guard coverage. In our experiment, our method has outperformed theexisting method at two measures: runtime coverage and iteration by time.

참고문헌 (20)

  1. S. GROß, "FuzzIL: Coverage Guided Fuzzing for JavaScript Engines", Ph.D., pp.2018
  2. D. Jang, "SafeDispatch: Securing C++ Virtual Calls from Memory Corruption Attacks", NDSS Symposium 2014 (2014)
  3. G. A. Perez, "A hybrid just-in -time compiler for android: comparing JIT types and the result of cooperation", Proceedings of the 2012 international conference on Compilers, architectures and synthesis for embed -ded systems, pp.41~51 (2012)
  4. "american fuzzy lop" (2020)[URL]
  5. C. Holler, "Fuzzing with code fragments", Proceedings of the 21st USENIX Security Symposium, pp.445~458 (2012)
  6. "fuzzilli" (2020)[URL]
  7. Hyuk-woo Park, "Work-in-progress:advanced ahead-of-time compilation for javascript engine", Proceeding of the 2017 International Conference on Compilers, Architectures and Synthesis For Embedded Systems, pp.1~2 (2017)
  8. "funfuzz" (2020)[URL]
  9. "domato" (2020)[URL]
  10. P. Godefroid, "Grammar-based whitebox fuzzing", Proceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation, pp.206~215 (2008)
  11. "CVE-2019-5782" (2020)[URL]
  12. "v8" (2020)[URL]
  13. 이민수, "바이너리 분석도구 효율성 평가를 위한 Instrumentation 성능 측정기법", 정보보호학회논문지, 27(6), pp.1331~1345 (2017), 한국정보보호학회[DOI]
  14. G. Southern, "Overhead of deoptimization checks in the V8javascript engine", IEEE International Symposium on Workload Characterization (IISWC), pp.1~10 (2016)
  15. N. K. Madhukar, "Server-side type profiling for optimizing client-side JavaScript engines", ACM SIGPLAN Notices, 51(2), pp.140~153 (2015)
  16. B. Michael, "SPUR: a trace-based JIT compiler for CIL", Proceedings of the ACM international conference on Object oriented programming systems languages and applications, pp.708~725 (2010)
  17. M. Yusuf, "On-stack replacement to improve JIT-based obfuscation a preliminary study", Proceedings of the 2nd International Japan-Egypt Conference on Electronics, Communications and Computers, pp.94~99 (2014)
  18. J. Wang, "Superion: Grammar-Aware Greybox Fuzzing", Proceedings of the 41st IEEE, 2019, 724~735
  19. "Clang 11 documentation" (2020)[URL]
  20. "chromium bug 944062" (2020)[URL]

관련 논문AI추천

이 간행물의 다른 논문 (18건)