KR102514805B1 - An accelerating system for javascript static analysis via dynamic executions - Google Patents

An accelerating system for javascript static analysis via dynamic executions Download PDF

Info

Publication number
KR102514805B1
KR102514805B1 KR1020210112007A KR20210112007A KR102514805B1 KR 102514805 B1 KR102514805 B1 KR 102514805B1 KR 1020210112007 A KR1020210112007 A KR 1020210112007A KR 20210112007 A KR20210112007 A KR 20210112007A KR 102514805 B1 KR102514805 B1 KR 102514805B1
Authority
KR
South Korea
Prior art keywords
shield
analysis
execution
abstraction
domain
Prior art date
Application number
KR1020210112007A
Other languages
Korean (ko)
Other versions
KR20230030142A (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 KR1020210112007A priority Critical patent/KR102514805B1/en
Publication of KR20230030142A publication Critical patent/KR20230030142A/en
Application granted granted Critical
Publication of KR102514805B1 publication Critical patent/KR102514805B1/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/3664Environments for testing or debugging software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3644Software debugging by instrumenting at runtime
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/3648Software debugging using additional hardware
    • 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/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • 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/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • 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/3672Test management
    • G06F11/3692Test management for test results analysis

Abstract

최적화된 실행기를 활용한 자바스크립트 정적 분석 가속화 시스템이 개시된다. 일 실시예에 따른 분석 가속화 시스템에 의해 수행되는 실행기(Dynamic Executions)를 활용한 정적 분석 방법은, 분석하고자 하는 입력 프로그램의 초기 분석 결과에 기초하여 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는 단계; 및 상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 분석을 수행하는 단계를 포함할 수 있다. A JavaScript static analysis acceleration system utilizing an optimized executor is disclosed. A static analysis method using dynamic executions performed by an analysis acceleration system according to an embodiment includes converting an area to be analyzed through dynamic executions during static analysis based on an initial analysis result of an input program to be analyzed. step; and performing analysis on the converted region using the dynamic executor.

Description

최적화된 실행기를 활용한 자바스크립트 정적 분석 가속화 시스템{AN ACCELERATING SYSTEM FOR JAVASCRIPT STATIC ANALYSIS VIA DYNAMIC EXECUTIONS}JavaScript static analysis acceleration system using optimized executor {AN ACCELERATING SYSTEM FOR JAVASCRIPT STATIC ANALYSIS VIA DYNAMIC EXECUTIONS}

아래의 설명은 정적 분석 기술에 관한 것이다. The description below relates to static analysis techniques.

소프트웨어가 의료기기, 자율주행, 재난방지 시스템 등에도 널리 활용되면서 소프트웨어의 결함으로 발생하는 문제의 심각성도 중대해지고 있다. 정적 분석(static program analysis)은 작성한 소프트웨어가 오류 없이 실행될 지를 미리 엄밀하게 확인해 주는 기술이다. 정적 분석 기술은 소프트웨어 결함 검출 및 보안 취약점 탐지에 활용이 가능하여 안전한 소프트웨어 개발에 도움을 준다. 정적 분석은 추상화 실행(abstract interpretation)이라는 탄탄한 이론적 기반으로 안전성(버그가 있을 때 놓치지 않고 검출하는 성질)과 종료성(분석이 유한한 시간 내에 종료) 두 가지 성질을 보장하여 소프트웨어 개발에 필수적인 도구로 각광받고 있다.As software is widely used in medical devices, autonomous driving, and disaster prevention systems, the severity of problems caused by software defects is becoming more serious. Static program analysis is a technique that rigorously checks in advance whether the written software will run without errors. Static analysis technology can be used to detect software defects and security vulnerabilities, helping to develop safe software. Static analysis is an essential tool for software development by guaranteeing two properties: safety (property of detecting bugs without missing them) and finality (analysis completes within a finite time) based on a solid theoretical basis of abstract interpretation. Be in the spotlight.

하지만 웹 사이트, 웹 애플리케이션, IoT 소프트웨어 등 자바스크립트로 구현된 프로그램에 정적 분석 기술을 실제로 적용하는 것은 자바스크립트 언어의 동적인 성질 때문에 어려움이 있다. 특히, 언어의 동적인 성질로 인해 발생한 부정확함으로 인해 정적 분석에 필요한 계산량을 크게 부풀려서 분석 시간이 너무 오래 소요된다는 문제점이 있다. 이러한 문제점이 크고 복잡한 산업 소프트웨어에 기술을 적용하는데 큰 장벽으로 꼽히고 있다.However, it is difficult to actually apply static analysis technology to programs implemented in JavaScript, such as websites, web applications, and IoT software, due to the dynamic nature of the JavaScript language. In particular, there is a problem in that the amount of calculation required for static analysis is greatly inflated due to inaccuracies caused by the dynamic nature of language, and the analysis time is too long. These problems are considered a major barrier to applying the technology to large and complex industrial software.

자바스크립트 정적 분석기의 분석 소요시간을 획기적으로 줄일 수 있는 분석 가속화 방법 및 시스템을 제공할 수 있다.It is possible to provide an analysis acceleration method and system that can dramatically reduce the analysis time of the JavaScript static analyzer.

최적화 되어 빠른 동적 실행기를 활용하여 정적 분석 중에 추상화 실행과 구체화 실행을 유연하게 전환하는 방법 및 시스템을 제공할 수 있다.It is possible to provide a method and system for flexibly switching between abstraction execution and materialization execution during static analysis by utilizing an optimized and fast dynamic executor.

분석 가속화 시스템에 의해 수행되는 동적 실행기(Dynamic Executions)를 활용한 정적 분석 방법은, 분석하고자 하는 입력 프로그램의 초기 분석 결과에 기초하여 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는 단계; 및 상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 분석을 수행하는 단계를 포함할 수 있다. A static analysis method using dynamic executors performed by an analysis acceleration system includes: converting an area to be analyzed through dynamic executors during static analysis based on an initial analysis result of an input program to be analyzed; and performing analysis on the converted region using the dynamic executor.

상기 변환하는 단계는, 정적 분석을 수행함에 따라 입력 프로그램의 현재 추상화 상태를 현재 추상 상태에 대응되는 실드 상태로 변환하고, 상기 변환된 실드 상태에서 동적 실행기 위에서 실드 실행을 수행함에 따라 획득된 실드 실행 결과에 대응되는 추상화 상태로 변환하는 단계를 포함할 수 있다. The transforming step may include converting a current abstraction state of an input program into a shield state corresponding to the current abstract state by performing static analysis, and shield execution obtained by performing shield execution on a dynamic executor in the converted shield state. A step of converting the result into an abstract state corresponding to the result may be included.

상기 변환하는 단계는, 실드 도메인 및 실체화 맵을 사용하여 실드 실행을 정의하고, 추상화 실행과 실드 실행을 결합하기 위하여 기존 추상화 도메인과 실드 도메인의 결합 도메인을 정의하고, 상기 정의된 결합 도메인을 이용하여 추상화 상태를 구성하는 단계를 포함할 수 있다. The converting step may include defining a shield execution using a shield domain and a materialization map, defining a binding domain of an existing abstraction domain and a shield domain to combine an abstraction execution and a shield execution, and using the defined combining domain. It may include constructing an abstraction state.

상기 변환하는 단계는, 서로 다른 종류의 분석 요소 간 변환을 위한 복수의 컨버터를 이용하여 기존 추상화 도메인에 대응되는 실드 도메인으로 변환하는 단계; 또는 상기 변환된 실드 도메인에 대응되는 기존 추상화 도메인으로 변환하는 단계를 포함할 수 있다. The converting may include converting into a shield domain corresponding to an existing abstraction domain by using a plurality of converters for converting between different types of analysis elements; Alternatively, converting to an existing abstraction domain corresponding to the converted shield domain may be included.

상기 수행하는 단계는, 복수의 컨버터의 정적 분석과 관련하여 설정된 시간 제한에 기초하여 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 실드 실행을 수행하는 중에 상기 제한 시간이 초과할 경우, 추상화 실행을 수행하는 단계를 포함할 수 있다. The performing step may include performing shield execution including a shield domain using a dynamic executor based on a time limit set in relation to static analysis of a plurality of converters, and if the time limit is exceeded while performing the shield execution. If so, it may include performing an abstraction implementation.

상기 수행하는 단계는, 상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하는 단계를 포함하고, 상기 변환하는 단계는, 상기 수행된 실드 실행이 종료됨에 따라 추상화 실행을 위한 영역으로 변환하는 단계를 포함할 수 있다. The performing includes performing shield execution including a shield domain on the converted domain using the dynamic executor, and the converting includes abstraction execution as the performed shield execution ends. It may include converting into an area for.

상기 분석을 수행하는 단계는, 상기 변환된 영역에 기초하여 추상화 의미를 사용한 추상화 실행 또는 구체화 의미를 사용한 구체화 실행을 이용한 정적 분석을 통해 중간 분석 결과를 획득하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였는지 여부를 판단하는 단계를 포함할 수 있다. The performing of the analysis may include obtaining an interim analysis result through static analysis using abstraction execution using abstraction semantics or concrete execution using concrete semantics based on the transformed domain, and the obtained interim analysis result is set in advance. A step of determining whether a fixed point has been reached may be included.

상기 분석을 수행하는 단계는, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였을 경우, 상기 획득된 중간 분석 결과를 최종 분석 결과로 도출하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하지 못하였을 경우, 상기 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는 단계를 포함할 수 있다. In the performing of the analysis, when the obtained interim analysis result reaches a preset fixed point, the obtained interim analysis result is derived as a final analysis result, and the obtained interim analysis result reaches a preset fixed point. If not reached, a step of converting a region to be analyzed through a dynamic executor during the static analysis may be included.

분석 가속화 시스템은, 메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서를 포함하고, 상기 적어도 하나의 프로세서는, 분석하고자 하는 입력 프로그램의 초기 분석 결과에 기초하여 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하고, 상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 분석을 수행할 수 있다. The analysis acceleration system includes at least one processor configured to execute computer readable instructions contained in memory, the at least one processor generating a dynamic executor during static analysis based on an initial analysis result of an input program to be analyzed. A region to be analyzed may be converted through the above process, and analysis may be performed on the converted region using the dynamic executor.

상기 적어도 하나의 프로세서는, 정적 분석을 수행함에 따라 입력 프로그램의 현재 추상화 상태를 현재 추상 상태에 대응되는 실드 상태로 변환하고, 상기 변환된 실드 상태에서 동적 실행기 위에서 실드 실행을 수행함에 따라 획득된 실드 실행 결과에 대응되는 추상화 상태로 변환할 수 있다. The at least one processor converts a current abstraction state of an input program into a shield state corresponding to the current abstract state as a result of static analysis, and performs shield execution on a dynamic executor in the converted shield state. It can be converted into an abstract state corresponding to the execution result.

상기 적어도 하나의 프로세서는, 실드 도메인 및 실체화 맵을 사용하여 실드 실행을 정의하고, 추상화 실행과 실드 실행을 결합하기 위하여 추상화 도메인과 실드 도메인의 결합 도메인을 정의하고, 상기 정의된 결합 도메인을 이용하여 추상화 상태를 구성할 수 있다. The at least one processor defines a shield execution using a shield domain and a materialization map, defines a binding domain of the abstraction domain and the shield domain to combine the abstraction execution with the shield execution, and uses the defined combining domain to You can compose an abstraction state.

상기 적어도 하나의 프로세서는, 서로 다른 종류의 분석 요소 간 변환을 위한 복수의 컨버터를 이용하여 기존 추상화 도메인에 대응되는 실드 도메인으로 변환하거나, 또는 상기 변환된 실드 도메인에 대응되는 기존 추상화 도메인으로 변환할 수 있다. The at least one processor converts into a shield domain corresponding to the existing abstraction domain using a plurality of converters for converting between different types of analysis elements, or converts into an existing abstraction domain corresponding to the converted shield domain. can

상기 적어도 하나의 프로세서는, 복수의 컨버터의 정적 분석과 관련하여 설정된 시간 제한에 기초하여 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 실드 실행을 수행하는 중에 상기 제한 시간이 초과할 경우, 추상화 실행을 수행할 수 있다. The at least one processor performs shield execution including a shield domain using a dynamic executor based on a time limit set in relation to static analysis of a plurality of converters, and the limited time exceeds during the shield execution. If you do, you can perform an abstraction implementation.

상기 적어도 하나의 프로세서는, 상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 수행된 실드 실행이 종료됨에 따라 추상화 실행을 위한 영역으로 변환할 수 있다. The at least one processor may perform shield execution including a shield domain on the converted domain using the dynamic executor, and may convert the converted domain into an domain for abstraction execution as the shield execution is terminated.

상기 적어도 하나의 프로세서는, 상기 변환된 영역에 기초하여 추상화 의미를 사용한 추상화 실행 또는 구체화 의미를 사용한 구체화 실행을 이용한 정적 분석을 통해 중간 분석 결과를 획득하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였는지 여부를 판단하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였을 경우, 상기 획득된 중간 분석 결과를 최종 분석 결과로 도출하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하지 못하였을 경우, 상기 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환할 수 있다. The at least one processor obtains an intermediate analysis result through static analysis using abstraction execution using abstract semantics or concrete execution using concrete semantics based on the transformed domain, and the obtained intermediate analysis result is preset fixed. It is determined whether a point has been reached, and when the obtained interim analysis result reaches a preset fixed point, the obtained interim analysis result is derived as a final analysis result, and the obtained interim analysis result is a preset fixed point. If it is not reached, the area to be analyzed may be converted through a dynamic executor during the static analysis.

자바스크립트 프로그램의 소프트웨어 품질 관리, 결함 검출, 보안 취약점 탐지에 적용이 가능하다.It can be applied to software quality management, defect detection, and security vulnerability detection of JavaScript programs.

입력 프로그램에 대한 정적 분석을 진행할 때 동적 실행기에서 실제 실행이 가능한 부분을 탐색하여 분석 시간을 감소시키고, 정적 분석 결과의 정확도를 향상시킬 수 있다. When performing static analysis on an input program, it is possible to reduce analysis time and improve the accuracy of static analysis results by searching for parts that can actually be executed in a dynamic executor.

고도로 최적화된 동적 실행기(상용 자바스크립트 엔진)을 사용하여 분석 성능과 정밀도를 향상시키고 불투명 코드에 대한 모델링 작업을 감소시킬 수 있다. Highly optimized dynamic executor (commercial JavaScript engine) can be used to improve analysis performance and precision and reduce modeling work for opaque code.

도 1은 정적 분석 동작을 설명하기 위한 흐름도이다.
도 2는 일 실시예에 따른 분석 가속화 시스템에서 동적 실행기를 활용한 정적 분석 동작을 설명하기 위한 흐름도이다.
도 3은 일 실시예에 따른 분석 가속화 시스템에서 동적 실행기를 활용한 정적 분석 동작을 설명하기 위한 또 다른 흐름도이다.
도 4는 일 실시예에 따른 분석 가속화 시스템의 구성을 설명하기 위한 블록도이다.
도 5는 일 실시예에 있어서, 추상값을 설명하기 위한 도면이다.
도 6은 일 실시예에 있어서, 결합 도메인을 사용한 추상화 실행을 설명하기 위한 예이다.
1 is a flowchart for explaining a static analysis operation.
2 is a flowchart illustrating a static analysis operation using a dynamic executor in an analysis acceleration system according to an embodiment.
3 is another flowchart illustrating a static analysis operation using a dynamic executor in an analysis acceleration system according to an embodiment.
4 is a block diagram illustrating a configuration of an analysis acceleration system according to an exemplary embodiment.
5 is a diagram for explaining an abstract value according to an embodiment.
6 is an example for explaining abstraction execution using a binding domain, according to an embodiment.

이하, 실시예를 첨부한 도면을 참조하여 상세히 설명한다.Hereinafter, an embodiment will be described in detail with reference to the accompanying drawings.

도 1은 정적 분석 동작을 설명하기 위한 흐름도이다. 1 is a flowchart for explaining a static analysis operation.

분석하고자 하는 입력 프로그램이 수신될 수 있다(110). 수신된 입력 프로그램의 초기 분석 결과가 생성될 수 있다(120). 이때, 현재 분석 결과에 대하여 추상화 의미(abstract semantics)를 사용한 추상화 실행(abstract transfer function)을 수행할 수 있다(130). 추상화 실행을 통해 중간 분석 결과가 획득될 수 있다(140). 추상화 실행을 통해 한 단계씩 실행하면서 분석 결과를 갱신해 나갈 수 있다. 분석 결과가 이전 단계의 분석 결과와 변화가 없는 고정점에 도달됨에 따라 분석이 종료되며, 최종 분석 결과가 도출될 수 있다(150, 160). An input program to be analyzed may be received (110). An initial analysis result of the received input program may be generated (120). At this time, an abstract transfer function using abstract semantics may be performed on the current analysis result (130). An intermediate analysis result may be obtained through abstraction execution (140). Analysis results can be updated while executing step by step through abstraction execution. As the analysis result reaches a fixed point where there is no change from the analysis result of the previous step, the analysis is terminated, and a final analysis result may be derived (150, 160).

이러한 정적 분석은 프로그램의 모든 부분을 추상화 실행을 통해 분석하는데, 이때, 추상화 실행을 최적화하기가 매우 어렵기 때문에 실행 시간을 단축시키기 어렵다. In this static analysis, all parts of the program are analyzed through abstraction execution. At this time, it is difficult to reduce the execution time because it is very difficult to optimize the abstraction execution.

실시예에서는 동적 실행기를 이용하여 동적 분석의 고성능을 활용할 수 있는 정적 분석 동작에 대하여 설명하기로 한다. 정적 분석의 안전성을 보장하면서도 분석 속도를 향상시키고 동시에 분석 결과의 정확도를 높일 수 있다. In the embodiment, a static analysis operation capable of utilizing the high performance of dynamic analysis using a dynamic executor will be described. While ensuring the safety of static analysis, it can improve the analysis speed and at the same time increase the accuracy of the analysis results.

도 2는 일 실시예에 따른 분석 가속화 시스템에서 동적 실행기를 활용한 정적 분석 동작을 설명하기 위한 흐름도이다.2 is a flowchart illustrating a static analysis operation using a dynamic executor in an analysis acceleration system according to an embodiment.

실시예에서는 동적 실행기를 통해 정적 분석 중에 추상화 실행과 구체화 실행을 유연하게 전환하는 방법 및 시스템을 제공할 수 있다. 상세하게는, 자바스크립트(JavaScript) 정적 분석 시, 동적 실행기를 통해 추상화 실행과 구체화 실행을 전환하는 것을 예를 들어 설명하기로 한다. 정적 분석 시에 1) 현재 추상화 상태를 실드 상태로 변환하고, 2) 변환된 실드 상태에서 실드 실행을 수행하고, 3) 수행된 실드 실행의 결과에 해당하는 추상화 상태로 변환하는 동적 실행기를 사용할 수 있다. In an embodiment, a method and system for flexibly switching between abstract execution and concrete execution during static analysis through a dynamic executor may be provided. In detail, switching between abstraction execution and materialization execution through a dynamic executor during static analysis of JavaScript will be described as an example. During static analysis, you can use a dynamic executor that 1) transforms the current abstraction state into a shielded state, 2) performs a shield execution on the transformed shielded state, and 3) transforms into an abstraction state corresponding to the result of the performed shield execution. there is.

다시 말해서, 추상값을 사용하지 않을 경우, 건전성을 유지하면서 특정 프로그램 부분에 대한 빠른 구체화 실행을 활용하고자 한다. 예를 들면, 다음의 자바스크립트 코드의 정적 분석이 고려될 수 있다.In other words, if you don't use abstract values, you want to take advantage of fast instantiation of specific program parts while maintaining sanity. For example, static analysis of the following JavaScript code can be considered.

Figure 112021097883495-pat00001
Figure 112021097883495-pat00001

y는 문자열 "p"를 저장하기 때문에, y + 1은 문자열 "p1"로 계산되고 x = obj[y + 1]은 obj.p1에 저장된 v의 추상값을 변수 x에 할당한다. obj가 추상값 v를 포함하더라도, 세 번째 행은 v의 값을 "사용"하지 않고 변수 x에만 "통과"하기 때문에, 코드를 구체화 실행을 수행할 수 있다. 이를 바탕으로 실드값을 사용하는 구체화 실행인 실드 실행 방식에 대하여 설명하기로 한다. 실드값은 실드 실행에서 추상값을 나타내는 기호이고, 실드 실행이 추상값에 액세스 하려고 할 때 동적 실행기의 종료를 나타낸다.Since y stores the string "p", y + 1 evaluates to the string "p1" and x = obj[y + 1] assigns the abstract value of v stored in obj.p1 to the variable x. Even if obj contains the abstract value v, the third line does not "use" the value of v, but only "passes" the variable x, so the code can perform materialized execution. Based on this, a shield execution method, which is a concrete execution using a shield value, will be described. A shield value is a symbol that represents an abstract value in a shielded execution, and represents the termination of a dynamic executor when a shielded execution tries to access an abstract value.

분석 가속화 시스템은 분석하고자 하는 입력 프로그램을 수신할 수 있다(110). 분석 가속화 시스템은 수신된 입력 프로그램의 초기 분석 결과를 획득할 수 있다(220). 분석 가속화 시스템은 초기 분석 결과에 기초하여 엔진(동적 실행기)에서 실행할 것인지 여부를 결정할 수 있다(230). 다시 말해서, 분석 가속화 시스템은 실드 실행 시 종료를 보장하는지 여부를 판단할 수 있다. 분석 가속화 시스템은 프로그램 정적 분석 중에 최적화된 엔진(동적 실행기)을 통해 분석할 수 있는 부분을 감지하고 가능한 많은 부분을 엔진을 통해 분석하게 만들어 정적 분석을 수행할 수 있다. The analysis acceleration system may receive an input program to be analyzed (110). The analysis acceleration system may obtain an initial analysis result of the received input program (220). The analysis acceleration system may determine whether to run in the engine (dynamic executor) based on the initial analysis results ( 230 ). In other words, the analysis acceleration system can determine whether or not to guarantee termination upon shield execution. The analysis acceleration system can perform static analysis by detecting parts that can be analyzed by an optimized engine (dynamic executor) during static analysis of a program and by making the engine analyze as many parts as possible.

분석 가속화 시스템은 엔진에서 실행할 것으로 결정함에 따라 자바스크립트 엔진을 이용한 정적 분석을 수행할 수 있고, 엔진에서 실행하지 않을 것으로 결정함에 따라 추상화 실행을 통해 정적 분석을 수행할 수 있다(232, 234). The analysis acceleration system may perform static analysis using the JavaScript engine according to the decision to execute in the engine, and may perform static analysis through abstract execution according to the determination not to execute in the engine (232, 234).

상세하게는, 분석 가속화 시스템은 실드 실행 시 종료를 보장하는 것으로 판단함에 따라 추상화 실행을 실드 실행을 위한 영역으로 변환할 수 있다(231). 분석 가속화 시스템은 변환된 영역에 대하여 동적 실행기를 통해 실드 실행을 수행할 수 있다(232). 분석 가속화 시스템은 동적 실행기를 통해 수행된 실드 실행을 추상화 실행을 위한 영역으로 변환할 수 있다(233). 분석 가속화 시스템은 변환된 추상화 실행을 위한 영역에 기초하여 추상화 실행을 통해 정적 분석을 수행할 수 있다. In detail, the analysis acceleration system may convert the abstraction execution into an area for shield execution as it is determined that termination is guaranteed upon shield execution (231). The analysis acceleration system may perform shield execution through the dynamic executor on the transformed region (232). The analysis acceleration system may convert the shield execution performed through the dynamic executor into an area for abstract execution (233). The analysis acceleration system may perform static analysis through the abstraction execution based on the area for the transformed abstraction execution.

분석 가속화 시스템은 실드 실행 시 종료를 보장하지 않는 것으로 판단됨에 따라 추상화 실행을 수행할 수 있다(234). 분석 가속화 시스템은 수행되는 추상화 실행을 통해 정적 분석을 수행할 수 있다. The analysis acceleration system may perform an abstraction execution as it determines that the shield execution does not guarantee termination (234). The analysis acceleration system can perform static analysis through abstraction execution being performed.

분석 가속화 시스템은 정적 분석을 수행한 중간 분석 결과를 획득할 수 있다(240). 분석 가속화 시스템은 분석 결과가 이전 단계의 분석 결과와 변화가 없는 고정점에 도달됨에 따라 분석을 종료하며, 최종 분석 결과가 도출할 수 있다(250, 260). 이때, 분석 가속화 시스템은 분석 결과를 엔진에서 실행할 수 있는 표현으로 변환하고, 중간 분석 결과와 합치는 연산 등을 수행할 수 있다. The analysis acceleration system may obtain interim analysis results by performing static analysis (240). The analysis acceleration system ends the analysis when the analysis result reaches a fixed point where there is no change from the analysis result of the previous step, and the final analysis result may be derived (250, 260). In this case, the analysis acceleration system may convert the analysis result into an expression that can be executed by the engine, and may perform an operation combining the intermediate analysis result and the like.

도 3은 일 실시예에 따른 분석 가속화 시스템에서 동적 실행기를 활용한 정적 분석 동작을 설명하기 위한 또 다른 흐름도이다. 3 is another flowchart illustrating a static analysis operation using a dynamic executor in an analysis acceleration system according to an embodiment.

분석 가속화 시스템은 분석하고자 하는 입력 프로그램을 수신할 수 있다(110). 분석 가속화 시스템은 수신된 입력 프로그램의 초기 분석 결과를 획득할 수 있다(220). 이때, 초기 분석 결과는 초기 분석 상태를 의미할 수 있고, 별도의 분석을 통해 획득된 것일 수 있다. 분석 가속화 시스템은 실드 실행 시 종료를 보장하지 않는 것을 판단할 수 있다(310). The analysis acceleration system may receive an input program to be analyzed (110). The analysis acceleration system may obtain an initial analysis result of the received input program (220). In this case, the initial analysis result may mean an initial analysis state and may be obtained through a separate analysis. The analysis acceleration system may determine that termination is not guaranteed upon shield execution (310).

분석 가속화 시스템은 실드 실행 시 종료를 보장하지 않는 것으로 판단됨에 따라 추상화 실행을 실드 실행을 위한 영역으로 변환할 수 있다(320). 분석 가속화 시스템은 변환된 영역에 대하여 동적 실행기를 통해 실드 실행을 수행할 수 있다(330). 분석 가속화 시스템은 복수의 컨버터의 정적 분석과 관련하여 설정된 시간 제한에 기초하여 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행할 수 있다. As the analysis acceleration system determines that termination is not guaranteed during shield execution, it may convert the abstraction execution into an area for shield execution (320). The analysis acceleration system may perform shield execution through the dynamic executor on the transformed region (330). The analysis acceleration system may perform a shield run including a shield domain using a dynamic executor based on a set time limit associated with static analysis of a plurality of converters.

분석 가속화 시스템은 실드 실행을 수행하는 중에 제한 시간이 초과하는지 여부를 판단할 수 있다(340). 분석 가속화 시스템은 제한 시간이 초과할 경우, 추상화 실행을 수행할 수 있다(350). 분석 가속화 시스템은 수행되는 추상화 실행을 통해 정적 분석을 수행할 수 있다. 분석 가속화 시스템은 정적 분석을 수행한 중간 분석 결과를 획득할 수 있다(240). The analysis acceleration system may determine whether a time limit is exceeded while performing the shield run (340). The analysis acceleration system may perform an abstraction execution if the time limit is exceeded (350). The analysis acceleration system can perform static analysis through abstraction execution being performed. The analysis acceleration system may obtain interim analysis results by performing static analysis (240).

또한 분석 가속화 시스템은 제한 시간이 초과하지 않을 경우, 동적 실행기를 통해 수행된 실드 실행을 추상화 실행을 위한 영역으로 변환할 수 있다(360). 분석 가속화 시스템은 변환된 추상화 실행을 위한 영역에 기초하여 추상화 실행을 통해 정적 분석을 수행할 수 있다. 분석 가속화 시스템은 정적 분석을 수행한 중간 분석 결과를 획득할 수 있다(240).Also, if the time limit is not exceeded, the analysis acceleration system may convert the shield execution performed through the dynamic executor into an area for abstract execution (360). The analysis acceleration system may perform static analysis through the abstraction execution based on the area for the transformed abstraction execution. The analysis acceleration system may obtain interim analysis results by performing static analysis (240).

분석 가속화 시스템은 분석 결과가 이전 단계의 분석 결과와 변화가 없는 고정점에 도달됨에 따라 분석을 종료하며, 최종 분석 결과가 도출할 수 있다(250, 260). 이때, 분석 가속화 시스템은 분석 결과를 엔진에서 실행할 수 있는 표현으로 변환하고, 중간 분석 결과와 합치는 연산 등을 수행할 수 있다. The analysis acceleration system ends the analysis when the analysis result reaches a fixed point where there is no change from the analysis result of the previous step, and the final analysis result may be derived (250, 260). In this case, the analysis acceleration system may convert the analysis result into an expression that can be executed by the engine, and may perform an operation combining the intermediate analysis result and the like.

도 4는 일 실시예에 따른 분석 가속화 시스템의 구성을 설명하기 위한 블록도이다. 분석 가속화 시스템(100)은 동적 실행기를 활용하여 정적 분석 중에 추상화 실행과 구체화 실행을 유연하게 전환하는 동작을 수행할 수 있다. 분석 가속화 시스템은 메모리(410) 및 프로세서(420)를 포함할 수 있다.4 is a block diagram illustrating a configuration of an analysis acceleration system according to an exemplary embodiment. The analysis acceleration system 100 may perform an operation of flexibly switching between abstract execution and concrete execution during static analysis by utilizing a dynamic executor. The analysis acceleration system may include a memory 410 and a processor 420 .

메모리(410)는 컴퓨터 판독가능 명령어, 데이터 구조, 프로그램 모듈 또는 기타 데이터와 같은 정보의 저장을 위한 임의의 방법 또는 기술로 구현된 휘발성 및 비휘발성, 분리형 및 비분리형 매체를 모두 포함하여 구성될 수 있으며, 분석 가속화 시스템(100)의 적어도 하나의 다른 구성요소에 관계된 명령어 또는 데이터를 저장한다.Memory 410 may comprise both volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules or other data. and stores instructions or data related to at least one other component of the analysis acceleration system 100.

프로세서(420)는 중앙처리장치, 애플리케이션 프로세서, 또는 커뮤니케이션 프로세서 중 하나 또는 그 이상을 포함할 수 있다. 예를 들면, 프로세서(420)는 분석 가속화 시스템(100)의 적어도 하나의 다른 구성요소들의 제어 및/또는 통신에 관한 연산이나 데이터 처리를 실행할 수 있다.Processor 420 may include one or more of a central processing unit, an application processor, or a communication processor. For example, the processor 420 may execute calculations or data processing related to control and/or communication of at least one other component of the analysis acceleration system 100 .

도 5는 일 실시예에 있어서, 추상값을 설명하기 위한 도면이다. 5 is a diagram for explaining an abstract value according to an embodiment.

분석 가속화 시스템은 동적 실행기를 위해 실드 도메인과 실체화 맵을 사용하여 실드 실행을 정의할 수 있다. 민감한 추상화 실행과 실드 실행을 결합하기 위하여 민감한 추상화 도메인과 실드 도메인의 결합 도메인이 정의될 수 있다. 결합 도메인을 이용하여 추상화 실행의 건전성과 종결성이 입증될 수 있다. The analysis acceleration system can define shield executions using shield domains and instantiation maps for dynamic executors. In order to combine sensitive abstraction implementations with shield implementations, a binding domain of sensitive abstraction domains and shield domains can be defined. The integrity and finality of abstraction implementations can be demonstrated using binding domains.

프로그램 P를 상태 전환 시스템

Figure 112021097883495-pat00002
으로 정의할 수 있다. 프로그램은
Figure 112021097883495-pat00003
의 초기 상태에서 시작하며, 전이 관계
Figure 112021097883495-pat00004
는 상태가 다른 상태로 변환되는 방법을 설명한다. 수집된 의미론
Figure 112021097883495-pat00005
는 프로그램 P의 초기 상태부터 도달 가능한 상태로 구성될 수 있다. 전이 함수
Figure 112021097883495-pat00006
를 사용하여 다음과 같이 계산할 수 있다.Program P State Transition System
Figure 112021097883495-pat00002
can be defined as program is
Figure 112021097883495-pat00003
Starting from the initial state of , the transition relation
Figure 112021097883495-pat00004
describes how a state is transformed into another state. collected semantics
Figure 112021097883495-pat00005
can be configured as a state reachable from the initial state of program P. transfer function
Figure 112021097883495-pat00006
can be used to calculate:

Figure 112021097883495-pat00007
Figure 112021097883495-pat00007

여기서, 구체화 도메인

Figure 112021097883495-pat00008
Figure 112021097883495-pat00009
,
Figure 112021097883495-pat00010
,
Figure 112021097883495-pat00011
를 조인(join)(
Figure 112021097883495-pat00012
), 미트(meet)(
Figure 112021097883495-pat00013
), 파티셜 오더(partial order)(
Figure 112021097883495-pat00014
) 연산자로 사용하는 완전한 격자이다. 상태 셋은 초기 상태
Figure 112021097883495-pat00015
을 나타낸다. Here, the reification domain
Figure 112021097883495-pat00008
Is
Figure 112021097883495-pat00009
,
Figure 112021097883495-pat00010
,
Figure 112021097883495-pat00011
to join(
Figure 112021097883495-pat00012
), meet(
Figure 112021097883495-pat00013
), partial order (
Figure 112021097883495-pat00014
) is a complete lattice used as an operator. state three is the initial state
Figure 112021097883495-pat00015
indicates

1단계 실행 단계:

Figure 112021097883495-pat00016
는 전이 관계:
Figure 112021097883495-pat00017
Figure 112021097883495-pat00018
를 사용하여 상태를 변환할 수 있다. 예를 들면, 도 5의 코드는 변수 x의 절대값을 부정을 계산하는 간단한 프로그램이다. 상태는
Figure 112021097883495-pat00019
에 저장된 레이블과 정수의 쌍이다. 초기 상태를
Figure 112021097883495-pat00020
으로 가정하면 프로그램이 값이 -42인 변수 x로
Figure 112021097883495-pat00021
에서 시작함을 나타낸다. 그런 다음 다음과 같은 추적이 실행될 수 있다. Stage 1 Execution Steps:
Figure 112021097883495-pat00016
is the transitive relationship:
Figure 112021097883495-pat00017
Figure 112021097883495-pat00018
can be used to transform the state. For example, the code in Figure 5 is a simple program that computes the negation of the absolute value of the variable x. status is
Figure 112021097883495-pat00019
A pair of labels and integers stored in . the initial state
Figure 112021097883495-pat00020
Assuming that the program returns the variable x with value -42
Figure 112021097883495-pat00021
indicates that it starts at A trace like the following could then be run:

Figure 112021097883495-pat00022
Figure 112021097883495-pat00022

추상화 실행은 전이 함수 F를 추상화 전이 함수(

Figure 112021097883495-pat00023
)로 근접하게 하여 다음과 같이 무한 반복을 통해 추상화 의미론
Figure 112021097883495-pat00024
을 획득할 수 있다. The abstraction implementation converts the transfer function F to the abstraction transfer function (
Figure 112021097883495-pat00023
), and abstraction semantics through infinite repetition as follows
Figure 112021097883495-pat00024
can be obtained.

Figure 112021097883495-pat00025
Figure 112021097883495-pat00025

상태 추상화

Figure 112021097883495-pat00026
를 구체화 함수
Figure 112021097883495-pat00027
와 추상화 함수
Figure 112021097883495-pat00028
로 된 구체화 도메인
Figure 112021097883495-pat00029
와 추상화 도메인
Figure 112021097883495-pat00030
간의 갈로이스(Galois) 연결로 정의할 수 있다. 초기 추상화 상태
Figure 112021097883495-pat00031
는 초기 상태 셋의 추상화
Figure 112021097883495-pat00032
를 나타낸다. 추상화 전이 함수(
Figure 112021097883495-pat00033
)는 추상화 1단계 실행 단계
Figure 112021097883495-pat00034
를 가지는
Figure 112021097883495-pat00035
로 정의될 수 있다. 건전한 상태 추상화를 위해서는 조인 연산자와 추상화 1단계 실행이 다음 조건을 충족해야 한다. state abstraction
Figure 112021097883495-pat00026
materialize function
Figure 112021097883495-pat00027
and abstract function
Figure 112021097883495-pat00028
reification domain in
Figure 112021097883495-pat00029
and abstraction domain
Figure 112021097883495-pat00030
It can be defined as a Galois connection between initial abstraction state
Figure 112021097883495-pat00031
is an abstraction of the set of initial states
Figure 112021097883495-pat00032
indicates Abstraction transition function (
Figure 112021097883495-pat00033
) is the abstraction level 1 execution phase
Figure 112021097883495-pat00034
having
Figure 112021097883495-pat00035
can be defined as For a healthy state abstraction, the join operator and execution of the first level of the abstraction must satisfy the following conditions:

Figure 112021097883495-pat00036
Figure 112021097883495-pat00036

Figure 112021097883495-pat00037
Figure 112021097883495-pat00037

간단한 추상화 도메인은 도메인 연산자로서 셋 연산자(set operators)로 하는

Figure 112021097883495-pat00038
이다. -는 음의 정수, +는 양의 정수, 0은 제로(zero)를 나타낸다. 추상화 도메인과 초기 추상화 상태
Figure 112021097883495-pat00039
를 사용하여 도 5의 코드를 분석할 수 있다. 그러면, x가 x=-x를 실행하여 양의 값을 가질 수 있지만, 프로그램에서 x가 0이 되는 방법이 없기 때문에 분석 결과는 {-,+}가 된다. A simple abstraction domain is a set operator as a domain operator.
Figure 112021097883495-pat00038
am. - indicates a negative integer, + indicates a positive integer, and 0 indicates zero. Abstraction Domains and Initial Abstraction States
Figure 112021097883495-pat00039
The code of FIG. 5 can be analyzed using Then, x can have a positive value by executing x=-x, but since there is no way for x to become 0 in the program, the analysis result is {-,+}.

추상화 실행은 정적 분석의 정밀도를 높이기 위해 분석 민감도로 정의되는 경우가 많다. 민감한 추상화 도메인

Figure 112021097883495-pat00040
은 정적 분석 중 도달 가능한 상태에 대한 다중 시점을 제공하는 뷰 추상화(view abstraction)
Figure 112021097883495-pat00041
로 정의될 수 있다. 제한된 수의 뷰
Figure 112021097883495-pat00042
가 상태
Figure 112021097883495-pat00043
셋에 매핑될 수 있다. 각 뷰
Figure 112021097883495-pat00044
는 상태 셋
Figure 112021097883495-pat00045
을 나타내고, 각 상태는 고유의 뷰
Figure 112021097883495-pat00046
를 포함한다(
Figure 112021097883495-pat00047
). 민감도 상태 추상화
Figure 112021097883495-pat00048
는 다음과 같은 구체화 함수를 따르는 구체화 도메인
Figure 112021097883495-pat00049
와 추상화 도메인
Figure 112021097883495-pat00050
사이의 갈로이스 연결이다. Abstraction practices are often defined as analytical sensitivity to increase the precision of static analysis. sensitive abstraction domain
Figure 112021097883495-pat00040
is a view abstraction that provides multiple views into reachable states during static analysis.
Figure 112021097883495-pat00041
can be defined as limited number of views
Figure 112021097883495-pat00042
fall state
Figure 112021097883495-pat00043
can be mapped to a set. each view
Figure 112021097883495-pat00044
is state three
Figure 112021097883495-pat00045
, where each state is a unique view
Figure 112021097883495-pat00046
contains (
Figure 112021097883495-pat00047
). Sensitivity state abstraction
Figure 112021097883495-pat00048
is a reification domain that obeys the reification function
Figure 112021097883495-pat00049
and abstraction domain
Figure 112021097883495-pat00050
is the Galois connection between

Figure 112021097883495-pat00051
Figure 112021097883495-pat00051

여기서 분석 민감도로 추상화 1단계 실행 단계

Figure 112021097883495-pat00052
:
Figure 112021097883495-pat00053
는 다음과 같이 정의될 수 있다. Abstraction 1 Step Execution Step with Analytical Sensitivity Here
Figure 112021097883495-pat00052
:
Figure 112021097883495-pat00053
can be defined as:

Figure 112021097883495-pat00054
Figure 112021097883495-pat00054

여기서,

Figure 112021097883495-pat00055
는 뷰
Figure 112021097883495-pat00056
에서 다른 뷰
Figure 112021097883495-pat00057
로의 뷰 전환에 대한 추상화 의미이다. 분석 건전성을 위해 다음과 같은 조건을 만족해야 한다. here,
Figure 112021097883495-pat00055
is the view
Figure 112021097883495-pat00056
another view from
Figure 112021097883495-pat00057
It is an abstract semantics for view transition to . For analytical integrity, the following conditions must be satisfied:

Figure 112021097883495-pat00058
Figure 112021097883495-pat00058

가장 널리 사용되는 분석 민감도 중 하나는 흐름에 민감한 뷰 추상화

Figure 112021097883495-pat00059
로 정의된 흐름 민감도이다. 여기서,
Figure 112021097883495-pat00060
이다. One of the most widely used analytics sensitivities is the flow-sensitive view abstraction.
Figure 112021097883495-pat00059
is the flow sensitivity defined by here,
Figure 112021097883495-pat00060
am.

위의 예에서 초기 추상화 상태

Figure 112021097883495-pat00061
로 흐름 민감도를 적용한 분석 결과는 다음과 같이 나타낼 수 있다. In the example above, the initial abstraction state
Figure 112021097883495-pat00061
The analysis result applying the flow sensitivity as , can be expressed as follows.

Figure 112021097883495-pat00062
Figure 112021097883495-pat00062

전이 관계

Figure 112021097883495-pat00063
를 실행 실드 상태에서 실드 전이 관계
Figure 112021097883495-pat00064
로 확장함으로써 실드 실행이 정의될 수 있다. 상세하게는, 구체화 상태
Figure 112021097883495-pat00065
를 실드 값
Figure 112021097883495-pat00066
으로 값
Figure 112021097883495-pat00067
를 확장함으로써 구체화 상태
Figure 112021097883495-pat00068
를 실드 상태
Figure 112021097883495-pat00069
로 확장할 수 있다. 실드 전이 관계
Figure 112021097883495-pat00070
도 정의될 수 있다.
Figure 112021097883495-pat00071
가 다른 실드 상태로 다른 실드 전이를 가지지 않을 때
Figure 112021097883495-pat00072
의 k반복에 대하여 표기법
Figure 112021097883495-pat00073
을 사용하고
Figure 112021097883495-pat00074
라고 쓴다. 다음과 같이 실드 실행의 유효성을 정의할 수 있다. transitive relationship
Figure 112021097883495-pat00063
The shield transition relationship in the shield state
Figure 112021097883495-pat00064
Shield execution can be defined by extending Specifically, the materialization state
Figure 112021097883495-pat00065
to the shield value
Figure 112021097883495-pat00066
value as
Figure 112021097883495-pat00067
materialize state by expanding
Figure 112021097883495-pat00068
shield state
Figure 112021097883495-pat00069
can be extended to shield transition relationship
Figure 112021097883495-pat00070
can also be defined.
Figure 112021097883495-pat00071
does not have another shield transition to a different shield state
Figure 112021097883495-pat00072
notation for k iterations of
Figure 112021097883495-pat00073
is using
Figure 112021097883495-pat00074
write You can define the validity of shield execution as follows:

실드 전이 관계는 실드 상태

Figure 112021097883495-pat00075
,
Figure 112021097883495-pat00076
에 대해 다음 조건이 충족될 때 유효하다. The shield transition relation is the shield state
Figure 112021097883495-pat00075
,
Figure 112021097883495-pat00076
is valid when the following conditions are met:

Figure 112021097883495-pat00077
Figure 112021097883495-pat00077

여기서,

Figure 112021097883495-pat00078
은 실드 값에서 구체화 값까지의 인스턴스화 맵을 나타내며,
Figure 112021097883495-pat00079
은 인스턴스화 맵
Figure 112021097883495-pat00080
을 사용하여 실드 상태
Figure 112021097883495-pat00081
에서 각 실드 값
Figure 112021097883495-pat00082
을 해당 값
Figure 112021097883495-pat00083
으로 대체하여 생성된 상태를 나타낸다. here,
Figure 112021097883495-pat00078
denotes the instantiation map from the shield value to the materialized value,
Figure 112021097883495-pat00079
is the instantiation map
Figure 112021097883495-pat00080
Shield state using
Figure 112021097883495-pat00081
Each shield value in
Figure 112021097883495-pat00082
to that value
Figure 112021097883495-pat00083
to indicate the created state.

실드 실행은 기호 표현식 및 경로 제약 대신 실드 값만 지원한다는 점에서 기존의 기호 실행과 다르다. 예를 들면, 다음의 추적은 도 5의 실행 예제에 대한 전통적인 기호 실행을 나타낸다.Sealed execution differs from traditional symbolic execution in that it supports only shield values instead of symbolic expressions and path constraints. For example, the following trace shows the traditional symbolic implementation for the implementation example of FIG.

Figure 112021097883495-pat00084
Figure 112021097883495-pat00084

먼거, 기호 값

Figure 112021097883495-pat00085
Figure 112021097883495-pat00086
에서 변수 x에 할당한다. 조건부 분기의 경우, 각각 참 및 거짓 분기의 경로 조건
Figure 112021097883495-pat00087
Figure 112021097883495-pat00088
이 다른 두 개의 기호 상태를 생성한다. x=x, x=-x 명령문을 실행한 후, 변수 x는 각각
Figure 112021097883495-pat00089
에서 기호 표현식
Figure 112021097883495-pat00090
,
Figure 112021097883495-pat00091
를 저장할 수 있다. 단, 실드 실행은 다음과 같이
Figure 112021097883495-pat00092
에서 정지될 수 있다. distant, symbolic value
Figure 112021097883495-pat00085
second
Figure 112021097883495-pat00086
assign to the variable x. For conditional branches, path conditions for true and false branches respectively
Figure 112021097883495-pat00087
class
Figure 112021097883495-pat00088
creates two other symbolic states. After executing the statements x=x, x=-x, the variable x is respectively
Figure 112021097883495-pat00089
symbolic expression in
Figure 112021097883495-pat00090
,
Figure 112021097883495-pat00091
can be saved. However, the shield execution is as follows
Figure 112021097883495-pat00092
can be stopped at

Figure 112021097883495-pat00093
Figure 112021097883495-pat00093

분기에는 실드 값

Figure 112021097883495-pat00094
의 실제 값이 필요하기 때문이다. 실드 상태를 포함하는 추상화 도메인을 정의하기 위하여 실드 값에서 추상값으로 실체화 맵
Figure 112021097883495-pat00095
을 정의할 수 있다. 구체화 함수
Figure 112021097883495-pat00096
는 구체화 함수
Figure 112021097883495-pat00097
로 정의하며 다음과 같은 값을 가질 수 있다.Shield value in quarter
Figure 112021097883495-pat00094
because we need the actual value of A realization map from shield values to abstract values to define abstraction domains that contain shield states.
Figure 112021097883495-pat00095
can define reification function
Figure 112021097883495-pat00096
is the materialization function
Figure 112021097883495-pat00097
and can have the following values.

Figure 112021097883495-pat00098
Figure 112021097883495-pat00098

주어진 실드 상태

Figure 112021097883495-pat00099
의 실체화 맵
Figure 112021097883495-pat00100
은 다음과 같이 정의될 수 있다. given shield state
Figure 112021097883495-pat00099
materialized map of
Figure 112021097883495-pat00100
can be defined as:

Figure 112021097883495-pat00101
Figure 112021097883495-pat00101

실드 도메인 (

Figure 112021097883495-pat00102
Figure 112021097883495-pat00103
)은 다음과 같이 구체화 함수
Figure 112021097883495-pat00104
와 실드 1단계 실행 단계(
Figure 112021097883495-pat00105
)로 정의될 수 있다.shield domain (
Figure 112021097883495-pat00102
Figure 112021097883495-pat00103
) is the materialization function as
Figure 112021097883495-pat00104
and shield stage 1 execution stage (
Figure 112021097883495-pat00105
) can be defined as

Figure 112021097883495-pat00106
Figure 112021097883495-pat00106

Figure 112021097883495-pat00107
Figure 112021097883495-pat00107

지정된 중요한 추상화 도메인의 결합 도메인을 실드 도메인과 1단계 실행으로 정의될 수 있다.Combining domains of designated critical abstraction domains can be defined as shield domains and first-level implementations.

결합 도메인은

Figure 112021097883495-pat00108
Figure 112021097883495-pat00109
이며, 구체화 함수
Figure 112021097883495-pat00110
및 조인 연산자는 다음과 같이 정의될 수 있다.binding domain
Figure 112021097883495-pat00108
Figure 112021097883495-pat00109
is a reification function
Figure 112021097883495-pat00110
and the join operator can be defined as:

Figure 112021097883495-pat00111
Figure 112021097883495-pat00111

Figure 112021097883495-pat00112
Figure 112021097883495-pat00112

결합 도메인에 대한 1단계 실행을 정의하기 전에 분석 요소를 도입하여 민감한 추상화 도메인과 실드 도메인에 다양한 유형의 추상화 상태를 쉽게 구성할 수 있다.By introducing an element of analysis before defining the first-level implementation for the binding domain, different types of abstraction states can be easily constructed in the sensitive and shield domains.

분석 요소

Figure 112021097883495-pat00113
Figure 112021097883495-pat00114
는 민감한 추상화 도메인
Figure 112021097883495-pat00115
에서 추상화 상태와 뷰의 쌍, 실드 도메인
Figure 112021097883495-pat00116
에서 실드 상태와 실체화 맵의 쌍 중 어느 하나이다. 구체화 함수
Figure 112021097883495-pat00117
는 다음과 같이 정의될 수 있다.analysis element
Figure 112021097883495-pat00113
Figure 112021097883495-pat00114
is a sensitive abstraction domain
Figure 112021097883495-pat00115
pair of abstraction state and view in shield domain
Figure 112021097883495-pat00116
is one of a pair of shield state and materialization map in . reification function
Figure 112021097883495-pat00117
can be defined as:

Figure 112021097883495-pat00118
Figure 112021097883495-pat00118

또한, 서로 다른 종류의 분석 요소 간에 자유롭게 변환하기 위해 두 개의 컨버터가 정의될 수 있다. Also, two converters can be defined to freely convert between different types of analysis elements.

Figure 112021097883495-pat00119
Figure 112021097883495-pat00119

Figure 112021097883495-pat00120
Figure 112021097883495-pat00120

컨버터

Figure 112021097883495-pat00121
는 전체인 반면, 다른 하나인
Figure 112021097883495-pat00122
는 부분이다. 따라서, 컨버터
Figure 112021097883495-pat00123
Figure 112021097883495-pat00124
로 정의되어 있는 경우에만 민감한 추상화 도메인의 분석 요소
Figure 112021097883495-pat00125
를 실드 도메인의 다른 분석 요소로 변환할 수 있다. 또한, 모든
Figure 112021097883495-pat00126
에 대한 정보 손실없이 주어진 분석 요소를 변환해야 한다.converter
Figure 112021097883495-pat00121
is the whole, while the other
Figure 112021097883495-pat00122
is part. Thus, the converter
Figure 112021097883495-pat00123
go
Figure 112021097883495-pat00124
An analysis element in an abstraction domain that is sensitive only if it is defined as
Figure 112021097883495-pat00125
can be converted into other analysis elements in the shield domain. Also, all
Figure 112021097883495-pat00126
Transform a given element of analysis without loss of information about .

Figure 112021097883495-pat00127
Figure 112021097883495-pat00127

결합된 두 개의 컨버터

Figure 112021097883495-pat00128
Figure 112021097883495-pat00129
를 가지는 결합 1단계 실행
Figure 112021097883495-pat00130
을 정의한다. 새로운 실드 실행이 시작되거나 기존 실행이 중지될 경우 분석 요소를 변환하는 리폼(reform) 단계, 실행 단계는 민감한 추상화 도메인에서 추상화 1단계 실행 단계와 실드 도메인에서 실드 1단계 실행을 사용하여 각 분석 요소의 실행을 수행하는 실행 단계로 구성될 수 있다.Two converters combined
Figure 112021097883495-pat00128
and
Figure 112021097883495-pat00129
Combining step 1 execution with
Figure 112021097883495-pat00130
define When a new shield run is started or an existing run is stopped, the reform phase transforms the analytic element. The run phase uses an abstraction phase 1 run phase in the sensitive abstraction domain and a shield phase 1 run in the shield domain to determine the performance of each analytic element. It can consist of execution steps that perform execution.

결합 1단계 실행

Figure 112021097883495-pat00131
는 다음과 같이 정의될 수 있다.Running step 1 of combining
Figure 112021097883495-pat00131
can be defined as:

Figure 112021097883495-pat00132
Figure 112021097883495-pat00132

여기서,

Figure 112021097883495-pat00133
이다. here,
Figure 112021097883495-pat00133
am.

리폼 함수는 주어진 결합 상태

Figure 112021097883495-pat00134
에서 새로운 실드 실행이 시작되거나 기존의 실드 실행이 종료되는 경우 분석 요소를 만들어 변환한다. 특히, 민감한 추상화 도메인의 분석 요소
Figure 112021097883495-pat00135
에 대해 컨버터
Figure 112021097883495-pat00136
가 정의되어 있다면, 리폼은 실드 도메인에 해당하는 분석 요소
Figure 112021097883495-pat00137
로 변환하여 새로운 실드 실행을 도입할 수 있다. 반면에, 실드 도메인에 있는 분석 요소
Figure 112021097883495-pat00138
일 경우,
Figure 112021097883495-pat00139
로 변환될 실드 상태가 없으면
Figure 112021097883495-pat00140
에 대한 실드 실행이 종료된다. 중요한 추상화 도메인에서 분석 요소를 해당하는 분석 요소
Figure 112021097883495-pat00141
로 변환하고
Figure 112021097883495-pat00142
와 함께
Figure 112021097883495-pat00143
에 저장된 현재 추상화 상태로 병합할 수 있다.The reform function is given a combined state
Figure 112021097883495-pat00134
When a new shield run is started or an existing shield run is terminated, an analysis element is created and converted. In particular, the analytic elements of sensitive abstraction domains
Figure 112021097883495-pat00135
About converter
Figure 112021097883495-pat00136
is defined, the reform is an analysis element corresponding to the shield domain.
Figure 112021097883495-pat00137
to introduce a new shield implementation. On the other hand, analysis elements in the shield domain
Figure 112021097883495-pat00138
In case of
Figure 112021097883495-pat00139
If there is no shield state to be converted to
Figure 112021097883495-pat00140
The shield execution for is terminated. Analytical Elements Corresponding Analytical Elements in Critical Abstraction Domains
Figure 112021097883495-pat00141
convert to
Figure 112021097883495-pat00142
with
Figure 112021097883495-pat00143
can be merged into the current abstraction state stored in

리폼 함수를 공식적으로 정의하기 위해, 먼저 두개의 컨버터를 사용하여 분석 요소에 대한

Figure 112021097883495-pat00144
함수를 정의할 수 있다.To formally define the reform function, we first use two converters to
Figure 112021097883495-pat00144
functions can be defined.

분석 요소에 대한 리폼 함수

Figure 112021097883495-pat00145
는 다음과 같이 정의될 수 있다.Reform functions for analytic elements
Figure 112021097883495-pat00145
can be defined as:

Figure 112021097883495-pat00146
Figure 112021097883495-pat00146

리폼 함수:

Figure 112021097883495-pat00147
는 다음과 같이 정의될 수 있다. Reform function:
Figure 112021097883495-pat00147
can be defined as:

Figure 112021097883495-pat00148
Figure 112021097883495-pat00148

여기서,

Figure 112021097883495-pat00149
이고, 점 표기법
Figure 112021097883495-pat00150
는 함수
Figure 112021097883495-pat00151
의 요소별 확장 함수를 나타낸다. here,
Figure 112021097883495-pat00149
, and dot notation
Figure 112021097883495-pat00150
is a function
Figure 112021097883495-pat00151
represents the element-wise expansion function of .

결합 도메인을 가진 추상화 실행의 예를 나타낸다. 도 6은 변수 x에 대한 세 가지 초기값 셋을 가진 도 5의 실행 예에 대한 분석 흐름을 나타낸 것이다. X에 저장된 정수에 대해 추상화 도메인(-, 0, +)을 사용하고, 상태 레이블을 뷰로 활용하는 흐름 민감도를 사용한다. 간결성을 위해 -0이 집합 {-, 0}을 나타내도록 추상값 연결을 사용할 수 있다. Shows an example of an abstraction implementation with binding domains. Figure 6 shows the analysis flow for the implementation example of Figure 5 with three sets of initial values for the variable x. It uses abstraction domains (-, 0, +) for integers stored in X, and uses flow sensitivity that utilizes state labels as views. For brevity, we can use abstract-value linkage so that -0 represents the set {-, 0}.

도 6(a)는 각 그래프에 사용된 표기법을 나타낸다. 솔리드 상자는 레이블

Figure 112021097883495-pat00152
과 추상화 상태
Figure 112021097883495-pat00153
의 쌍인 분석 요소를 나타낸다. 꺽쇠괄호로 묶인 쌍은 추상화 인스턴스화 맵
Figure 112021097883495-pat00154
과 실드 상태
Figure 112021097883495-pat00155
의 쌍인 분석 요소를 나타낸다. 실제로 그래프에서 각 쌍의 실드 상태 부분(오른쪽)에는 레이블이 없는 x 변수값만 포함된다. 간결성을 위해 레이블이 있는 노드 옆에 배치하여 레이블을 나타낸다. 실선은 레이블
Figure 112021097883495-pat00156
에서 다른 레이블
Figure 112021097883495-pat00157
로의 뷰 전이(
Figure 112021097883495-pat00158
)이다. 점선은 실드 전이
Figure 112021097883495-pat00159
이다. 레이블이 원으로 표시된 3개의 실선은 두 개의 컨버터
Figure 112021097883495-pat00160
및 조인 연산자를 나타낸다.6(a) shows the notation used in each graph. solid box labels
Figure 112021097883495-pat00152
and abstraction state
Figure 112021097883495-pat00153
Represents an analysis element that is a pair of . Pairs enclosed in angle brackets are abstraction instantiation maps.
Figure 112021097883495-pat00154
and shield state
Figure 112021097883495-pat00155
Represents an analysis element that is a pair of . In fact, the shield state portion of each pair in the graph (right) contains only unlabeled values of the x variable. For brevity, you indicate the label by placing it next to the labeled node. The solid line is the label
Figure 112021097883495-pat00156
different labels from
Figure 112021097883495-pat00157
view transition to (
Figure 112021097883495-pat00158
)am. Dotted line is shield transition
Figure 112021097883495-pat00159
am. The three solid lines labeled with circles represent the two converters.
Figure 112021097883495-pat00160
and a join operator.

도 6(b)는 초기값 x가 0일 때 결합 도메인을 사용한 분석을 나타낸다. 먼저, 리폼 단계에서 컨버터

Figure 112021097883495-pat00161
Figure 112021097883495-pat00162
을 레이블로 하여 분석 요소
Figure 112021097883495-pat00163
Figure 112021097883495-pat00164
로 변환한다. 값은 단일값만 나타내기 때문에 실드 값은 포함되지 않는다. 프로그램이 끝날 때까지
Figure 112021097883495-pat00165
으로부터 실드 실행이 성공적으로 계속된다. 실드 상태
Figure 112021097883495-pat00166
에 대해 더 이상 실드 전환이 불가능하므로 컨버터
Figure 112021097883495-pat00167
를 통해
Figure 112021097883495-pat00168
으로 변환된다.Figure 6 (b) shows the analysis using the binding domain when the initial value x is 0. First, the converter in the reforming stage
Figure 112021097883495-pat00161
Is
Figure 112021097883495-pat00162
as the label for the analysis element
Figure 112021097883495-pat00163
cast
Figure 112021097883495-pat00164
convert to Shield values are not included because the value only represents a single value. until the end of the program
Figure 112021097883495-pat00165
The shield execution from continues successfully. shield state
Figure 112021097883495-pat00166
Since shield conversion is no longer possible for
Figure 112021097883495-pat00167
Through the
Figure 112021097883495-pat00168
is converted to

단일값 대신 x의 초기값이 양의 정수 중 하나라고 가정하기로 한다. 도 6(c)는 사례의 분석 흐름을 설명한다. 레이블

Figure 112021097883495-pat00169
의 초기 추상값은 +이며, 다음 프로그램 명령문은 분기 조건
Figure 112021097883495-pat00170
에 대해 변수 x에 저장된 실제 값을 요구하기 때문에 실드값으로 변환할 수 없다. 따라서, 추상값 +에 대해 레이블
Figure 112021097883495-pat00171
에서 다른 레이블
Figure 112021097883495-pat00172
로 뷰 전이
Figure 112021097883495-pat00173
를 수행한 결과도 +이다. 레이블
Figure 112021097883495-pat00174
를 사용하여 분석 요소
Figure 112021097883495-pat00175
Figure 112021097883495-pat00176
으로 변환할 수 있다. 다음 문장은 x=-x이고 음의 연산자는 실제 값 x를 필요로 하므로, 실드 실행 단계는 레이블
Figure 112021097883495-pat00177
에서 종료된다. 컨버터
Figure 112021097883495-pat00178
를 통해
Figure 112021097883495-pat00179
로 변환되고 뷰 전이가 수행되며
Figure 112021097883495-pat00180
결과가 도출될 수 있다.Instead of a single value, let's assume that the initial value of x is one of the positive integers. Figure 6(c) explains the analysis flow of the case. label
Figure 112021097883495-pat00169
The initial abstract value of is +, and the following program statement is a branch condition
Figure 112021097883495-pat00170
Since it requires the actual value stored in the variable x for , it cannot be converted to a shield value. Thus, for the abstract value +, the label
Figure 112021097883495-pat00171
different labels from
Figure 112021097883495-pat00172
low view transition
Figure 112021097883495-pat00173
The result of executing is also +. label
Figure 112021097883495-pat00174
Analysis element using
Figure 112021097883495-pat00175
cast
Figure 112021097883495-pat00176
can be converted to Since the following statement x=-x and the negative operator needs the real value x, the shield execution step is
Figure 112021097883495-pat00177
ends in converter
Figure 112021097883495-pat00178
Through the
Figure 112021097883495-pat00179
and view transition is performed,
Figure 112021097883495-pat00180
results can be drawn.

도 6(d)에 설명된 변수 x의 초기값에 대해 모든 정수가 가능하다고 가정하기로 한다. 이전의 경우와 달리 레이블

Figure 112021097883495-pat00181
의 잘못된 분기에 도달하는 동안 거짓 분기에서 문장은 x=-x이기 때문에 동적 실행기를 수행할 수 없다. 레이블
Figure 112021097883495-pat00182
에서 두 분석 요소가 있다.
Figure 112021097883495-pat00183
는 -로 레이블
Figure 112021097883495-pat00184
로부터 뷰 전이에 의해 도입되고,
Figure 112021097883495-pat00185
는 레이블
Figure 112021097883495-pat00186
에서 시작된 실드 실행에서 레이블
Figure 112021097883495-pat00187
과 함께 도입되었다. 두 요소 모두 실드 실행이 불가능하기 때문에 두번째 요소는
Figure 112021097883495-pat00188
로 변환되고 조인 연산자를 통해 레이블
Figure 112021097883495-pat00189
에서 +와 병합된다. 마지막으로, 레이블
Figure 112021097883495-pat00190
에서 레이블
Figure 112021097883495-pat00191
로의 뷰 전이
Figure 112021097883495-pat00192
가 병합된 추상화 상태 0+로 수행되고 결과는 -0이다. It is assumed that all integers are possible for the initial value of the variable x described in FIG. 6(d). Unlike the previous case, the label
Figure 112021097883495-pat00181
While reaching the wrong branch of , the statement at the false branch cannot execute the dynamic executor because x=-x. label
Figure 112021097883495-pat00182
There are two analysis elements in
Figure 112021097883495-pat00183
is labeled as -
Figure 112021097883495-pat00184
is introduced by the view transition from
Figure 112021097883495-pat00185
is the label
Figure 112021097883495-pat00186
Labels from shield runs started at
Figure 112021097883495-pat00187
was introduced with Since both elements cannot be shielded, the second element
Figure 112021097883495-pat00188
, and labeled via the join operator
Figure 112021097883495-pat00189
is merged with + in Finally, the label
Figure 112021097883495-pat00190
label from
Figure 112021097883495-pat00191
view transition to
Figure 112021097883495-pat00192
is performed with merged abstraction state 0+ and the result is -0.

컨버터

Figure 112021097883495-pat00193
와 실드 전이
Figure 112021097883495-pat00194
는 실드 실행의 시작 및 종료를 구성할 수 있다. 민간한 추상화 도메인과 실드 도메인의 결합으로 정의된 추상화 실행의 건전성과 종료를 보장하기 위해 다음의 조건이 충족되어야 한다. converter
Figure 112021097883495-pat00193
and shield transfer
Figure 112021097883495-pat00194
can configure the start and end of shield execution. The following conditions must be met to ensure the integrity and termination of the abstraction implementation defined by the combination of the private abstraction domain and the shield domain.

동적 실행기를 사용한 추상화 실행은 타당하며 다음과 같은 경우 유한한 시간 내에 종료될 수 있다.Execution of an abstraction using a dynamic executor is reasonable and can be terminated in finite time if:

추상화 전이 함수

Figure 112021097883495-pat00195
는 건전하며, 민감한 추상화 도메인
Figure 112021097883495-pat00196
은 유효한 높이를 가지며, 실드 전이
Figure 112021097883495-pat00197
는 유효하고, 다음과 같은 < Δ가 존재한다.abstraction transition function
Figure 112021097883495-pat00195
is a sound, sensitive abstraction domain
Figure 112021097883495-pat00196
has an effective height, shield transition
Figure 112021097883495-pat00197
is valid, and the following < Δ exists.

Figure 112021097883495-pat00198
Figure 112021097883495-pat00198

자바스크립트의 핵심 언어를 소개하고, 동적 실행기를 위한 핵심 언어의 실드 실행을 정의하기로 한다. 주요 디자인을 제시하기로 한다.We will introduce the core language of JavaScript, and define the core language's sealed execution for dynamic executors. We will present the main design.

Figure 112021097883495-pat00199
Figure 112021097883495-pat00199

프로그램 P는 레이블된 명령어 시퀀스이다. 명령어 i는 표현식 할당, 객체 생성, 함수 호출, 반환 명령어 또는 분기이다. 참조 r은 객체의 변수 또는 속성 액세스이다. 표현식 e는 프리미티브, 람다 함수, 참조 또는 다른 표현식 간의 연산자이다. Program P is a labeled sequence of instructions. Instruction i is an expression assignment, object creation, function call, return instruction or branch. Reference r is a variable or property access of an object. The expression e is an operator between primitives, lambda functions, references, or other expressions.

Figure 112021097883495-pat00200
Figure 112021097883495-pat00200

상태 S는 레이블 L, 메모리 M, 컨텍스트 C 및 환경 주소 Aenv로 구성된다. 메모리

Figure 112021097883495-pat00201
위치에서 값으로의 유한 매핑이다. 컨텍스트
Figure 112021097883495-pat00202
는 환경 주소에서 환경 주소의 튜플, 반환 레이블 및 왼쪽 위치로의 유한 매핑이다. 위치
Figure 112021097883495-pat00203
은 변수 또는 객체 속성이다. 변수 위치는 환경 주소와 이름으로 구성되며, 객체 속성 위치는 객체 주소와 문자열 값으로 구성된다. 값
Figure 112021097883495-pat00204
은 프리미티브, 주소 또는 함수값이다. 주소
Figure 112021097883495-pat00205
는 환경 주소 또는 객체 주소이다. 함수값
Figure 112021097883495-pat00206
은 매개변수 이름과 본문 레이블로 구성된다. 핵심 언어에서는 간결함을 위해 함수에 폐쇄 범위를 사용하므로 함수 본문에서 매개변수와 지역 변수만 액세스할 수 있다. State S consists of label L, memory M, context C, and environment address Aenv. Memory
Figure 112021097883495-pat00201
It is a finite mapping from position to value. context
Figure 112021097883495-pat00202
is a finite mapping from an environment address to a tuple of environment addresses, a return label, and a left position. location
Figure 112021097883495-pat00203
is a variable or object property. A variable location consists of an environment address and a name, and an object property location consists of an object address and a string value. value
Figure 112021097883495-pat00204
is a primitive, address or function value. address
Figure 112021097883495-pat00205
is the environment address or object address. function value
Figure 112021097883495-pat00206
consists of a parameter name and a body label. For brevity, the core language uses closed scopes for functions, so that only parameters and local variables are accessible from the body of the function.

핵심 언어의 구체화 의미론을 공식화할 수 있다. 구체화 상태 간의 전이 관계는 각각

Figure 112021097883495-pat00207
Figure 112021097883495-pat00208
의 두 가지의 다른 형식을 사용하는 참조와 표현의 의미론으로 정의될 수 있다. 초기 상태는
Figure 112021097883495-pat00209
이고, 여기서,
Figure 112021097883495-pat00210
은 초기 레이블,
Figure 112021097883495-pat00211
는 빈 맵(empty map),
Figure 112021097883495-pat00212
는 최상위 환경 주소를 나타낸다.The reification semantics of the core language can be formulated. The transition relationship between the materialization states is
Figure 112021097883495-pat00207
and
Figure 112021097883495-pat00208
can be defined as the semantics of reference and expression using two different forms of the initial state is
Figure 112021097883495-pat00209
and, here,
Figure 112021097883495-pat00210
is the initial label,
Figure 112021097883495-pat00211
is an empty map,
Figure 112021097883495-pat00212
represents the top-level environment address.

핵심 언어의 추상화 의미론에서 레이블을 활용하여 상태를 구분하는 흐름 민감도 뷰 추상화

Figure 112021097883495-pat00213
와 함께 흐름 민감도가 사용될 수 있다(
Figure 112021097883495-pat00214
Figure 112021097883495-pat00215
). 민감한 추상화 도메인은
Figure 112021097883495-pat00216
로 정의될 수 있다. 추상화 상태
Figure 112021097883495-pat00217
는 추상화 메모리, 추상화 컨텍스트, 추상화 주소 및 추상화 카운터의 튜플로서 다음과 같이 정의될 수 있다.A flow-sensitive view abstraction that uses labels in the abstraction semantics of the core language to demarcate state.
Figure 112021097883495-pat00213
Flow sensitivity can be used with (
Figure 112021097883495-pat00214
Figure 112021097883495-pat00215
). A sensitive abstraction domain is
Figure 112021097883495-pat00216
can be defined as abstraction state
Figure 112021097883495-pat00217
is a tuple of abstraction memory, abstraction context, abstraction address, and abstraction counter, which can be defined as:

Figure 112021097883495-pat00218
Figure 112021097883495-pat00218

추상화 메모리

Figure 112021097883495-pat00219
은 추상화 위치
Figure 112021097883495-pat00220
에서 추상값
Figure 112021097883495-pat00221
으로의 유한 매핑이다. 추상화 위치
Figure 112021097883495-pat00222
은 변수 이름 또는 문자열 값을 가진 추상화 주소의 쌍이다. 추상화 주소
Figure 112021097883495-pat00223
은 할당 사이트
Figure 112021097883495-pat00224
에 따라 구체화 주소
Figure 112021097883495-pat00225
를 지정하는 할당 사이트 추상화로 정의될 수 있다. 추상화 컨텍스트
Figure 112021097883495-pat00226
는 추상화 주소에서 추상화 주소, 뷰 및 추상 위치의 파워셋에 대한 유한 맵이다. 정적 분석에서 추상화 카운팅을 위해 추상화 주소에서 각 추상화 주소가 할당된 카운트를 나타내는 추상화 카운트로의 매핑인 추상 카운터
Figure 112021097883495-pat00227
를 정의한다. 0#은 할당되지 않은 주소, 1#은 한 번,
Figure 112021097883495-pat00228
2#는 두 번 이상임을 나타낸다.abstraction memory
Figure 112021097883495-pat00219
where is the abstraction
Figure 112021097883495-pat00220
abstract value from
Figure 112021097883495-pat00221
is a finite mapping to location of abstraction
Figure 112021097883495-pat00222
is a pair of abstraction addresses with variable names or string values. abstraction address
Figure 112021097883495-pat00223
is the allocation site
Figure 112021097883495-pat00224
Address specified according to
Figure 112021097883495-pat00225
It can be defined as an allocation site abstraction that specifies abstraction context
Figure 112021097883495-pat00226
is a finite map from an abstraction address to a power set of abstraction addresses, views, and abstract locations. For abstraction counting in static analysis, abstract counters, which are mappings from abstraction addresses to abstraction counts representing the count each abstraction address is assigned to.
Figure 112021097883495-pat00227
define 0 # is an unassigned address, 1 # is once,
Figure 112021097883495-pat00228
2 # indicates more than once.

핵심 언어에 대한 뷰 전환의 의미론을 정의할 수 있다. 추상화 메모리의 경우, L에서 추상값

Figure 112021097883495-pat00229
으로 여러 추상화 위치의 업데이트를 나타내기 위해 표기법
Figure 112021097883495-pat00230
을 사용한다. 추상화 위치
Figure 112021097883495-pat00231
에 대한 추상화 주소가 싱글톤(singleton)
Figure 112021097883495-pat00232
이면 강한 업데이트를 수행하고, 그렇지 않다면 분석 건전성을 위해 약한 업데이트를 수행할 수 있다. 다음과 같이 정의된 추상화 카운터의 증분 함수
Figure 112021097883495-pat00233
를 사용한다.You can define the semantics of view transitions for the core language. For abstraction memory, the abstract value in L
Figure 112021097883495-pat00229
notation to indicate the update of multiple abstraction locations with
Figure 112021097883495-pat00230
Use location of abstraction
Figure 112021097883495-pat00231
The abstraction address for a singleton
Figure 112021097883495-pat00232
If so, a strong update can be performed, and if not, a weak update can be performed for analytical health. The increment function of the abstraction counter defined as
Figure 112021097883495-pat00233
Use

Figure 112021097883495-pat00234
Figure 112021097883495-pat00234

실드 값

Figure 112021097883495-pat00235
으로 구체화 값
Figure 112021097883495-pat00236
를 확장할 뿐만 아니라 추상화 카운터
Figure 112021097883495-pat00237
를 추가하여 실드 상태를 정의할 수 있다.shield value
Figure 112021097883495-pat00235
materialize as value
Figure 112021097883495-pat00236
as well as extending the abstraction counter
Figure 112021097883495-pat00237
can be added to define the shield state.

Figure 112021097883495-pat00238
Figure 112021097883495-pat00238

자바스크립트는 오픈 객체를 제공하므로 객체의 속성을 동적으로 추가하거나 삭제할 수 있다. 또한, 객체 속성은 런타임에 구성할 수 있는 문자열 값이기 때문에 정적 분석에서 견고하게 업데이트를 수행하기가 어렵다. 실드 실행 중에 강력한 업데이트가 발생할 가능성을 확인하기 위해 추상화 카운터

Figure 112021097883495-pat00239
를 사용하여 상태를 보강할 수 있다.JavaScript provides open objects, so you can dynamically add or remove properties of an object. Also, because object properties are string values that can be configured at runtime, it is difficult to perform robust updates in static analysis. An abstraction counter to determine the likelihood of strong updates occurring during shield execution.
Figure 112021097883495-pat00239
can be used to reinforce the condition.

주어진 추상화 상태의 각 추상값마다 추상값이 하나의 구체화 값을 나타내면 컨버터

Figure 112021097883495-pat00240
Figure 112021097883495-pat00241
가 이를 유지하며, 그렇지 않으면 컨버터
Figure 112021097883495-pat00242
가 추상값을 고유 식별자로 대체하고 고유 식별자에서 추상값으로의 매핑을 유지하여 추상화 맵을 구축할 수 있다. 역컨버터
Figure 112021097883495-pat00243
는 실체화 맵을 사용하여 고유 식별자에서 추상값을 복구할 수 있다. 다음 단계에서 실드값의 실제 값이 필요하지 않은 경우에만 실드 전이 관계
Figure 112021097883495-pat00244
를 정의한다. 그렇지 않으면, 주어진 실드 상태를 적용할 실드 전이는 없다. 예를 들면, 다음 ret 상태에 대하여 규칙을 추가할 수 있다. For each abstract value of a given abstraction state, if the abstract value represents one concrete value, then the converter
Figure 112021097883495-pat00240
Figure 112021097883495-pat00241
retains it, otherwise the converter
Figure 112021097883495-pat00242
may construct an abstraction map by replacing abstract values with unique identifiers and maintaining a mapping from unique identifiers to abstract values. reverse converter
Figure 112021097883495-pat00243
can recover an abstract value from a unique identifier using a materialization map. The shield transition relationship only if the actual value of the shield value is not needed in the next step.
Figure 112021097883495-pat00244
define Otherwise, there is no shield transition to apply the given shield state to. For example, you can add a rule for the next ret state.

Figure 112021097883495-pat00245
Figure 112021097883495-pat00245

실드값의 행동을 뒷받침하기 위해 구체화 의미론의 각 규칙을 확장할 수 있다. Each rule of the reification semantics can be extended to support the behavior of the shield value.

일례로, 추상값을 나타내기 위해 ECMAScript 6(2015, ES6)에 도입된 프록시(Proxy) 객체가 사용될 수 있다. 이를 통해 속성 읽기 및 쓰기, 암시적 변환과 같은 특정 객체의 내부 동작이 처리될 수 있다. As an example, proxy objects introduced in ECMAScript 6 (2015, ES6) can be used to represent abstract values. This allows internal operations of specific objects, such as reading and writing properties and implicit conversions, to be handled.

동적 분석기는 동적 실행기 시작 시 실행 환경을 구성할 때 다음 getSealedValue 함수를 통해 추상값을 나타내는 프록시 객체를 생성할 수 있다. The dynamic analyzer can create a proxy object representing an abstract value through the following getSealedValue function when configuring the execution environment at the start of the dynamic executor.

Figure 112021097883495-pat00246
Figure 112021097883495-pat00246

이 함수는 액세스 탐지 함수를 사용하여 모든 13개 트랩에 대한 핸들러 및 더미 함수 객체가 있는 프록시 객체로 실드값을 생성할 수 있다. 실드값은 미리 정의된 13개의 트랩 중 하나가 객체에 대해 작동될 때 탐지 함수를 호출하여 객체가 실드되었는지 여부를 결정할 수 있게 한다. 예를 들면, 변수 y는 x에 저장된 동일한 실드값을 성공적으로 가리키지만, x+1에는 실드값의 실제 값이 필요하기 때문에 프로그램은 9행에서 탐지 함수를 호출할 수 있다. This function can use the access detection function to create a shield value as a proxy object with handlers and dummy function objects for all 13 traps. The shield value allows you to determine whether an object is shielded by calling the detection function when one of the 13 predefined traps is triggered on the object. For example, the variable y successfully points to the same shield value stored in x, but since x+1 requires the actual value of the shield value, the program can call the detect function on line 9.

또한, 단항 및 이항 연산을 계측하여 13개의 트랩을 초과하는 실드값에 대한 모든 액세스를 감지할 수 있도록 한다. 이를 통해 실드 실행을 지원하도록 자바스크립트 엔진을 성공적으로 확장할 수 있다.It also measures unary and binary operations to detect any access to shield values exceeding 13 traps. This allows you to successfully extend your JavaScript engine to support shield execution.

정적 분석과 실드 실행 간의 원활한 상호작용을 위해서 양측 제어점의 동기화가 필요하다.Synchronization of control points on both sides is necessary for smooth interaction between static analysis and shield execution.

정적 분석기와 동적 분석기에는 직접적으로 호환되지 않은 제어점에 대한 고유한 표기법이 있다. 동기화를 위한 키로 대상 프로그램의 소스 코드 위치를 사용할 수 있다. 대신 소스 코드 위치의 가장 가까운 일치를 사용하여 정적 분석기와 동적 분석기의 제어점을 동기화할 수 있다. Static and dynamic analyzers have their own notation for control points that are not directly compatible. The source code location of the target program can be used as a key for synchronization. Instead, the closest match of the source code location can be used to synchronize the control points of the static and dynamic analyzers.

동적 실행기는 현재 추상화 상태가 필터 검사기를 통과하면 활성화될 수 있다. 각 분석기는 각각 다른 언어로 구현되어 있기 때문에 추상 상태를 다음과 같이 표현할 수 있다. 추상 상태를 JSON 객체로 표현하고 로컬 호스트 서버를 통해 JSON 객체를 전달하여 분석기 간에 통신이 수행될 수 있다. 필터가 동적 실행기를 허용하면, 분석은 정적 분석기와 동적 분석기 간의 빈번한 통신으로 어려움을 겪을 수 있다. 이러한 부담을 조정하기 위해 함수 엔트리에서 동적 실행기를 활성화하고 종료 함수를 비활성화하여 함수 수준의 동적 실행기만 지원할 수 있다. A dynamic executor can be activated if the current abstraction state passes the filter checker. Since each analyzer is implemented in a different language, the abstract state can be expressed as follows. Communication can be done between analyzers by representing the abstract state as a JSON object and passing the JSON object through the localhost server. If the filter allows dynamic executors, the analysis may suffer from frequent communication between the static and dynamic analyzers. To balance this burden, you can enable dynamic executors on function entry and disable exit functions to support only function-level dynamic executors.

동적 실행기를 사용하여 정적 분석의 종료를 보장하기 위하여 컨버터

Figure 112021097883495-pat00247
가 시간 제한 N에서 종료될 때만 분석 요소
Figure 112021097883495-pat00248
를 전달해야 한다. 종료 속성을 정적으로 확인하는 것은 어렵기 때문에 미리 정해진 시간(예를 들면, 5초)의 제한 시간에서 실드 실행만 수행할 수 있다. 시간이 초과되면 변환 실패로 처리할 수 있다. 그렇지 않으면 실드 실행의 결과를 사용할 수 있다. Converter to ensure termination of static analysis using dynamic executor
Figure 112021097883495-pat00247
analytic element only when ends at time limit N
Figure 112021097883495-pat00248
should convey Since it is difficult to statically check the end attribute, only shield execution can be performed within a predetermined time limit (eg, 5 seconds). If the time is exceeded, it can be treated as a conversion failure. Otherwise, the result of the shield run can be used.

이상에서 설명된 장치는 하드웨어 구성요소, 소프트웨어 구성요소, 및/또는 하드웨어 구성요소 및 소프트웨어 구성요소의 조합으로 구현될 수 있다. 예를 들어, 실시예들에서 설명된 장치 및 구성요소는, 예를 들어, 프로세서, 콘트롤러, 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 devices described above may be implemented as hardware components, software components, and/or a combination of hardware components and software components. For example, devices and components described in the embodiments may include, for example, a processor, a controller, an arithmetic logic unit (ALU), a digital signal processor, a microcomputer, a field programmable gate array (FPGA) , a programmable logic unit (PLU), microprocessor, or any other device capable of executing and responding to instructions. A processing device may run an operating system (OS) and one or more software applications running on the operating system. A processing device may also access, store, manipulate, process, and generate data in response to execution of software. For convenience of understanding, there are cases in which one processing device is used, but those skilled in the art will understand that the processing device includes a plurality of processing elements and/or a plurality of types of processing elements. It can be seen that it can include. For example, a processing device may include a plurality of processors or a processor and a controller. Other processing configurations are also possible, such as parallel processors.

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

실시예에 따른 방법은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 실시예를 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical media), 및 롬(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. The computer readable medium may include program instructions, data files, data structures, etc. alone or in combination. Program commands recorded on the medium may be specially designed and configured for the embodiment or may be known and usable to those skilled in computer software. Examples of computer-readable recording media include magnetic media such as hard disks, floppy disks and magnetic tapes, optical media such as CD-ROMs and DVDs, and magnetic media such as floptical disks. - includes hardware devices specially configured to store and execute program instructions, such as magneto-optical media, and ROM, RAM, flash memory, and the like. Examples of program instructions include high-level language codes that can be executed by a computer using an interpreter, as well as machine language codes such as those produced by a compiler.

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

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

Claims (15)

분석 가속화 시스템에 의해 수행되는 동적 실행기(Dynamic Executions)를 활용한 정적 분석 방법에 있어서,
분석하고자 하는 입력 프로그램의 초기 분석 결과에 기초하여 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는 단계; 및
상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 분석을 수행하는 단계를 포함하는 정적 분석 방법.
In the static analysis method using dynamic executions performed by the analysis acceleration system,
converting a region to be analyzed through a dynamic executor during static analysis based on an initial analysis result of an input program to be analyzed; and
and performing analysis on the converted region using the dynamic executor.
제1항에 있어서,
상기 변환하는 단계는,
정적 분석을 수행함에 따라 입력 프로그램의 현재 추상화 상태를 현재 추상 상태에 대응되는 실드 상태로 변환하고, 상기 변환된 실드 상태에서 동적 실행기 위에서 실드 실행을 수행함에 따라 획득된 실드 실행 결과에 대응되는 추상화 상태로 변환하는 단계
를 포함하는 정적 분석 방법.
According to claim 1,
The conversion step is
As static analysis is performed, the current abstraction state of the input program is converted into a shield state corresponding to the current abstract state, and in the converted shield state, shield execution is performed on the dynamic executor, resulting in an abstraction state corresponding to the obtained shield execution result. steps to convert to
A static analysis method comprising a.
제2항에 있어서,
상기 변환하는 단계는,
실드 도메인 및 실체화 맵을 사용하여 실드 실행을 정의하고, 추상화 실행과 실드 실행을 결합하기 위하여 기존 추상화 도메인과 실드 도메인의 결합 도메인을 정의하고, 상기 정의된 결합 도메인을 이용하여 추상화 상태를 구성하는 단계
를 포함하는 정적 분석 방법.
According to claim 2,
The conversion step is
Defining a shield execution using a shield domain and a materialization map, defining a binding domain of an existing abstraction domain and a shield domain to combine an abstraction execution with a shield execution, and constructing an abstraction state using the defined combining domain.
A static analysis method comprising a.
제3항에 있어서,
상기 변환하는 단계는,
서로 다른 종류의 분석 요소 간 변환을 위한 복수의 컨버터를 이용하여 기존 추상화 도메인에 대응되는 실드 도메인으로 변환하는 단계; 또는 상기 변환된 실드 도메인에 대응되는 기존 추상화 도메인으로 변환하는 단계
를 포함하는 정적 분석 방법.
According to claim 3,
The conversion step is
converting into a shield domain corresponding to an existing abstraction domain by using a plurality of converters for converting between different types of analysis elements; or converting to an existing abstraction domain corresponding to the converted shield domain.
A static analysis method comprising a.
제1항에 있어서,
상기 수행하는 단계는,
복수의 컨버터의 정적 분석과 관련하여 설정된 시간 제한에 기초하여 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 실드 실행을 수행하는 중에 상기 제한 시간이 초과할 경우, 추상화 실행을 수행하는 단계
를 포함하는 정적 분석 방법.
According to claim 1,
The above steps are
A shield execution including a shield domain is performed using a dynamic executor based on a time limit set in relation to static analysis of a plurality of converters, and if the time limit is exceeded during the shield execution, an abstraction execution is performed. step to do
A static analysis method comprising a.
제1항에 있어서,
상기 수행하는 단계는,
상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하는 단계
를 포함하고,
상기 변환하는 단계는,
상기 수행된 실드 실행이 종료됨에 따라 추상화 실행을 위한 영역으로 변환하는 단계
를 포함하는 정적 분석 방법.
According to claim 1,
The above steps are
performing a shield execution including a shield domain on the converted region using the dynamic executor;
including,
The conversion step is
Converting to an area for abstraction execution as the performed shield execution is terminated
A static analysis method comprising a.
제1항에 있어서,
상기 분석을 수행하는 단계는,
상기 변환된 영역에 기초하여 추상화 의미를 사용한 추상화 실행 또는 구체화 의미를 사용한 구체화 실행을 이용한 정적 분석을 통해 중간 분석 결과를 획득하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였는지 여부를 판단하는 단계
를 포함하는 정적 분석 방법.
According to claim 1,
The step of performing the analysis is,
An intermediate analysis result is obtained through static analysis using abstraction execution using abstract semantics or concrete execution using concrete semantics based on the transformed domain, and it is determined whether the obtained intermediate analysis result has reached a preset fixed point. step to do
A static analysis method comprising a.
제7항에 있어서,
상기 분석을 수행하는 단계는,
상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였을 경우, 상기 획득된 중간 분석 결과를 최종 분석 결과로 도출하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하지 못하였을 경우, 상기 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는 단계
를 포함하는 정적 분석 방법.
According to claim 7,
The step of performing the analysis is,
When the obtained interim analysis result reaches a preset fixed point, the obtained interim analysis result is derived as a final analysis result, and when the obtained interim analysis result does not reach the preset fixed point, the static analysis result is determined. Steps to transform the area to be analyzed via the dynamic executor during analysis
A static analysis method comprising a.
분석 가속화 시스템에 있어서,
메모리에 포함된 컴퓨터 판독가능한 명령들을 실행하도록 구성된 적어도 하나의 프로세서
를 포함하고,
상기 적어도 하나의 프로세서는,
분석하고자 하는 입력 프로그램의 초기 분석 결과에 기초하여 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하고,
상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 분석을 수행하는
분석 가속화 시스템.
In the analysis acceleration system,
at least one processor configured to execute computer readable instructions contained in memory;
including,
The at least one processor,
Transforming the area to be analyzed through a dynamic executor during static analysis based on the initial analysis result of the input program to be analyzed;
Analyzing the converted area using the dynamic executor
Analysis Acceleration System.
제9항에 있어서,
상기 적어도 하나의 프로세서는,
정적 분석을 수행함에 따라 입력 프로그램의 현재 추상화 상태를 현재 추상 상태에 대응되는 실드 상태로 변환하고, 상기 변환된 실드 상태에서 동적 실행기 위에서 실드 실행을 수행함에 따라 획득된 실드 실행 결과에 대응되는 추상화 상태로 변환하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 9,
The at least one processor,
As static analysis is performed, the current abstraction state of the input program is converted into a shield state corresponding to the current abstract state, and in the converted shield state, shield execution is performed on the dynamic executor, resulting in an abstraction state corresponding to the obtained shield execution result. to convert to
Analysis acceleration system, characterized in that.
제10항에 있어서,
상기 적어도 하나의 프로세서는,
실드 도메인 및 실체화 맵을 사용하여 실드 실행을 정의하고, 추상화 실행과 실드 실행을 결합하기 위하여 추상화 도메인과 실드 도메인의 결합 도메인을 정의하고, 상기 정의된 결합 도메인을 이용하여 추상화 상태를 구성하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 10,
The at least one processor,
Defining a shield execution using a shield domain and a materialization map, defining a binding domain of an abstraction domain and a shield domain to combine an abstraction execution and a shield execution, and constructing an abstraction state using the defined combining domain.
Analysis acceleration system, characterized in that.
제11항에 있어서,
상기 적어도 하나의 프로세서는,
서로 다른 종류의 분석 요소 간 변환을 위한 복수의 컨버터를 이용하여 기존 추상화 도메인에 대응되는 실드 도메인으로 변환하거나, 또는 상기 변환된 실드 도메인에 대응되는 기존 추상화 도메인으로 변환하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 11,
The at least one processor,
Conversion into a shield domain corresponding to the existing abstraction domain by using a plurality of converters for conversion between different types of analysis elements, or conversion into an existing abstraction domain corresponding to the converted shield domain
Analysis acceleration system, characterized in that.
제9항에 있어서,
상기 적어도 하나의 프로세서는,
복수의 컨버터의 정적 분석과 관련하여 설정된 시간 제한에 기초하여 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 실드 실행을 수행하는 중에 상기 제한 시간이 초과할 경우, 추상화 실행을 수행하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 9,
The at least one processor,
A shield execution including a shield domain is performed using a dynamic executor based on a time limit set in relation to static analysis of a plurality of converters, and if the time limit is exceeded during the shield execution, an abstraction execution is performed. doing
Analysis acceleration system, characterized in that.
제9항에 있어서,
상기 적어도 하나의 프로세서는,
상기 변환된 영역에 대하여 상기 동적 실행기를 이용하여 실드 도메인을 포함하는 실드 실행을 수행하고, 상기 수행된 실드 실행이 종료됨에 따라 추상화 실행을 위한 영역으로 변환하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 9,
The at least one processor,
Performing shield execution including a shield domain on the converted area using the dynamic executor, and converting the converted area into an area for abstraction execution as the performed shield execution is terminated.
Analysis acceleration system, characterized in that.
제9항에 있어서,
상기 적어도 하나의 프로세서는,
상기 변환된 영역에 기초하여 추상화 의미를 사용한 추상화 실행 또는 구체화 의미를 사용한 구체화 실행을 이용한 정적 분석을 통해 중간 분석 결과를 획득하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였는지 여부를 판단하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하였을 경우, 상기 획득된 중간 분석 결과를 최종 분석 결과로 도출하고, 상기 획득된 중간 분석 결과가 기 설정된 고정점에 도달하지 못하였을 경우, 상기 정적 분석 중에 동적 실행기를 통해 분석할 영역을 변환하는
것을 특징으로 하는 분석 가속화 시스템.
According to claim 9,
The at least one processor,
An intermediate analysis result is obtained through static analysis using abstraction execution using abstract semantics or concrete execution using concrete semantics based on the transformed domain, and it is determined whether the obtained intermediate analysis result has reached a preset fixed point. and when the obtained interim analysis result reaches a preset fixed point, the obtained interim analysis result is derived as a final analysis result, and when the obtained interim analysis result does not reach the preset fixed point, Converting the area to be analyzed through the dynamic executor during the static analysis
Analysis acceleration system, characterized in that.
KR1020210112007A 2021-08-25 2021-08-25 An accelerating system for javascript static analysis via dynamic executions KR102514805B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020210112007A KR102514805B1 (en) 2021-08-25 2021-08-25 An accelerating system for javascript static analysis via dynamic executions

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020210112007A KR102514805B1 (en) 2021-08-25 2021-08-25 An accelerating system for javascript static analysis via dynamic executions

Publications (2)

Publication Number Publication Date
KR20230030142A KR20230030142A (en) 2023-03-06
KR102514805B1 true KR102514805B1 (en) 2023-03-29

Family

ID=85509689

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020210112007A KR102514805B1 (en) 2021-08-25 2021-08-25 An accelerating system for javascript static analysis via dynamic executions

Country Status (1)

Country Link
KR (1) KR102514805B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263385A (en) 2002-03-11 2003-09-19 Kochi Systems:Kk High speed www server system and high speed display method
JP2013077159A (en) 2011-09-30 2013-04-25 Hitachi Solutions Ltd Test automation system
JP2015114968A (en) 2013-12-13 2015-06-22 Kddi株式会社 Application analysis device, application analysis method, and program
KR101705996B1 (en) 2015-11-26 2017-02-13 성균관대학교산학협력단 Apparatus and method for statically analyzing javascript source code in order to optimize javascript source code

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003263385A (en) 2002-03-11 2003-09-19 Kochi Systems:Kk High speed www server system and high speed display method
JP2013077159A (en) 2011-09-30 2013-04-25 Hitachi Solutions Ltd Test automation system
JP2015114968A (en) 2013-12-13 2015-06-22 Kddi株式会社 Application analysis device, application analysis method, and program
KR101705996B1 (en) 2015-11-26 2017-02-13 성균관대학교산학협력단 Apparatus and method for statically analyzing javascript source code in order to optimize javascript source code

Also Published As

Publication number Publication date
KR20230030142A (en) 2023-03-06

Similar Documents

Publication Publication Date Title
Gosain et al. Static analysis: A survey of techniques and tools
Lee et al. TIE: Principled reverse engineering of types in binary programs
US7308680B2 (en) Intermediate representation for multiple exception handling models
US10354069B2 (en) Automated reverse engineering
US9418230B2 (en) Automated tools for building secure software programs
US7844971B2 (en) Method and apparatus for detecting cross-thread stack access in multithreaded programs
JP2022505340A (en) Systems and methods for dynamically identifying data arguments and instrumenting source code
US8875111B2 (en) Intermediate language representation and modification
CN111104335B (en) C language defect detection method and device based on multi-level analysis
Gurfinkel et al. A context-sensitive memory model for verification of C/C++ programs
CN104536883A (en) Static defect detecting method and system thereof
CN104573503A (en) Method and device for detecting memory access overflow
Journault et al. Modular static analysis of string manipulations in C programs
Hubert et al. Separation Analysis for Weakest Precondition-based Verification
KR102514805B1 (en) An accelerating system for javascript static analysis via dynamic executions
Nguyen et al. Improvements of directed automated random testing in test data generation for c++ projects
Madhavan et al. Purity analysis: An abstract interpretation formulation
CN112016099A (en) Method and system for analyzing static taint among binary program processes
García-Ferreira et al. A survey on static analysis and model checking
Demidov et al. Integer overflow vulnerabilities detection in software binary code
CN101882190B (en) Method for formally verifying bytecode intermediate representation program module by module
Hotz et al. Analytic machines
Belevantsev et al. Multi-level static analysis for finding error patterns and defects in source code
Aldous et al. Static analysis of non-interference in expressive low-level languages
KR20190084468A (en) Apparatus and method for summarizing function information

Legal Events

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