KR102132449B1 - Method and apparatus for testing javascript interpretation engine based on rewriting - Google Patents

Method and apparatus for testing javascript interpretation engine based on rewriting Download PDF

Info

Publication number
KR102132449B1
KR102132449B1 KR1020180129656A KR20180129656A KR102132449B1 KR 102132449 B1 KR102132449 B1 KR 102132449B1 KR 1020180129656 A KR1020180129656 A KR 1020180129656A KR 20180129656 A KR20180129656 A KR 20180129656A KR 102132449 B1 KR102132449 B1 KR 102132449B1
Authority
KR
South Korea
Prior art keywords
javascript
attribute
rewriting
file
analysis engine
Prior art date
Application number
KR1020180129656A
Other languages
Korean (ko)
Other versions
KR20200048033A (en
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 KR1020180129656A priority Critical patent/KR102132449B1/en
Publication of KR20200048033A publication Critical patent/KR20200048033A/en
Application granted granted Critical
Publication of KR102132449B1 publication Critical patent/KR102132449B1/en

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

Abstract

자바스크립트 파일 재작성을 통한 자바스크립트 해석 엔진 테스트 방법 및 장치가 개시된다. 자바스크립트 해석 엔진 테스트 방법은, 자바스크립트 파일을 수집하는 단계; 상기 수집된 자바스크립트 파일을 변형하여 재작성하는 단계; 및 상기 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함할 수 있다.Disclosed is a method and apparatus for testing a JavaScript interpretation engine through rewriting a JavaScript file. The JavaScript interpretation engine test method includes: collecting a JavaScript file; Modifying and rewriting the collected JavaScript file; And testing the JavaScript interpretation engine using the rewritten JavaScript file.

Description

자바스크립트 파일 재작성을 통한 자바스크립트 해석 엔진 테스트 방법 및 장치{METHOD AND APPARATUS FOR TESTING JAVASCRIPT INTERPRETATION ENGINE BASED ON REWRITING}METHOD AND APPARATUS FOR TESTING JAVASCRIPT INTERPRETATION ENGINE BASED ON REWRITING}

아래의 설명은 자바스크립트 해석 엔진(JavaScript Interpretation Engine)을 테스팅 할 수 있는 방법 및 장치에 관한 것이다.The following description relates to a method and apparatus for testing a JavaScript Interpretation Engine.

퍼즈테스팅(Fuzz Testing) 혹은 퍼징(Fuzzing)은 소프트웨어 테스트 케이스를 무작위로 생성하는 기술로 이를 통해 대상 프로그램에 존재하는 취약점을 찾아내는 데에 매우 효율적인 기법으로 알려져 있다(관련 문헌 [1], [2]).Fuzz testing or fuzzing is a technique that randomly generates software test cases and is known as a very effective technique for finding vulnerabilities in target programs through this (related documents [1], [2]) ).

[1] 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.[1] 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.

[2] M. Sutton, A. Greene, and P. Amini, Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.[2] M. Sutton, A. Greene, and P. Amini, Fuzzing: Brute Force Vulnerability Discovery. Addison-Wesley Professional, 2007.

퍼징은 테스트 케이스를 생성하는 방식에 따라 크게 두 가지로 구분되는데, 주어진 모델(예를 들면, 자바스크립트의 문법)을 기반으로 테스트케이스를 생성하는 문법기반 퍼징과, 주어진 입력(예를 들면, 자바스크립트 파일)을 기반으로 입력을 변형하여 새로운 테스트케이스를 생성하는 변형기반 퍼징이 그 예이다.Fuzzing is largely divided into two types according to the method of generating a test case, based on a given model (e.g., JavaScript grammar), grammar-based fuzzing that generates a test case, and a given input (e.g., Java) An example is transformation-based fuzzing that creates a new test case by transforming input based on a script file).

자바스크립트 해석 엔진의 경우 문법이나 타입 정보가 조금만 어긋나더라도 실행이 중단되기 때문에 입력 포맷에 매우 예민하다(sensitive)고 할 수 있다. 랜덤기반의 퍼징 기술로 자바스크립트 해석 엔진에 대한 테스트케이스를 생성하면 많은 경우 문법 에러나 타입 에러가 발생하는 테스트만을 생성하게 된다. 하지만, 취약점을 찾기 위해서는 자바스크립트 엔진의 깊숙한 곳까지 실행을 해야만 한다. 이를 위해서 문법 에러나 타입 에러가 발생하지 않는 자바스크립트 파일을 생성하는 것은 매우 중요하다.In the case of the JavaScript interpretation engine, even if the syntax or type information is slightly misaligned, execution is stopped, so it can be said to be very sensitive to the input format. When a test case for a JavaScript analysis engine is generated with a random-based fuzzing technique, in many cases, only tests that generate grammar errors or type errors are generated. However, to find the vulnerability, you have to run deep into the JavaScript engine. For this, it is very important to create a JavaScript file that does not generate syntax errors or type errors.

자바스크립트 파일 생성을 통한 변형기반 퍼징의 단점에 대하여 해결책을 제공하는 것을 기술적 과제로 한다.It is a technical task to provide a solution to the disadvantages of transformation-based fuzzing through JavaScript file generation.

자바스크립트 파일 생성을 통한 변형기반 퍼징이 가지고 있는 타입 에러를 체계적으로 해결하지 못한다는 어려움을 해결한다.It solves the difficulty of systematically solving the type error of transformation-based fuzzing through JavaScript file generation.

자바스크립트 파일 재작성을 통해 문법 에러뿐만 아니라 타입 에러도 체계적으로 해결하면서 자바스크립트 해석 엔진을 효율적으로 테스팅 할 수 있는 방법 및 장치를 제공한다.It provides a method and apparatus for efficiently testing the JavaScript interpretation engine while systematically solving not only grammatical errors but also type errors through rewriting of JavaScript files.

컴퓨터로 구현되는 자바스크립트 해석 엔진(JavaScript Interpretation Engine) 테스트 방법에 있어서, 자바스크립트 파일을 수집하는 단계; 상기 수집된 자바스크립트 파일을 변형하여 재작성하는 단계; 및 상기 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함하는 자바스크립트 해석 엔진 테스트 방법을 제공한다.A computer-implemented Javascript Interpretation Engine test method comprising: collecting a JavaScript file; Modifying and rewriting the collected JavaScript file; And testing the JavaScript analysis engine using the rewritten JavaScript file.

일 측면에 따르면, 상기 수집하는 단계는, 오픈소스로부터 자바스크립트 파일을 수집할 수 있다.According to one aspect, the collecting step may collect a JavaScript file from open source.

다른 측면에 따르면, 상기 재작성하는 단계는, 상기 수집된 자바스크립트 파일을 오브젝트의 속성 참조, 속성 설정, 속성 호출에 따라 재작성할 수 있다.According to another aspect, in the rewriting, the collected JavaScript file may be rewritten according to an object's attribute reference, attribute setting, and attribute call.

또 다른 측면에 따르면, 상기 재작성하는 단계는, 일정 확률로 오브젝트가 가지고 있는 다른 속성을 참조하도록 하는 속성 참조에 대한 재작성 방식과, 일정 확률로 오브젝트가 가지고 있는 다른 속성을 재설정하도록 하는 속성 설정에 대한 재작성 방식, 및 일정 확률로 오브젝트가 가지고 있는 다른 호출 가능한 속성을 호출하도록 하는 속성 호출에 대한 재작성 방식을 통해 상기 수집된 자바스크립트 파일을 재작성할 수 있다.According to another aspect, the rewriting step includes rewriting a property reference to refer to another attribute of the object with a certain probability, and setting an attribute to reset another attribute of the object with a certain probability. The collected JavaScript file may be rewritten through a rewriting method for and a rewriting method for an attribute call that has a certain probability to call other callable attributes of the object.

또 다른 측면에 따르면, 상기 테스트하는 단계는, 상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 상기 자바스크립트 해석 엔진에 존재하는 버그를 실행시키는 자바스크립트 파일을 반환하는 단계를 포함할 수 있다.According to another aspect, the testing may include executing the rewritten JavaScript file on the JavaScript interpretation engine to return a JavaScript file executing a bug existing in the JavaScript interpretation engine. have.

또 다른 측면에 따르면, 상기 테스트하는 단계는, 상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 상기 재작성된 자바스크립트 파일 중에서 상기 자바스크립트 해석 엔진을 크래쉬(crash) 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장하는 단계를 포함할 수 있다.According to another aspect, the testing step may include executing the rewritten JavaScript file on the JavaScript interpretation engine to recall a JavaScript file that crashes the JavaScript interpretation engine among the rewritten JavaScript files. The JavaScript parsing engine may include saving the crash stack along with the call stack.

컴퓨터로 구현되는 자바스크립트 해석 엔진 테스트 장치에 있어서, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 자바스크립트 파일을 수집하는 과정; 상기 수집된 자바스크립트 파일을 변형하여 재작성하는 과정; 및 상기 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정을 처리하는 자바스크립트 해석 엔진 테스트 장치를 제공한다.A computer-implemented JavaScript interpretation engine test apparatus, comprising: at least one processor configured to execute computer readable instructions contained in memory, the at least one processor comprising: collecting a JavaScript file; Modifying and rewriting the collected JavaScript file; And a JavaScript analysis engine test apparatus that processes a process of testing the JavaScript analysis engine using the rewritten JavaScript file.

본 발명의 실시예들에 따르면, 자바스크립트 해석 엔진을 좀 더 효율적으로 테스팅할 수 있으며, 이를 통해 자바스크립트 해석 엔진의 취약점을 발견하여 보안성을 향상시킬 수 있다.According to embodiments of the present invention, the JavaScript interpretation engine can be tested more efficiently, and through this, the vulnerability of the JavaScript interpretation engine can be discovered to improve security.

본 발명의 실시예들에 따르면, 자바스크립트 해석 엔진의 효율적인 퍼징 및 테스팅을 통하여 자바스크립트 엔진을 포함한 브라우저 보안 및 사이버보안 향상에 기여할 수 있다.According to embodiments of the present invention, it is possible to contribute to improving browser security and cyber security including the JavaScript engine through efficient fuzzing and testing of the JavaScript interpretation engine.

도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다.
도 2는 본 발명의 일 실시예에 따른 컴퓨터 시스템이 수행할 수 있는 자바스크립트 해석 엔진 테스트 방법의 예를 도시한 순서도이다.
도 3은 본 발명의 일 실시예에 있어서 자바스크립트 파일 재작성 예시를 도시한 것이다.
1 is a block diagram illustrating an example of an internal configuration of a computer system according to an embodiment of the present invention.
2 is a flowchart illustrating an example of a JavaScript analysis engine test method that can be performed by a computer system according to an embodiment of the present invention.
3 illustrates an example of rewriting a JavaScript file according to an embodiment of the present invention.

이하, 본 발명의 실시예를 첨부된 도면을 참조하여 상세하게 설명한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the accompanying drawings.

본 발명은 자바스크립트 해석 엔진(JavaScript Interpretation Engine)에 존재하는 알려지지 않은 취약점(Unknown Vulnerability)을 찾는 기술에 관한 것으로, 주어진 자바스크립트 파일의 구조적인 특성을 기반으로 새로운 시맨틱(New Semantics)을 갖는 자바스크립트 파일을 생성하는 소프트웨어 테스팅 기법에 관련된 것이다.The present invention relates to a technique for finding an unknown vulnerability existing in a JavaScript Interpretation Engine, and JavaScript having new semantics based on the structural characteristics of a given JavaScript file. It is related to software testing techniques that generate files.

본 명세서에서 구체적으로 개시되는 것들을 포함하는 실시예들은 자바스크립트 파일 재작성을 통해 문법 에러뿐만 아니라 타입 에러도 체계적으로 해결하면서 자바스크립트 해석 엔진을 테스팅 할 수 있고 이를 통해 정확성, 효율성, 보안 등 여러 측면에 있어 상당한 장점들을 달성할 수 있다.Embodiments including those specifically disclosed herein can test the JavaScript interpretation engine while systematically solving not only grammatical errors but also type errors through rewriting of JavaScript files, thereby enabling various aspects such as accuracy, efficiency, and security. Significant advantages can be achieved.

도 1은 본 발명의 일 실시예에 있어서 컴퓨터 시스템의 내부 구성의 일례를 설명하기 위한 블록도이다. 예를 들어, 본 발명의 실시예들에 따른 자바스크립트 해석 엔진 테스트 장치가 도 1의 컴퓨터 시스템(100)을 통해 구현될 수 있다. 도 1에 도시한 바와 같이, 컴퓨터 시스템(100)은 도 2의 자바스크립트 해석 엔진 테스트 방법을 실행하기 위한 구성요소로서 프로세서(110), 메모리(120), 영구 저장 장치(130), 버스(140), 입출력 인터페이스(150) 및 네트워크 인터페이스(160)를 포함할 수 있다.1 is a block diagram illustrating an example of an internal configuration of a computer system according to an embodiment of the present invention. For example, a JavaScript interpretation engine test apparatus according to embodiments of the present invention may be implemented through the computer system 100 of FIG. 1. As shown in FIG. 1, the computer system 100 is a component for executing the JavaScript analysis engine test method of FIG. 2 as a processor 110, a memory 120, a permanent storage device 130, and a bus 140 ), an input/output interface 150 and a network interface 160.

프로세서(110)는 자바스크립트 해석 엔진 테스트를 위한 구성요소로서 명령어들의 시퀀스를 처리할 수 있는 임의의 장치를 포함하거나 그의 일부일 수 있다. 프로세서(110)는 예를 들어 컴퓨터 프로세서, 이동 장치 또는 다른 전자 장치 내의 프로세서 및/또는 디지털 프로세서를 포함할 수 있다. 프로세서(110)는 예를 들어, 서버 컴퓨팅 디바이스, 서버 컴퓨터, 일련의 서버 컴퓨터들, 서버 팜, 클라우드 컴퓨터, 컨텐츠 플랫폼 등에 포함될 수 있다. 프로세서(110)는 버스(140)를 통해 메모리(120)에 접속될 수 있다.The processor 110 may include or be a part of any device capable of processing a sequence of instructions as a component for testing the JavaScript interpretation engine. The processor 110 may include, for example, a computer processor, a processor in a mobile device or other electronic device, and/or a digital processor. The processor 110 may be included in, for example, a server computing device, a server computer, a series of server computers, a server farm, a cloud computer, a content platform, and the like. The processor 110 may be connected to the memory 120 through the bus 140.

메모리(120)는 컴퓨터 시스템(100)에 의해 사용되거나 그에 의해 출력되는 정보를 저장하기 위한 휘발성 메모리, 영구, 가상 또는 기타 메모리를 포함할 수 있다. 메모리(120)는 예를 들어 랜덤 액세스 메모리(RAM: random access memory) 및/또는 다이내믹 RAM(DRAM: dynamic RAM)을 포함할 수 있다. 메모리(120)는 컴퓨터 시스템(100)의 상태 정보와 같은 임의의 정보를 저장하는 데 사용될 수 있다. 메모리(120)는 예를 들어 자바스크립트 해석 엔진 테스트를 위한 명령어들을 포함하는 컴퓨터 시스템(100)의 명령어들을 저장하는 데에도 사용될 수 있다. 컴퓨터 시스템(100)은 필요에 따라 또는 적절한 경우에 하나 이상의 프로세서(110)를 포함할 수 있다.The memory 120 may include volatile memory, permanent, virtual, or other memory for storing information used or output by the computer system 100. The memory 120 may include, for example, random access memory (RAM) and/or dynamic RAM (DRAM). The memory 120 can be used to store any information, such as status information of the computer system 100. The memory 120 may also be used to store instructions of the computer system 100 including instructions for testing the JavaScript interpretation engine, for example. Computer system 100 may include one or more processors 110 as needed or appropriate.

버스(140)는 컴퓨터 시스템(100)의 다양한 컴포넌트들 사이의 상호작용을 가능하게 하는 통신 기반 구조를 포함할 수 있다. 버스(140)는 예를 들어 컴퓨터 시스템(100)의 컴포넌트들 사이에, 예를 들어 프로세서(110)와 메모리(120) 사이에 데이터를 운반할 수 있다. 버스(140)는 컴퓨터 시스템(100)의 컴포넌트들 간의 무선 및/또는 유선 통신 매체를 포함할 수 있으며, 병렬, 직렬 또는 다른 토폴로지 배열들을 포함할 수 있다.The bus 140 may include a communication infrastructure that enables interaction between various components of the computer system 100. The bus 140 may carry data, for example, between components of the computer system 100, for example between the processor 110 and the memory 120. The bus 140 may include wireless and/or wired communication media between components of the computer system 100, and may include parallel, serial or other topology arrangements.

영구 저장 장치(130)는 (예를 들어, 메모리(120)에 비해) 소정의 연장된 기간 동안 데이터를 저장하기 위해 컴퓨터 시스템(100)에 의해 사용되는 바와 같은 메모리 또는 다른 영구 저장 장치와 같은 컴포넌트들을 포함할 수 있다. 영구 저장 장치(130)는 컴퓨터 시스템(100) 내의 프로세서(110)에 의해 사용되는 바와 같은 비휘발성 메인 메모리를 포함할 수 있다. 영구 저장 장치(130)는 예를 들어 플래시 메모리, 하드 디스크, 광 디스크 또는 다른 컴퓨터 판독 가능 매체를 포함할 수 있다.Persistent storage device 130 is a component such as memory or other permanent storage device used by computer system 100 to store data for a predetermined extended period (eg, compared to memory 120). It may include. The permanent storage device 130 may include non-volatile main memory as used by the processor 110 in the computer system 100. The permanent storage device 130 may include, for example, a flash memory, hard disk, optical disk, or other computer readable medium.

입출력 인터페이스(150)는 키보드, 마우스, 음성 명령 입력, 디스플레이 또는 다른 입력 또는 출력 장치에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 자바스크립트 해석 엔진 테스트를 위한 입력이 입출력 인터페이스(150)를 통해 수신될 수 있다.The input/output interface 150 may include interfaces to a keyboard, mouse, voice command input, display, or other input or output device. Configuration commands and/or input for testing the JavaScript interpretation engine may be received via input/output interface 150.

네트워크 인터페이스(160)는 근거리 네트워크 또는 인터넷과 같은 네트워크들에 대한 하나 이상의 인터페이스를 포함할 수 있다. 네트워크 인터페이스(160)는 유선 또는 무선 접속들에 대한 인터페이스들을 포함할 수 있다. 구성 명령들 및/또는 자바스크립트 해석 엔진 테스트를 위한 입력이 네트워크 인터페이스(160)를 통해 수신될 수 있다.The network interface 160 may include one or more interfaces to networks such as a local area network or the Internet. Network interface 160 may include interfaces for wired or wireless connections. Configuration commands and/or input for testing the JavaScript interpretation engine may be received via network interface 160.

또한, 다른 실시예들에서 컴퓨터 시스템(100)은 도 1의 구성요소들보다 더 많은 구성요소들을 포함할 수도 있다. 그러나, 대부분의 종래기술적 구성요소들을 명확하게 도시할 필요성은 없다. 예를 들어, 컴퓨터 시스템(100)은 상술한 입출력 인터페이스(150)와 연결되는 입출력 장치들 중 적어도 일부를 포함하도록 구현되거나 또는 트랜시버(transceiver), GPS(Global Positioning System) 모듈, 카메라, 각종 센서, 데이터베이스 등과 같은 다른 구성요소들을 더 포함할 수도 있다.Also, in other embodiments, the computer system 100 may include more components than those in FIG. 1. However, there is no need to clearly show most prior art components. For example, the computer system 100 is implemented to include at least some of the input/output devices connected to the input/output interface 150 described above, or a transceiver, a global positioning system (GPS) module, a camera, various sensors, Other components, such as a database, may also be included.

자바스크립트 파일 재작성을 통한 자바스크립트 해석 엔진 테스트 방법을 설명하면 다음과 같다.The following describes how to test the JavaScript interpretation engine through rewriting the JavaScript file.

최근 자바스크립트 해석 엔진이 복잡해짐에 따라 자바스크립트 해석 엔진을 효과적으로 테스팅을 하는 기술에 대한 중요성이 나날이 증가하고 있다. 자바스크립트 해석 엔진의 취약점은 공격자로 하여금 원격으로 임의의 코드를 실행할 수 있도록 하기 때문에 심각한 보안 위협으로 다가올 수 있다.With the recent complexity of the JavaScript interpretation engine, the importance of techniques for effectively testing the JavaScript interpretation engine is increasing day by day. The vulnerability of the JavaScript interpretation engine could pose a serious security threat because it could allow an attacker to execute arbitrary code remotely.

이에, 본 발명은 자바스크립트 파일을 기반으로 새로운 자바스크립트를 생성하는 변형기반 퍼징의 새로운 알고리즘에 관한 것으로, 자바스크립트 파일 기반으로 문법 에러와 타입 에러를 최소화 하면서 효과적인 테스팅을 하여 자바스크립트 해석 엔진의 보안성을 향상시킬 수 있는 기술이다.Accordingly, the present invention relates to a new algorithm for transform-based fuzzing that generates new JavaScript based on a JavaScript file, and performs effective testing while minimizing grammatical errors and type errors based on the JavaScript file to secure the JavaScript interpretation engine. It is a technique that can improve sex.

도 2는 본 발명의 일 실시예에 따른 컴퓨터 시스템이 수행할 수 있는 자바스크립트 해석 엔진 테스트 방법의 예를 도시한 순서도이다.2 is a flowchart illustrating an example of a JavaScript analysis engine test method that can be performed by a computer system according to an embodiment of the present invention.

도 2를 참조하면, 본 발명에 따른 자바스크립트 해석 엔진 테스트 방법은 사용자가 직접 생성하거나 현존하는 자바스크립트 파일을 찾아서 자바스크립트 파일을 모으는 수집 단계(S210), 수집한 자바스크립트 파일을 문법을 보존하면서 다양한 변형을 할 수 있도록 다시 쓰는 재작성 단계(S220), 재작성된 자바스크립트 파일을 실행하여 자바스크립트 해석 엔진을 테스팅하는 퍼징 단계(S230)를 포함한다. 수집 단계(S210)를 제외한 이하 모든 단계(S220 내지 S230)는 자동으로 진행된다.Referring to FIG. 2, the method for testing a JavaScript interpretation engine according to the present invention is a collection step (S210) in which a user directly generates or finds an existing JavaScript file and collects the JavaScript files, while preserving the grammar of the collected JavaScript files. It includes a rewriting step (S220) of rewriting to perform various modifications, and a fuzzing step (S230) of testing the JavaScript analysis engine by executing the rewritten JavaScript file. All of the following steps (S220 to S230) except the collecting step (S210) are automatically performed.

본 발명에 따른 자바스크립트 해석 엔진 테스트 장치는 자바스크립트 해석 엔진(201)을 입력으로 하며 최종적으로 자바스크립트 해석 엔진(201)에 존재하는 버그를 실행시키는 자바스크립트 파일을 반환한다.The JavaScript analysis engine test apparatus according to the present invention takes the JavaScript analysis engine 201 as an input and finally returns a JavaScript file that executes a bug existing in the JavaScript analysis engine 201.

자바스크립트 해석 엔진(201)은 테스트를 하고자 하는 자바스크립트 해석 엔진을 의미한다. 세계적으로 가장 많이 사용되는 자바스크립트 해석 엔진으로는 Google V8, Microsoft ChakraCore, Apple JavaScriptCore, Mozilla SpiderMonkey가 있으며 본 발명은 모든 자바스크립트 해석 엔진에 대해 적용 가능하다.The JavaScript interpretation engine 201 means a JavaScript interpretation engine to be tested. The most widely used JavaScript interpretation engines in the world include Google V8, Microsoft ChakraCore, Apple JavaScriptCore, and Mozilla SpiderMonkey, and the present invention is applicable to all JavaScript interpretation engines.

수집 단계(S210)는 첫 번째 단계로 재작성 단계(S220)에 사용될 자바스크립트 파일을 수집하는 과정을 의미한다. 크게, 자바스크립트 파일을 오픈소스로부터 수집하는 방법과 직접 생성해 내는 방법이 있다. 수집 단계(S210)에서 수집하는 자바스크립트 파일의 다양성과 질에 따라서 자바스크립트 해석 엔진 테스트 장치의 성능이 크게 달라질 수 있기 때문에 어떤 자바스크립트 파일을 수집하는가는 매우 중요하다.The collecting step (S210) means a process of collecting a JavaScript file to be used in the rewriting step (S220) as a first step. Largely, there are methods for collecting JavaScript files from open source and generating them directly. It is very important which JavaScript file is collected because the performance of the JavaScript interpretation engine test apparatus may vary greatly depending on the variety and quality of the JavaScript files collected in the collection step (S210).

재작성 단계(S220)는 수집된 자바스크립트 파일을 퍼징 단계(S230)에 사용하기 위해 재작성하는 과정에 해당된다. 타입 에러를 해결함과 동시에 자바스크립트를 변형하기 위해서 오브젝트의 속성을 참조, 설정, 호출하는지에 따라 각각 다른 방식으로 재작성을 한다.The rewriting step (S220) corresponds to a process of rewriting the collected JavaScript file for use in the fuzzing step (S230). In order to resolve type errors and to modify JavaScript, rewrite the object properties in different ways depending on whether the object is referenced, set, or called.

도 3은 자바스크립트 파일 재작성 예시를 도시한 것이다.3 illustrates an example of rewriting a JavaScript file.

속성 참조에 대한 재작성은 일정 확률로 오브젝트가 가지고 있는 다른 속성을 참조하도록 재작성하는 것을 의미한다. 이와 비슷하게, 속성 설정에 대한 재작성은 일정 확률로 오브젝트가 가지고 있는 다른 속성을 재설정 하도록 하며, 속성 호출에 대한 재작성은 일정 확률로 오브젝트가 가지고 있는 다른 호출 가능한 속성을 호출하도록 한다.Rewriting an attribute reference means rewriting it to refer to another attribute of the object with a certain probability. Similarly, rewriting an attribute set has a probability of resetting other attributes the object has, and rewriting an attribute has a probability of retrieving another callable attribute the object has.

예를 들어, 도 3을 참조하면, mut_get(obj, 'prop')는 obj의 prop 속성을 참조하여 반환하거나 일정 확률로 obj가 가지고 있는 다른 속성을 참조하여 반환한다. mut_set(obj, 'prop', x)는 obj의 prop 속성을 x값으로 설정하거나 일정 확률로 obj가 가지고 있는 다른 속성을 x값으로 설정한다. 마지막으로, mut_call(obj, 'prop', [x])은 obj의 prop 속성을 x값을 파라미터로 호출하거나 일정 확률로 obj가 가지고 있는 다른 호출 가능한 속성을 x값을 파라미터로 호출한다.For example, referring to FIG. 3, mut_get(obj,'prop') is returned by referring to the prop property of obj or by referring to other properties of obj with a certain probability. mut_set(obj,'prop', x) sets the prop property of obj to the x value or, at a certain probability, sets another property of obj to the x value. Finally, mut_call(obj,'prop', [x]) calls the prop property of obj as an x value, or, at a certain probability, calls another callable property of obj as an x value as a parameter.

다시 도 2를 참조하면, 퍼징 단계(S230)는 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정이다. 다시 말해, 퍼징 단계(S230)는 재작성된 자바스크립트 파일을 자바스크립트 해석 엔진 위에서 실행시킴으로써 취약점(202)을 찾는 단계이다. 재작성된 자바스크립트 파일 중에서 자바스크립트 해석 엔진을 크래쉬(crash) 내는 것들을 따로 모아 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장한다.Referring back to FIG. 2, the fuzzing step (S230) is a process of testing the JavaScript analysis engine using the rewritten JavaScript file. In other words, the fuzzing step S230 is a step of finding the vulnerability 202 by executing the rewritten JavaScript file on the JavaScript analysis engine. Among the rewritten JavaScript files, those that crash the JavaScript analysis engine are collected separately and stored together with the call stack when the JavaScript analysis engine crashes.

취약점(202)은 도 2의 모든 과정을 마치고 나온 최종 결과물로 자바스크립트 해석 엔진의 취약점을 나타낸다. 즉, 자바스크립트 해석 엔진을 크래쉬 내는 자바스크립트 파일들과 크래쉬의 콜 스택들의 모음이 포함된다.Vulnerability 202 represents the vulnerability of the JavaScript interpretation engine as the final result after completing all the processes in FIG. 2. That is, it contains a collection of JavaScript files that crash the JavaScript interpretation engine and the call stacks of the crash.

본 발명은 자바스크립트 코드 재작성부터 자바스크립트 해석 엔진의 테스팅과 퍼징 과정이 모두 자동화될 수 있고, 자바스크립트 코드 재작성을 통해서 자바스크립트 해석 엔진의 테스팅 및 퍼징을 수행할 수 있으며, 특히 오브젝트의 속성에 대한 접근을 변형함으로써 타입 에러를 줄여 효율적인 엔진 테스팅 및 퍼징이 가능하다.In the present invention, both the rewriting of the JavaScript code and the testing and fuzzing process of the JavaScript analysis engine can be automated, and the rewriting and testing of the JavaScript analysis engine can be performed through the rewriting of the JavaScript code. By modifying the approach to reduce type errors, efficient engine testing and purging is possible.

이처럼 본 발명의 실시예들에 따르면, 자바스크립트 파일 기반으로 문법 에러와 타입 에러를 최소화 하면서 효과적인 테스팅을 하여 자바스크립트 해석 엔진의 보안성을 향상시킬 수 있다. 그리고, 본 발명의 실시예들에 따르면, 자바스크립트 해석 엔진의 효율적인 퍼징 및 테스팅을 통하여 자바스크립트 엔진을 포함한 브라우저 보안 및 사이버 보안 향상에 기여할 수 있다.As described above, according to embodiments of the present invention, it is possible to improve security of the JavaScript interpretation engine by performing effective testing while minimizing grammatical errors and type errors based on JavaScript files. In addition, according to embodiments of the present invention, it is possible to contribute to improving browser security and cyber security including the JavaScript engine through efficient fuzzing and testing of the JavaScript interpretation engine.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 프로세서, 콘트롤러, ALU(arithmetic logic unit), 디지털 신호 프로세서(digital signal processor), 마이크로컴퓨터, FPGA(field programmable gate array), PLU(programmable logic unit), 마이크로프로세서, 또는 명령(instruction)을 실행하고 응답할 수 있는 다른 어떠한 장치와 같이, 하나 이상의 범용 컴퓨터 또는 특수 목적 컴퓨터를 이용하여 구현될 수 있다. 처리 장치는 운영 체제(OS) 및 상기 운영 체제 상에서 수행되는 하나 이상의 소프트웨어 어플리케이션을 수행할 수 있다. 또한, 처리 장치는 소프트웨어의 실행에 응답하여, 데이터를 접근, 저장, 조작, 처리 및 생성할 수도 있다. 이해의 편의를 위하여, 처리 장치는 하나가 사용되는 것으로 설명된 경우도 있지만, 해당 기술분야에서 통상의 지식을 가진 자는, 처리 장치가 복수 개의 처리 요소(processing element) 및/또는 복수 유형의 처리 요소를 포함할 수 있음을 알 수 있다. 예를 들어, 처리 장치는 복수 개의 프로세서 또는 하나의 프로세서 및 하나의 콘트롤러를 포함할 수 있다. 또한, 병렬 프로세서(parallel processor)와 같은, 다른 처리 구성(processing configuration)도 가능하다.The device described above may be implemented with hardware components, software components, and/or combinations of hardware components and software components. For example, the devices and components described in the embodiments may include a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor (micro signal processor), a microcomputer, a field programmable gate array (FPGA), and a programmable programmable logic array (PLU). It may be implemented using one or more general purpose computers or special purpose computers, such as a logic unit, microprocessor, or any other device capable of executing and responding to instructions. The processing device may perform an operating system (OS) and one or more software applications running on the operating system. In addition, the processing device may access, store, manipulate, process, and generate data in response to the execution of the software. For convenience of understanding, a processing device may be described as one being used, but a person having ordinary skill in the art, the processing device may include a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that may include. For example, the processing device may include a plurality of processors or a processor and a controller. In addition, other processing configurations, such as parallel processors, are possible.

소프트웨어는 컴퓨터 프로그램(computer program), 코드(code), 명령(instruction), 또는 이들 중 하나 이상의 조합을 포함할 수 있으며, 원하는 대로 동작하도록 처리 장치를 구성하거나 독립적으로 또는 결합적으로(collectively) 처리 장치를 명령할 수 있다. 소프트웨어 및/또는 데이터는, 처리 장치에 의하여 해석되거나 처리 장치에 명령 또는 데이터를 제공하기 위하여, 어떤 유형의 기계, 구성요소(component), 물리적 장치, 컴퓨터 저장 매체 또는 장치에 구체화(embody)될 수 있다. 소프트웨어는 네트워크로 연결된 컴퓨터 시스템 상에 분산되어서, 분산된 방법으로 저장되거나 실행될 수도 있다. 소프트웨어 및 데이터는 하나 이상의 컴퓨터 판독 가능 기록 매체에 저장될 수 있다.The software may include a computer program, code, instruction, or a combination of one or more of these, and configure the processing device to operate as desired, or process independently or collectively You can command the device. Software and/or data may be embodied in any type of machine, component, physical device, computer storage medium, or device in order to be interpreted by the processing device or to provide instructions or data to the processing device. have. The software may be distributed over networked computer systems, and stored or executed in a distributed manner. Software and data may be stored in one or more computer-readable recording media.

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 이때, 매체는 컴퓨터로 실행 가능한 프로그램을 계속 저장하거나, 실행 또는 다운로드를 위해 임시 저장하는 것일 수도 있다. 또한, 매체는 단일 또는 수 개의 하드웨어가 결합된 형태의 다양한 기록수단 또는 저장수단일 수 있는데, 어떤 컴퓨터 시스템에 직접 접속되는 매체에 한정되지 않고, 네트워크 상에 분산 존재하는 것일 수도 있다. 매체의 예시로는, 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체, CD-ROM 및 DVD와 같은 광기록 매체, 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical medium), 및 ROM, RAM, 플래시 메모리 등을 포함하여 프로그램 명령어가 저장되도록 구성된 것이 있을 수 있다. 또한, 다른 매체의 예시로, 어플리케이션을 유통하는 앱 스토어나 기타 다양한 소프트웨어를 공급 내지 유통하는 사이트, 서버 등에서 관리하는 기록매체 내지 저장매체도 들 수 있다.The method according to the embodiment may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer-readable medium. In this case, the medium may continuously store a program executable on a computer or may be temporarily stored for execution or download. In addition, the medium may be various recording means or storage means in a form of a single or several hardware combinations, and is not limited to a medium directly connected to a computer system, but may be distributed on a network. Examples of the medium include magnetic media such as hard disks, floppy disks, and magnetic tapes, optical recording media such as CD-ROMs and DVDs, and magneto-optical media such as floptical disks, And program instructions including ROM, RAM, flash memory, and the like. In addition, examples of other media may include an application store for distributing applications or a recording medium or storage medium managed by a site, server, or the like that supplies or distributes various software.

이상과 같이 실시예들이 비록 한정된 실시예와 도면에 의해 설명되었으나, 해당 기술분야에서 통상의 지식을 가진 자라면 상기의 기재로부터 다양한 수정 및 변형이 가능하다. 예를 들어, 설명된 기술들이 설명된 방법과 다른 순서로 수행되거나, 및/또는 설명된 시스템, 구조, 장치, 회로 등의 구성요소들이 설명된 방법과 다른 형태로 결합 또는 조합되거나, 다른 구성요소 또는 균등물에 의하여 대치되거나 치환되더라도 적절한 결과가 달성될 수 있다.As described above, although the embodiments have been described by a limited embodiment and drawings, those skilled in the art can make various modifications and variations from the above description. For example, the described techniques are performed in a different order than the described method, and/or the components of the described system, structure, device, circuit, etc. are combined or combined in a different form from the described method, or other components Alternatively, even if replaced or substituted by equivalents, appropriate results can be achieved.

그러므로, 다른 구현들, 다른 실시예들 및 특허청구범위와 균등한 것들도 후술하는 특허청구범위의 범위에 속한다.Therefore, other implementations, other embodiments, and equivalents to the claims are also within the scope of the following claims.

Claims (12)

컴퓨터로 구현되는 자바스크립트 해석 엔진(JavaScript Interpretation Engine) 테스트 방법에 있어서,
자바스크립트 파일을 수집하는 단계;
상기 수집된 자바스크립트 파일을 변형하여 재작성하는 단계; 및
상기 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 단계를 포함하되,
상기 재작성하는 단계는, 상기 수집된 자바스크립트 파일을 오브젝트의 속성 참조, 속성 설정, 속성 호출에 따라 재작성하되,
상기 재작성하는 단계는, 오브젝트의 속성을 참조하여 반환하거나 일정 확률로 오브젝트가 가지고 있는 다른 속성을 참조하도록 하는 속성 참조에 대한 재작성 방식과, 오브젝트의 속성을 재설정하거나 일정 확률로 오브젝트가 가지고 있는 다른 속성을 재설정하도록 하는 속성 설정에 대한 재작성 방식, 및 오브젝트의 속성을 다른 호출 가능한 속성의 파라미터로 호출하거나, 일정 확률로 오브젝트가 가지고 있는 다른 호출 가능한 속성의 파라미터로 호출하도록 하는 속성 호출에 대한 재작성 방식을 통해 상기 수집된 자바스크립트 파일을 재작성하여 오브젝트의 속성에 대한 접근을 변형하며,
상기 테스트하는 단계는, 상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 취약점을 찾고, 상기 재작성된 자바스크립트 파일 중에서 상기 자바스크립트 해석 엔진을 크래쉬(crash) 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장하며,
상기 취약점은, 상기 수집하는 단계, 상기 재작성하는 단계, 상기 테스트하는 단계를 수행하여 나온 최종 결과물로 자바스크립트 해석 엔진의 취약점을 나타내고, 자바스크립트 해석 엔진을 크래쉬 내는 자바스크립트 파일들과 크래쉬의 콜 스택들의 모음이 포함되며,
상기 재작성하는 단계 및 상기 테스트하는 단계는, 모두 자동화되며 자바스크립트 코드 재작성을 통해서 자바스크립트 해석 엔진의 테스팅를 수행하는 것을 특징으로 하는 자바스크립트 해석 엔진 테스트 방법.
In the computer-implemented JavaScript Interpretation Engine test method,
Collecting a JavaScript file;
Modifying and rewriting the collected JavaScript file; And
The step of testing the JavaScript analysis engine using the rewritten JavaScript file,
In the rewriting step, the collected JavaScript file is rewritten according to object attribute reference, attribute setting, and attribute call,
In the rewriting step, the rewriting method for the attribute reference to return or refer to the attribute of the object or refer to another attribute of the object with a certain probability, and reset the attribute of the object or have the object with a certain probability. A rewrite method for setting an attribute to reset another attribute, and for calling an attribute of an object as a parameter of another callable attribute or, at a certain rate, as a parameter of another callable attribute the object has. Rewrite the collected JavaScript file through the rewrite method to modify the access to the properties of the object,
In the testing, the rewritten JavaScript file is executed on the JavaScript interpretation engine to find a vulnerability, and the JavaScript file that crashes the JavaScript interpretation engine among the rewritten JavaScript files is the JavaScript. The analysis engine saves with the call stack when the crash occurs,
The vulnerability indicates the vulnerability of the JavaScript analysis engine as a final result of performing the collecting step, the rewriting step, and the testing step, and calls of JavaScript files and crashes that crash the JavaScript analysis engine. Contains a collection of stacks,
The rewriting step and the testing step are all automated, and the JavaScript analysis engine test method is characterized in that the JavaScript analysis engine is tested through rewriting of JavaScript code.
제1항에 있어서,
상기 수집하는 단계는,
오픈소스로부터 자바스크립트 파일을 수집하는 것
을 특징으로 하는 자바스크립트 해석 엔진 테스트 방법.
According to claim 1,
The collecting step,
Collecting JavaScript files from open source
JavaScript interpretation engine test method, characterized in that.
삭제delete 삭제delete 제1항에 있어서,
상기 테스트하는 단계는,
상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 상기 자바스크립트 해석 엔진에 존재하는 버그를 실행시키는 자바스크립트 파일을 반환하는 단계
를 포함하는 자바스크립트 해석 엔진 테스트 방법.
According to claim 1,
The test step,
Executing the rewritten JavaScript file on the JavaScript interpretation engine to return a JavaScript file that executes a bug existing in the JavaScript interpretation engine.
JavaScript interpretation engine test method comprising a.
삭제delete 컴퓨터로 구현되는 자바스크립트 해석 엔진 테스트 장치에 있어서,
메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고,
상기 적어도 하나의 프로세서는,
자바스크립트 파일을 수집하는 과정;
상기 수집된 자바스크립트 파일을 변형하여 재작성하는 과정; 및
상기 재작성된 자바스크립트 파일을 이용하여 자바스크립트 해석 엔진을 테스트하는 과정을 처리하되,
상기 재작성하는 과정은, 상기 수집된 자바스크립트 파일을 오브젝트의 속성 참조, 속성 설정, 속성 호출에 따라 재작성하되,
상기 재작성하는 과정은, 오브젝트의 속성을 참조하여 반환하거나 일정 확률로 오브젝트가 가지고 있는 다른 속성을 참조하도록 하는 속성 참조에 대한 재작성 방식과, 오브젝트의 속성을 재설정하거나 일정 확률로 오브젝트가 가지고 있는 다른 속성을 재설정하도록 하는 속성 설정에 대한 재작성 방식, 및 오브젝트의 속성을 다른 호출 가능한 속성의 파라미터로 호출하거나, 일정 확률로 오브젝트가 가지고 있는 다른 호출 가능한 속성의 파라미터로 호출하도록 하는 속성 호출에 대한 재작성 방식을 통해 상기 수집된 자바스크립트 파일을 재작성하여 오브젝트의 속성에 대한 접근을 변형하며,
상기 테스트하는 과정은, 상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 취약점을 찾고, 상기 재작성된 자바스크립트 파일 중에서 상기 자바스크립트 해석 엔진을 크래쉬(crash) 내는 자바스크립트 파일을 상기 자바스크립트 해석 엔진이 크래쉬가 났을 때의 콜 스택(call stack)과 함께 저장하며,
상기 취약점은, 상기 수집하는 과정, 상기 재작성하는 과정, 상기 테스트하는 과정을 수행하여 나온 최종 결과물로 자바스크립트 해석 엔진의 취약점을 나타내고, 자바스크립트 해석 엔진을 크래쉬 내는 자바스크립트 파일들과 크래쉬의 콜 스택들의 모음이 포함되며,
상기 재작성하는 과정 및 상기 테스트하는 과정은, 모두 자동화되며 자바스크립트 코드 재작성을 통해서 자바스크립트 해석 엔진의 테스팅를 수행하는 것을 특징으로 하는 자바스크립트 해석 엔진 테스트 장치.
In the computer-implemented JavaScript interpretation engine test apparatus,
And at least one processor configured to execute computer readable instructions contained in the memory,
The at least one processor,
The process of collecting JavaScript files;
Modifying and rewriting the collected JavaScript file; And
Process the process of testing the JavaScript interpretation engine using the rewritten JavaScript file,
In the rewriting process, the collected JavaScript file is rewritten according to object property reference, property setting, and property call,
The rewriting process includes a method of rewriting an attribute reference for returning by referring to an attribute of an object or referring to other attributes of the object with a certain probability, and resetting the attribute of the object or having the object with a certain probability. A rewrite method for setting an attribute to reset another attribute, and for calling an attribute of an object as a parameter of another callable attribute or, at a certain rate, as a parameter of another callable attribute the object has. Rewrite the collected JavaScript file through the rewrite method to modify the access to the properties of the object,
In the testing, the rewritten JavaScript file is executed on the JavaScript analysis engine to find vulnerabilities, and the JavaScript file that crashes the JavaScript analysis engine among the rewritten JavaScript files is the JavaScript. The analysis engine saves with the call stack when the crash occurs,
The vulnerability indicates the vulnerability of the JavaScript analysis engine as a final result of performing the collecting process, the rewriting process, and the testing process, and calls of JavaScript files and crashes that crash the JavaScript analysis engine. Contains a collection of stacks,
The rewriting process and the testing process are all automated, and the JavaScript analysis engine test apparatus is characterized in that the JavaScript analysis engine is tested through rewriting of JavaScript code.
제7항에 있어서,
상기 수집하는 과정은,
오픈소스로부터 자바스크립트 파일을 수집하는 것
을 특징으로 하는 자바스크립트 해석 엔진 테스트 장치.
The method of claim 7,
The collecting process,
Collecting JavaScript files from open source
JavaScript analysis engine test device characterized in that.
삭제delete 삭제delete 제7항에 있어서,
상기 테스트하는 과정은,
상기 재작성된 자바스크립트 파일을 상기 자바스크립트 해석 엔진 상에서 실행시켜 상기 자바스크립트 해석 엔진에 존재하는 버그를 실행시키는 자바스크립트 파일을 반환하는 것
을 특징으로 하는 자바스크립트 해석 엔진 테스트 장치.
The method of claim 7,
The test process,
Executing the rewritten JavaScript file on the JavaScript interpretation engine to return a JavaScript file that executes a bug existing in the JavaScript interpretation engine.
JavaScript analysis engine test device characterized in that.
삭제delete
KR1020180129656A 2018-10-29 2018-10-29 Method and apparatus for testing javascript interpretation engine based on rewriting KR102132449B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020180129656A KR102132449B1 (en) 2018-10-29 2018-10-29 Method and apparatus for testing javascript interpretation engine based on rewriting

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020180129656A KR102132449B1 (en) 2018-10-29 2018-10-29 Method and apparatus for testing javascript interpretation engine based on rewriting

Publications (2)

Publication Number Publication Date
KR20200048033A KR20200048033A (en) 2020-05-08
KR102132449B1 true KR102132449B1 (en) 2020-07-09

Family

ID=70677469

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020180129656A KR102132449B1 (en) 2018-10-29 2018-10-29 Method and apparatus for testing javascript interpretation engine based on rewriting

Country Status (1)

Country Link
KR (1) KR102132449B1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112685314A (en) * 2021-01-05 2021-04-20 广州知图科技有限公司 JavaScript engine security test method and test system
WO2023120933A1 (en) * 2021-12-23 2023-06-29 숭실대학교 산학협력단 Apparatus for fuzzing binding code by using test case and method therefor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034580A (en) 2011-09-29 2013-04-10 西门子公司 Method and device and system for fuzzy test
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 (en) * 2015-10-21 2017-04-04 엘에스산전 주식회사 Apparatus for test plc using programming language
KR101858620B1 (en) * 2017-01-10 2018-05-17 고려대학교 산학협력단 Device and method for analyzing javascript using machine learning

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101491848B1 (en) * 2013-06-19 2015-02-11 주식회사 큐에이엔씨 Gui software test automatic system having functon for script maintenance and method of controlling the same

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103034580A (en) 2011-09-29 2013-04-10 西门子公司 Method and device and system for fuzzy test
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 (en) * 2015-10-21 2017-04-04 엘에스산전 주식회사 Apparatus for test plc using programming language
KR101858620B1 (en) * 2017-01-10 2018-05-17 고려대학교 산학협력단 Device and method for analyzing javascript using machine learning

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
KR20200048033A (en) 2020-05-08

Similar Documents

Publication Publication Date Title
US9237130B2 (en) Hierarchical rule development and binding for web application server firewall
US8819637B2 (en) Fixing security vulnerability in a source code
JP5425699B2 (en) Information processing apparatus, test case generation method, program, and recording medium
US10949178B1 (en) Method and system for decomposing a global application programming interface (API) graph into an application-specific API subgraph
US11650905B2 (en) Testing source code changes
US11503070B2 (en) Techniques for classifying a web page based upon functions used to render the web page
US20150121526A1 (en) Methods and systems for malware analysis
US20130019314A1 (en) Interactive virtual patching using a web application server firewall
US8844046B2 (en) Method and apparatus for paralleling and distributing static source code security analysis using loose synchronization
US10705949B2 (en) Evaluation of library test suites using mutation testing
US10614218B2 (en) Scan time reduction in application code security scanning
US8826243B2 (en) System, method, and computer program product for error code injection
US20190079974A1 (en) Optimizing database queries
KR102132449B1 (en) Method and apparatus for testing javascript interpretation engine based on rewriting
US9442818B1 (en) System and method for dynamic data collection
US11526501B2 (en) Materialized views assistant
WO2022055585A1 (en) Smart distributed tracing context injection
US11163888B2 (en) Detecting second-order security vulnerabilities via modelling information flow through persistent storage
US11087003B2 (en) Scalable pre-analysis of dynamic applications
EP4160455A1 (en) Behavior analysis based on finite-state machine for malware detection
US8799873B2 (en) Collecting tracepoint data
KR102578430B1 (en) Type-aware windows kernel fuzzing method based on static binary analysis
KR102132450B1 (en) Method and apparatus for testing javascript interpretation engine using machine learning
US20210360005A1 (en) Inferring watchpoints for understandable taint reports
US11163876B2 (en) Guided security analysis

Legal Events

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