[논문 리뷰] Montage: A Neural Network Language Model-Guided JavaScript Engine Fuzzer
Montage는 AST 조각으로 학습된 NNLM을 사용해 JS 엔진의 퍼징을 안내하고, 회귀 테스트를 변이시켜 최신 엔진들에서 새로운 취약점과 CVE를 발견합니다.
JavaScript (JS) engine vulnerabilities pose significant security threats affecting billions of web browsers. While fuzzing is a prevalent technique for finding such vulnerabilities, there have been few studies that leverage the recent advances in neural network language models (NNLMs). In this paper, we present Montage, the first NNLM-guided fuzzer for finding JS engine vulnerabilities. The key aspect of our technique is to transform a JS abstract syntax tree (AST) into a sequence of AST subtrees that can directly train prevailing NNLMs. We demonstrate that Montage is capable of generating valid JS tests, and show that it outperforms previous studies in terms of finding vulnerabilities. Montage found 37 real-world bugs, including three CVEs, in the latest JS engines, demonstrating its efficacy in finding JS engine bugs.
연구 동기 및 목표
- JS 엔진 취약점을 탐지하기 위해 CVE 및 회귀 테스트의 패턴을 활용한 NNLM의 활용을 고무한다.
- JS AST의 조각 기반 표현을 제안하여 구문적‧의미적 관계에서 신경망 언어 모델을 학습한다.
- NNLM이 제시한 조각들로 회귀 테스트를 변이시켜 실행 가능한 JS 테스트를 생성하는 워크플로를 개발한다.
- ChakraCore 및 현대 엔진에서 취약점 발견을 위해 Montage를 최첨단 퍼저와 비교 평가한다.
제안 방법
- JS AST를 깊이 1인 조각 시퀀스로 변환하여 NNLM를 학습시킨다.
- 프래그먼트 시퀀스와 AST 맥락을 주면 다음 프래그먼트를 예측하도록 LSTM 기반 모델을 훈련한다.
- NNLM이 제시한 조각으로 하위 트리를 대체하여 시드 회귀 테스트를 변이시키고 참조 오류를 해결한다.
- 여러 차례의 72시간 퍼징 캠페인을 실행하고 발견된 버그를 CodeAlchemist, jsfunfuzz, IFuzzer와 비교하여 효과를 측정한다.
- 몽타주의 조각 기반 NNLM 접근법을 랜덤, 마코프, 문자/토큰 수준 NNLM 기준선과 비교한다.
실험 결과
연구 질문
- RQ1NNLM-가이드 조각화가 회귀 테스트에서 새로운 JS 엔진 취약점으로 이어지는 패턴을 드러낼 수 있는가?
- RQ2조각이 구문적 및 의미적 관계를 포착하여 전통적 접근법보다 퍼징 효과를 향상시키는가?
- RQ3주요 JS 엔진 전반에서 Montage가 실제 버그와 CVE를 발견하는 데 얼마나 효과적인가?
- RQ4JS 퍼징에서 조각 사용이 전통적인 토큰 기반 또는 문법 기반 생성에 비해 어떤 영향을 미치는가?
주요 결과
- Montage는 ChakraCore 1.4.1에서 다섯 차례의 72시간 캠페인에 걸쳐 133개의 버그를 발견했으며 그 중 15건은 보안 버그이다.
- 보안 버그 중 Montage는 CodeAlchemist, jsfunfuzz, IFuzzer가 각각 발견하지 못한 9개, 12개, 12개의 버그를 발견했다.
- Montage는 ChakraCore, JavaScriptCore, 및 V8에서 37개의 고유 버그를 발견했고 그 중 보안 버그도 세 건 포함된다.
- 37개 중 34개는 ChakraCore에서 발견되었고 나머지는 JavaScriptCore와 V8에서 발견됐다.
- 보안 버그 중 여러 CVE를 Montage가 발견하여 실제 엔진에서의 효과를 입증했다.
더 나은 연구,지금 바로 시작하세요
연구 설계부터 논문 작성까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.