JavaScript engine vulnerabilities pose a significant threat to web browser security. Although research on fuzzing JavaScript engines is active, it often overlooks semantic constraints of JavaScript, execution arguments of engines, and fails to test new features in JavaScript specifications. To address these issues, this paper proposes aggressive mutation learning for JavaScript fuzzers, dynamic execution option testing, and a decomposition method for testing new features in Test262. Applying these methods to fuzz V8 and JavaScriptCore resulted in 1.3% and 7.6% more accurate test cases, respectively, compared to previous studies, and additionally uncovered 5 new vulnerabilities not identified in prior research.
JavaScript 엔진 취약점은 웹 브라우저의 보안을 위협하는 중요한 요소이다. 이러한 취약점을 찾아내기 위해 자바스크립트 엔진을 퍼징하는 연구가 활발히 진행되고 있지만, 자바스크립트의 의미적 제약과 자바스크립트 엔진의 실행 인자를 고려하지 않으며 자바스크립트 명세의 신규 기능을 테스트하지 못하는 등의 문제점이 존재한다. 이를 해결하기 위해 본 논문에서는 자바스크립트 퍼저의 공격적 변이 학습, 동적 실행 옵션 테스트, 그리고 자바스크립트 명세의 신규 기능 테스트를 위한 Test262 분해 방법을 제안한다. 실제로 이러한 방식을 적용하여 V8과 JavaScriptCore를 대상으로 퍼징을 수행한 결과, 기존 연구와 비교하여 각각 1.3%, 7.6% 더 정확한 테스트케이스를 생성함과 동시에 기존 연구에서 발견하지 못한 5개의 신규 취약점을 추가로 발견하였다.