연구 소식

Montage : 인공신경망 언어 모델을 통한 JavaScript 엔진의 취약점 찾기
작성일2020-04-27 03:06:37

Montage : 인공신경망 언어 모델을 통한 JavaScript 엔진의 취약점 찾기

 

많은 사람이 웹 브라우저를 사용함에 따라 공격자들은 파급력이 큰 웹 브라우저에서 취약점을 찾기 위해서 끊임없이 노력하고 있다. 그중에서도 웹 브라우저의 JavaScript 엔진에 존재하는 취약점은 정교한 공격에 사용될 수 있는 만큼 많은 공격자의 공격 대상이 되고 있다. 따라서 이러한 취약점을 사전에 찾아내기 위해서 우리 학과 손수엘 교수와 차상길 교수의 연구팀은 공동으로 연구를 진행하여 JavaScript 엔진에 존재하는 취약점을 찾는 Montage라는 도구를 개발하였다. 취약점을 공격하는 JavaScript 코드 사이에 유사성이 있다는 점에 착안하여, Montage는 JavaScript 코드를 인공신경망 기반의 언어 모델에 학습시키고, 이후에 모델의 도움을 받아 시드 JavaScript 코드를 변형하는 방식으로 기존의 연구보다 더 많은 버그를 찾을 수 있었다.

그림 1 Montage의 개요

 

그림 1과 같이 Montage는 총 세 단계에 걸쳐 동작한다. 첫 번째 단계에서 Montage는 그림 2와 같이 JavaScript 코드의 AST를 전위 순회하면서, 깊이가 1인 AST 조각의 시퀀스를 추출하여 학습에 사용될 데이터를 준비한다. 두 번째 단계에서는 추출된 AST 조각의 시퀀스를 LSTM 모델에 학습시켜 주어진 시퀀스 다음에 올 AST 조각을 예측할 수 있도록 한다. 마지막 세 번째 단계에서는 시드 JavaScript 코드의 subtree 하나를 무작위로 잘라낸 후에, LSTM 모델에 질의하면서 잘라낸 공간을 AST 조각으로 다시 채워 넣는 과정을 통해 새로운 코드를 생성한다.

 

그림 2 AST 조각 시퀀스의 예시

 

기존의 연구와 Montage의 차별점은 취약점을 공격하는 코드 사이에 유사성을 인공신경망을 통해 새로운 방식으로 모델링하였다는 데에 있다. 코드를 인공신경망을 통하여 모델링하기 위해서 지금까지 널리 사용되던 방식은 문자 수준에서 코드를 학습하는 것이었다. 하지만 이러한 방식은 대부분 Syntax error가 존재하는 코드를 생성하여 JavaScript 엔진에 존재하는 버그를 찾아내는데 한계점이 있었다. 이를 해결하기 위해서 Montage는 JavaScript 코드를 AST 조각 수준에서 순차적 데이터로 표현하여 학습함으로써 Syntax가 유효한 코드를 생성할 수 있었고, 그 결과 Chrome, Edge, Safari 브라우저에서 3개의 CVE를 포함하여 총 37개의 새로운 버그를 찾았다.

이러한 성과를 인정받아 본 연구는 “Montage: A Neural Network Language Model-Guided JavaScript Engine Fuzzer”라는 제목으로 2020 USENIX Security에 기재될 예정이며 자세한 논문은 이 링크 (https://leeswimming.com/papers/lee-sec20.pdf)를 통해 확인할 수 있다.