KR102132450B1 - 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치 - Google Patents

기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치 Download PDF

Info

Publication number
KR102132450B1
KR102132450B1 KR1020180129843A KR20180129843A KR102132450B1 KR 102132450 B1 KR102132450 B1 KR 102132450B1 KR 1020180129843 A KR1020180129843 A KR 1020180129843A KR 20180129843 A KR20180129843 A KR 20180129843A KR 102132450 B1 KR102132450 B1 KR 102132450B1
Authority
KR
South Korea
Prior art keywords
javascript
syntax tree
abstract syntax
sequential data
file
Prior art date
Application number
KR1020180129843A
Other languages
English (en)
Other versions
KR20200052433A (ko
Inventor
손수엘
차상길
이수영
김인성
김태규
Original Assignee
엘아이지넥스원 주식회사
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 엘아이지넥스원 주식회사, 한국과학기술원 filed Critical 엘아이지넥스원 주식회사
Priority to KR1020180129843A priority Critical patent/KR102132450B1/ko
Publication of KR20200052433A publication Critical patent/KR20200052433A/ko
Application granted granted Critical
Publication of KR102132450B1 publication Critical patent/KR102132450B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Abstract

기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치가 개시된다. 자바스크립트 해석 엔진 테스트 방법은, 자바스크립트 파일을 순차적 데이터로 가공하는 단계; 상기 순차적 데이터를 학습하는 단계; 상기 순차적 데이터를 학습한 모델을 이용하여 새로운 자바스크립트 파일을 생성하는 단계; 및 상기 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함할 수 있다.

Description

기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치{METHOD AND APPARATUS FOR TESTING JAVASCRIPT INTERPRETATION ENGINE USING MACHINE LEARNING}
아래의 설명은 자바스크립트 해석 엔진(JavaScript Interpretation Engine)을 테스팅 할 수 있는 방법 및 장치에 관한 것이다.
기계 학습(machine learning)은 통계적 기법을 이용하여 컴퓨터 시스템이 데이터를 학습할 수 있도록 하는 기술로써 기계 학습의 일종인 딥러닝(Deep Learning)은 영상 처리나 자연어 처리 등의 다양한 분야에 이용되고 있다(관련 문헌 [1], [2]).
[1] A. L. Samuel, "Some Studies in Machine Learning Using the Game of Checkers," IBM Journal of Research and Development, vol. 3, no. 3, pp. 210-229,1959.
[2] Y. LeCun, Y. Bengio, and G. Hinton. "Deep learning, nature", vol. 521, no. 7553, pp. 436-444, 2015.
딥러닝은 데이터 집합의 특성을 학습하는 데에 필요한 전문 지식을 최소화 시켜주고 학습되지 않은 데이터에 대해서도 일반화된 예측을 제공할 수 있다는 장점을 지닌다.
퍼즈 테스팅(Fuzz Testing)은 테스트 케이스를 자동으로 생성하여 대상 프로그램의 버그를 찾아내는 데에 이용되는 소프트웨어 테스트 기법으로써 대상 프로그램의 보안 관련 취약점을 찾아내는 데에 효율적으로 사용할 수 있는 것으로 알려져 있다(관련 문헌 [3], [4]).
[3] B. P. Miller, L. Fredriksen, and B. So, "An empirical study of the reliability of UNIX utilities", Communications of the ACM, vol. 33, no. 12, pp. 32-44, 1990.
[4] M. Sutton, A. Greene, and P. Amini, Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.
퍼즈 테스팅은 크게 주어진 문법을 기반으로 해당 문법에 맞는 새로운 테스트 케이스를 생성하는 방식과 주어진 입력을 기반으로 입력을 변형해가며 새로운 테스트 케이스를 생성하는 방식으로 구분할 수 있다.
하지만 주어진 자바스크립트 파일을 활용하여 퍼즈 테스팅을 하는 기존의 방법들은 랜덤 또는 경험적 방법에 의존하거나 데이터 집합에 없는 상황이 주어지는 경우에 정확한 예측을 할 수 없는 등의 한계점을 가지고 있다.
기계 학습을 이용하여 자바스크립트 파일의 구문론적 특성과 의미론적 특성을 체계적으로 학습시키고 학습한 모델을 활용하여 자바스크립트 해석 엔진에서 새로운 취약점을 찾아내는 것을 기술적 과제로 한다.
주어진 데이터 집합을 활용하여 퍼즈 테스팅을 하는 기존의 방법들이 랜덤 또는 경험적 방법에 의존하거나 데이터 집합에 없는 상황이 주어지는 경우에 정확한 예측을 할 수 없다는 어려움을 해결한다.
기계 학습을 이용해 자바스크립트 코드를 모델링해서 자바스크립트 해석 엔진을 테스팅할 수 있는 방법 및 장치를 제공한다.
컴퓨터로 구현되는 자바스크립트 해석 엔진(JavaScript Interpretation Engine) 테스트 방법에 있어서, 자바스크립트 파일을 순차적 데이터로 가공하는 단계; 상기 순차적 데이터를 학습하는 단계; 상기 순차적 데이터를 학습한 모델을 이용하여 새로운 자바스크립트 파일을 생성하는 단계; 및 상기 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함하는 자바스크립트 해석 엔진 테스트 방법을 제공한다.
일 측면에 따르면, 상기 가공하는 단계는, 자바스크립트 코드를 추상 구문 트리(Abstract Syntax Tree)로 파싱하는 단계; 및 상기 추상 구문 트리를 분할하여 순차적 데이터로 표현하는 단계를 포함할 수 있다.
다른 측면에 따르면, 상기 가공하는 단계는, 상기 파싱하는 단계 이전에, 자바스크립트 파일의 변수들의 식별자를 정규화하는 단계를 더 포함할 수 있다.
또 다른 측면에 따르면, 상기 표현하는 단계는, 각 추상 구문 트리의 깊이가 1이 되도록 분할하여 전위 순회(Preorder Traversal)하는 방식을 통해 상기 추상 구문 트리를 상기 순차적 데이터로 표현할 수 있다.
또 다른 측면에 따르면, 상기 학습하는 단계는, 기계 학습의 일종인 딥 러닝(deep learning)을 이용하여 자바스크립트 코드의 특성을 자바스크립트 문법을 구성하는 비단말 기호(Nonterminal Symbols), 단말 기호(Terminal Symbols), 생성 규칙(Production Rules) 사이의 관계로 모델링할 수 있다.
또 다른 측면에 따르면, 상기 생성하는 단계는, 상기 모델을 이용하여 새로운 순차적 데이터를 생성하는 단계; 및 상기 생성된 순차적 데이터를 다시 추상 구문 트리로 변환하여 최종 자바스크립트 파일을 생성하는 단계를 포함할 수 있다.
또 다른 측면에 따르면, 상기 테스트하는 단계는, 상기 생성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진에서 실행시켜 상기 자바스크립트 해석 엔진을 크래쉬(crash) 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장하는 단계를 포함할 수 있다.
컴퓨터로 구현되는 자바스크립트 해석 엔진 테스트 장치에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 자바스크립트 파일을 순차적 데이터로 가공하는 과정; 상기 순차적 데이터를 학습하는 과정; 상기 순차적 데이터를 학습한 모델을 이용하여 새로운 자바스크립트 파일을 생성하는 과정; 및 상기 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정을 처리하는 자바스크립트 해석 엔진 테스트 장치를 제공한다.
본 발명의 실시예들에 따르면, 자바스크립트 해석 엔진을 좀 더 효율적으로 테스팅할 수 있으며, 이를 통해 자바스크립트 해석 엔진의 취약점을 발견하여 보안성을 향상시킬 수 있다.
본 발명의 실시예들에 따르면, 데이터 집합에 존재하는 자바스크립트 파일의 특성을 활용해서 효과적인 테스팅을 하여 자바스크립트 해석 엔진의 보안성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 시스템이 수행할 수 있는 자바스크립트 해석 엔진 테스트 방법의 예를 도시한 순서도이다.
도 3은 본 발명의 일 실시예에 있어서 자바스크립트 파일 전처리 단계의 세부 과정의 일례를 도시한 것이다.
이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.
본 발명은 자바스크립트 해석 엔진(JavaScript Interpretation Engine)에 존재하는 알려지지 않은 새로운 취약점(Unknown Vulnerability)을 찾는 기술에 관한 것으로, 자바스크립트 파일에 존재하는 구문론적(syntactic) 특성과 의미론적(semantic) 특성을 기계 학습(Machine Learning)을 이용해 학습하여 새로운 자바스크립트 파일을 생성하는 자동화된 소프트웨어 테스팅 기법과 관련된 것이다.
본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 기계 학습을 이용하여 자바스크립트 코드를 모델링해서 자바스크립트 해석 엔진을 테스팅 할 수 있고 이를 통해 정확성, 효율성, 보안 등 여러 측면에 있어 상당한 장점들을 달성할 수 있다.
도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 예를 들어, 본 발명의 실시예들에 따른 자바스크립트 해석 엔진 테스트 장치가 도 1의 컴퓨터 시스템(100)을 통해 구현될 수 있다. 도 1에 도시한 바와 같이, 컴퓨터 시스템(100)은 도 2의 자바스크립트 해석 엔진 테스트 방법을 실행하기 위한 구성요소로서 프로세서(110), 메모리(120), 영구 저장 장치(130), 버스(140), 입출력 인터페이스(150) 및 네트워크 인터페이스(160)를 포함할 수 있다.
프로세서(110)는 자바스크립트 해석 엔진 테스트를 위한 구성요소로서 명령어들의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(110)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(110)는 예를 들어, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼 등에 포함될 수 있다. 프로세서(110)는 버스(140)를 통해 메모리(120)에 접속될 수 있다.
메모리(120)는 컴퓨터 시스템(100)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(120)는 예를 들어 랜덤 액세스 메모리(RAM: random access memory) 및/또는 다이내믹 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리(120)는 컴퓨터 시스템(100)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(120)는 예를 들어 자바스크립트 해석 엔진 테스트를 위한 명령어들을 포함하는 컴퓨터 시스템(100)의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(100)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(110)를 포함할 수 있다.
버스(140)는 컴퓨터 시스템(100)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(140)는 예를 들어 컴퓨터 시스템(100)의 컴포넌트들 사이에, 예를 들어 프로세서(110)와 메모리(120) 사이에 데이터를 운반할 수 있다. 버스(140)는 컴퓨터 시스템(100)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.
영구 저장 장치(130)는 (예를 들어, 메모리(120)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템(100)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치(130)는 컴퓨터 시스템(100) 내의 프로세서(110)에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 영구 저장 장치(130)는 예를 들어 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.
입출력 인터페이스(150)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 자바스크립트 해석 엔진 테스트를 위한 입력이 입출력 인터페이스(150)를 통해 수신될 수 있다.
네트워크 인터페이스(160)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(160)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 자바스크립트 해석 엔진 테스트를 위한 입력이 네트워크 인터페이스(160)를 통해 수신될 수 있다.
또한, 다른 실시예들에서 컴퓨터 시스템(100)은 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템(100)은 상술한 입출력 인터페이스(150)와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.
기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법을 설명하면 다음과 같다.
가장 빈번하게 사용되는 소프트웨어의 하나인 웹 브라우저에 탑재되는 자바스크립트 해석 엔진에 존재하는 취약점은 공격자로 하여금 원격으로 임의의 코드를 실행할 수 있도록 하기 때문에 그 파급력이 지대하다. 또한, 자바스크립트 해석 엔진은 지속적으로 새로운 기능이 추가되거나 성능 개선이 이루어지고 있어서 그 구조가 나날이 복잡해지고 있다. 이러한 이유로 자바스크립트 해석 엔진에 대한 자동화된 테스팅 방법은 점점 더 중요해지고 있어 자바스크립트 해석 엔진에 대한 자동화된 테스팅을 효율적으로 할 수 있는 방법이 필요하다.
이에, 본 발명은 데이터 집합에 존재하는 자바스크립트 파일의 특성을 활용해서 효과적인 테스팅을 하여 자바스크립트 해석 엔진의 보안성을 향상시킬 수 있는 기술이다.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 시스템이 수행할 수 있는 자바스크립트 해석 엔진 테스트 방법의 예를 도시한 순서도이다.
도 2를 참조하면, 본 발명에 따른 자바스크립트 해석 엔진 테스트 방법은 자바스크립트 파일을 학습 가능한 형태의 데이터로 가공하는 전처리 단계(S210), 가공된 자바스크립트 파일을 딥러닝을 이용하여 학습하는 학습 단계(S220), 학습된 모델을 이용해서 새로운 자바스크립트 파일을 생성하는 생성 단계(S230), 생성된 자바스크립트 파일을 자바스크립트 해석 엔진에 실행하여 취약점을 탐색하는 퍼징 단계(S240)를 포함한다. 상기한 모든 단계(S210 내지 S240)는 자동으로 진행된다.
본 발명에 따른 자바스크립트 해석 엔진 테스트 장치는 자바스크립트 해석 엔진(201)을 입력으로 하며 최종적으로 자바스크립트 해석 엔진(201)에 존재하는 취약점(202)을 반환한다.
자바스크립트 해석 엔진(201)은 테스트를 하고자 하는 자바스크립트 해석 엔진을 의미한다. 세계적으로 가장 많이 사용되는 자바스크립트 해석 엔진으로는 Google V8, Microsoft ChakraCore, Apple JavaScriptCore, Mozilla SpiderMonkey가 있으며 본 발명은 모든 자바스크립트 해석 엔진에 대해 적용 가능하다.
전처리 단계(S210)는 첫 번째 단계로 자바스크립트 파일을 학습 단계에서 이용할 수 있는 입력의 형태를 갖추도록 가공하는 과정을 의미한다.
도 3은 본 발명의 일 실시예에 있어서 자바스크립트 파일 전처리 단계의 세부 과정의 일례를 도시한 것이다.
도 3에 도시한 바와 같이, 전처리 단계(S210)는 자바스크립트 파일에서 사용자가 정의한 변수들의 식별자를 정규화하는 과정(S311), 자바스크립트 코드를 추상 구문 트리(Abstract Syntax Tree)로 파싱(parsing)하는 과정(S312), 추상 구문 트리를 조각 내어서 순차적 데이터로 표현하는 과정(S313)으로 이루어져 있다.
자바스크립트 코드를 추상 구문 트리 조각들의 순차적 데이터로 표현하는 것은 자바스크립트 코드에 존재하는 특성을 학습하기 위해 제시한 방법이다. 본 발명에서는 도 3의 예시와 같이 자바스크립트 코드를 순차적 데이터로 표현할 때에 각 추상 구문 트리 조각의 깊이가 1이 되도록 분할하여 전위 순회(Preorder Traversal)하는 방법을 사용한다.
다시 도 2를 참조하면, 학습 단계(S220)는 딥러닝을 이용하여 순차적 데이터를 학습하는 단계이다. 본 발명은 딥러닝을 이용해 자바스크립트 파일의 구문론적 특성과 의미론적 특성을 학습한 모델을 퍼즈 테스팅에 활용하는 새로운 알고리즘에 관한 것이다. 학습 단계(S220)는 딥러닝을 통해 자바스크립트 코드에 대해 일반화된 모델링을 수행할 수 있고, 특히 자바스크립트 코드의 특성을 자바스크립트 문법을 구성하는 비단말 기호(Nonterminal Symbols), 단말 기호(Terminal Symbols), 생성 규칙(Production Rules) 사이의 관계로 모델링할 수 있다. 학습 단계(S220)에서는 전방 전달 신경망(FNN, Feedforwad Neural Network)이나 LSTM(Long-Short Term Memory) 등 여러 딥러닝 모델을 활용할 수 있다. 즉, 학습 단계(S220)의 산출물은 자바스크립트 파일의 순차적 데이터를 학습한 언어 모델이다.
생성 단계(S230)는 학습된 언어 모델을 이용하여 새로운 자바스크립트 파일을 작성하는 단계이다. 먼저, 언어 모델을 이용해서 새로운 추상 구문 트리 조각의 순차적 데이터를 생성한다. 그리고, 완성된 순차적 데이터를 다시 추상 구문 트리로 변환하여 최종적으로 자바스크립트 파일을 작성한다. 생성 단계(S230)에서 자바스크립트 파일을 작성하는 과정은 전처리 단계(S210)에서 자바스크립트 파일을 순차적 데이터로 표현하는 과정의 역과정이라고 볼 수 있다.
퍼징 단계(S240)는 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정이다. 다시 말해, 퍼징 단계(S240)는 생성된 자바스크립트 파일을 자바스크립트 해석 엔진에 실행시킴으로써 취약점을 찾는 단계이다. 생성된 자바스크립트 파일 중에서 자바스크립트 해석 엔진을 크래쉬(crash) 내는 것들을 따로 모아 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장한다.
취약점(202)은 도 2의 모든 과정을 마치고 나온 최종 결과물로 자바스크립트 해석 엔진의 취약점을 나타낸다. 즉, 자바스크립트 해석 엔진을 크래쉬 내는 자바스크립트 파일들과 크래쉬의 콜 스택들의 모음이 포함된다.
본 발명은 자바스크립트 해석 엔진에 대한 자동화된 테스팅을 제공할 수 있고, 자바스크립트 코드의 추상 구문 트리를 순차적 데이터로 표현하여 모델링할 수 있으며, 특히 자바스크립트 코드의 모델링에 기계 학습을 적용할 수 있어 효율적인 엔진 테스팅 및 퍼징이 가능하다. 자바스크립트 해석 엔진에 대해 수집한 자바스크립트 파일의 특성에 대한 일반화된 모델링을 체계적으로 수행할 수 있고 수집한 자바스크립트 파일에 존재하지 않는 상황이 주어진 경우에도 효과적인 예측을 제공할 수 있다.
이처럼 본 발명의 실시예들에 따르면, 자바스크립트 해석 엔진을 좀 더 효율적으로 테스팅할 수 있으며, 이를 통해 자바스크립트 해석 엔진의 취약점을 발견하여 보안성을 향상시킬 수 있다. 그리고, 본 발명의 실시예들에 따르면, 데이터 집합에 존재하는 자바스크립트 파일의 특성을 활용해서 효과적인 테스팅을 하여 자바스크립트 해석 엔진의 보안성을 향상시킬 수 있다.
이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.
소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.
실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.
이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.
그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.

Claims (14)

  1. 컴퓨터로 구현되는 자바스크립트 해석 엔진(JavaScript Interpretation Engine) 테스트 방법에 있어서,
    자바스크립트 파일을 순차적 데이터로 가공하는 단계;
    상기 순차적 데이터를 학습하는 단계;
    상기 순차적 데이터를 학습한 모델을 이용하여 새로운 자바스크립트 파일을 생성하는 단계; 및
    상기 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함하며,
    상기 가공하는 단계는, 자바스크립트 코드를 추상 구문 트리(Abstract Syntax Tree)로 파싱하는 단계; 및 상기 추상 구문 트리를 추상 구문 트리 조각들로 분할하여 상기 추상 구문 트리 조각들의 순차적 데이터로 표현하는 단계를 포함하고,
    상기 표현하는 단계는, 각 추상 구문 트리의 깊이가 1이 되도록 분할하여 전위 순회(Preorder Traversal)하는 방식을 통해 상기 추상 구문 트리를 상기 추상 구문 트리 조각들의 순차적 데이터로 표현하며,
    상기 학습하는 단계는, 기계 학습의 일종인 딥 러닝(deep learning)을 이용하여 상기 자바스크립트 코드의 특성을 자바스크립트 문법을 구성하는 비단말 기호(Nonterminal Symbols), 단말 기호(Terminal Symbols), 생성 규칙(Production Rules) 사이의 관계로 모델링하며,
    상기 모델은 상기 추상 구문 트리 조각들의 순차적 데이터를 학습한 언어 모델이며,
    상기 생성하는 단계는, 상기 모델을 이용하여 새로운 순차적 데이터를 생성하는 단계; 및 상기 생성된 순차적 데이터를 다시 추상 구문 트리로 변환하여 최종 자바스크립트 파일을 생성하는 단계를 포함하는 것을 특징으로 하는 자바스크립트 해석 엔진 테스트 방법.
  2. 삭제
  3. 제1항에 있어서,
    상기 가공하는 단계는,
    상기 파싱하는 단계 이전에, 자바스크립트 파일의 변수들의 식별자를 정규화하는 단계
    를 더 포함하는 자바스크립트 해석 엔진 테스트 방법.
  4. 삭제
  5. 삭제
  6. 삭제
  7. 제1항에 있어서,
    상기 테스트하는 단계는,
    상기 생성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진에서 실행시켜 상기 자바스크립트 해석 엔진을 크래쉬(crash) 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장하는 단계
    를 포함하는 자바스크립트 해석 엔진 테스트 방법.
  8. 컴퓨터로 구현되는 자바스크립트 해석 엔진 테스트 장치에 있어서,
    메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
    상기 적어도 하나의 프로세서는,
    자바스크립트 파일을 순차적 데이터로 가공하는 과정;
    상기 순차적 데이터를 학습하는 과정;
    상기 순차적 데이터를 학습한 모델을 이용하여 새로운 자바스크립트 파일을 생성하는 과정; 및
    상기 생성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정을 처리하며,
    상기 가공하는 과정은, 자바스크립트 코드를 추상 구문 트리(Abstract Syntax Tree)로 파싱하는 과정, 및 상기 추상 구문 트리를 추상 구문 트리 조각들로 분할하여 상기 추상 구문 트리 조각들의 순차적 데이터로 표현하는 과정을 포함하고,
    상기 표현하는 과정은, 각 추상 구문 트리의 깊이가 1이 되도록 분할하여 전위 순회(Preorder Traversal)하는 방식을 통해 상기 추상 구문 트리를 상기 추상 구문 트리 조각들의 순차적 데이터로 표현하며,
    상기 학습하는 과정은, 기계 학습의 일종인 딥 러닝(deep learning)을 이용하여 상기 자바스크립트 코드의 특성을 자바스크립트 문법을 구성하는 비단말 기호(Nonterminal Symbols), 단말 기호(Terminal Symbols), 생성 규칙(Production Rules) 사이의 관계로 모델링하며,
    상기 모델은 상기 추상 구문 트리 조각들의 순차적 데이터를 학습한 언어 모델이며,
    상기 생성하는 과정은, 상기 모델을 이용하여 새로운 순차적 데이터를 생성하고, 상기 생성된 순차적 데이터를 다시 추상 구문 트리로 변환하여 최종 자바스크립트 파일을 생성하는 것을 특징으로 하는 자바스크립트 해석 엔진 테스트 장치.
  9. 삭제
  10. 제8항에 있어서,
    상기 가공하는 과정은,
    상기 파싱하는 과정 이전에, 자바스크립트 파일의 변수들의 식별자를 정규화하는 과정
    을 더 포함하는 자바스크립트 해석 엔진 테스트 장치.
  11. 삭제
  12. 삭제
  13. 삭제
  14. 제8항에 있어서,
    상기 테스트하는 과정은,
    상기 생성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진에서 실행시켜 상기 자바스크립트 해석 엔진을 크래쉬 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택과 함께 저장하는 단계
    를 포함하는 자바스크립트 해석 엔진 테스트 장치.
KR1020180129843A 2018-10-29 2018-10-29 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치 KR102132450B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180129843A KR102132450B1 (ko) 2018-10-29 2018-10-29 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180129843A KR102132450B1 (ko) 2018-10-29 2018-10-29 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20200052433A KR20200052433A (ko) 2020-05-15
KR102132450B1 true KR102132450B1 (ko) 2020-07-09

Family

ID=70679079

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180129843A KR102132450B1 (ko) 2018-10-29 2018-10-29 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치

Country Status (1)

Country Link
KR (1) KR102132450B1 (ko)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685314A (zh) * 2021-01-05 2021-04-20 广州知图科技有限公司 一种JavaScript引擎安全测试方法及测试系统

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034580A (zh) 2011-09-29 2013-04-10 西门子公司 模糊测试的方法、装置和系统
US20150309813A1 (en) 2012-08-31 2015-10-29 iAppSecure Solutions Pvt. Ltd A System for analyzing applications in order to find security and quality issues
KR101722856B1 (ko) * 2015-10-21 2017-04-04 엘에스산전 주식회사 프로그래밍 언어 기반의 plc 자동 테스트 장치
KR101858620B1 (ko) * 2017-01-10 2018-05-17 고려대학교 산학협력단 기계 학습을 이용한 자바스크립트 분석 장치 및 방법

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034580A (zh) 2011-09-29 2013-04-10 西门子公司 模糊测试的方法、装置和系统
US20150309813A1 (en) 2012-08-31 2015-10-29 iAppSecure Solutions Pvt. Ltd A System for analyzing applications in order to find security and quality issues
KR101722856B1 (ko) * 2015-10-21 2017-04-04 엘에스산전 주식회사 프로그래밍 언어 기반의 plc 자동 테스트 장치
KR101858620B1 (ko) * 2017-01-10 2018-05-17 고려대학교 산학협력단 기계 학습을 이용한 자바스크립트 분석 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Chen Chen 외, ‘A systematic review of fuzzing techniques', ScienceDirect, 2018.02*

Also Published As

Publication number Publication date
KR20200052433A (ko) 2020-05-15

Similar Documents

Publication Publication Date Title
US11526673B2 (en) Named entity disambiguation using entity distance in a knowledge graph
Hegedüs et al. A model-driven framework for guided design space exploration
US11720346B2 (en) Semantic code retrieval using graph matching
CN110058922B (zh) 一种提取机器学习任务的元数据的方法、装置
US11023295B2 (en) Utilizing a neural network model to determine risk associated with an application programming interface of a web application
US20220014555A1 (en) Distributed automated planning and execution platform for designing and running complex processes
US20150121335A1 (en) Consolidating and reusing portal information
US20210297453A1 (en) Pathfinding in two and three-dimensional spaces using an automated planning service
US11573790B2 (en) Generation of knowledge graphs based on repositories of code
CN112783508B (zh) 文件的编译方法、装置、设备以及存储介质
KR102132450B1 (ko) 기계 학습을 이용한 자바스크립트 해석 엔진 테스트 방법 및 장치
KR102132449B1 (ko) 자바스크립트 파일 재작성을 통한 자바스크립트 해석 엔진 테스트 방법 및 장치
CN111898766B (zh) 基于自动机器学习的以太坊燃料限制预测方法及装置
JP2017522639A5 (ko)
CN112748953A (zh) 基于神经网络模型的数据处理方法、装置及电子设备
US20220006837A1 (en) Enhanced cybersecurity using an automated planning service
KR102117165B1 (ko) 바이너리 분석을 위한 중간 언어 테스트 방법 및 장치
McLeod A framework for distributed deep learning layer design in python
US11074508B2 (en) Constraint tracking and inference generation
CN112633516A (zh) 性能预测和机器学习编译优化方法及装置
Park et al. Interworking technology of neural network and data among deep learning frameworks
US20230195427A1 (en) Dialogue- and machine learning-facilitated code development
US9235382B2 (en) Input filters and filter-driven input processing
US11934401B2 (en) Scalable count based interpretability for database artificial intelligence (AI)
CN117114087B (zh) 故障预测方法、计算机设备和可读存储介质

Legal Events

Date Code Title Description
E701 Decision to grant or registration of patent right