KR20190020374A - Method and apparatus for providing api call information for dynamic analysis of web application - Google Patents

Method and apparatus for providing api call information for dynamic analysis of web application Download PDF

Info

Publication number
KR20190020374A
KR20190020374A KR1020170105236A KR20170105236A KR20190020374A KR 20190020374 A KR20190020374 A KR 20190020374A KR 1020170105236 A KR1020170105236 A KR 1020170105236A KR 20170105236 A KR20170105236 A KR 20170105236A KR 20190020374 A KR20190020374 A KR 20190020374A
Authority
KR
South Korea
Prior art keywords
thread
call information
api call
api
web application
Prior art date
Application number
KR1020170105236A
Other languages
Korean (ko)
Other versions
KR101996358B1 (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 KR1020170105236A priority Critical patent/KR101996358B1/en
Publication of KR20190020374A publication Critical patent/KR20190020374A/en
Application granted granted Critical
Publication of KR101996358B1 publication Critical patent/KR101996358B1/en

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/16Program or content traceability, e.g. by watermarking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Technology Law (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Debugging And Monitoring (AREA)

Abstract

Disclosed is a method for providing API call information for dynamic analysis of a web application, comprising: a step of extracting an identification (ID) of a thread calling an application programming interface (API) in accordance with a user request; a step of executing a thread method including a tracking code in accordance with the user request; and a step of extracting API call information from an HTTP request object which is a first argument of the method in accordance with the tracking code. According to the present invention, since request and response information and API call information are analyzed together in the dynamic analysis of the web application, vulnerability due to the SQL insertion or the insertion of an operating system command which has not been detected before can be detected.

Description

웹 애플리케이션의 동적 분석을 위한 API 호출 정보 제공 방법 및 장치{METHOD AND APPARATUS FOR PROVIDING API CALL INFORMATION FOR DYNAMIC ANALYSIS OF WEB APPLICATION}TECHNICAL FIELD [0001] The present invention relates to a method and an apparatus for providing API call information for dynamic analysis of a web application,

본 발명은 웹 애플리케이션의 동적 분석을 위한 API(Application Programming Interface) 호출 정보 제공 방법 및 장치에 관한 것으로, 더욱 상세하게는 웹 애플리케이션 서버에서 API 호출 시 추적 코드 삽입을 통해 API 호출 정보를 추출하여 제공하는 방법 및 장치에 관한 것이다.The present invention relates to a method and apparatus for providing API (Application Programming Interface) call information for dynamic analysis of a web application, and more particularly, to a method and apparatus for providing API call information by inserting a tracking code ≪ / RTI >

최근 인터넷의 확산으로 인해 클라이언트(client)로써 웹 브라우저(web browser)를 사용하는 사람이 증가하며, 인터넷이나 인트라넷을 통해 웹 브라우저에서 이용할 수 있는 응용소프트웨어를 의미하는 웹 애플리케이션(web application)이 주목받고 있다. 웹 애플리케이션은 사용자의 단말에 소프트웨어를 배포하고 설치하지 않아도 유지 관리가 가능한 장점이 있으므로, 웹 애플리케이션의 수요가 점차 높아지고 있으나, 이에 따른 보안 기술은 부족한 실정이다.Recently, the number of people who use a web browser as a client has increased due to the spread of the Internet, and a web application which means application software that can be used in a web browser through the Internet or an intranet is attracting attention have. Web applications have the advantage of being able to maintain without having to distribute and install software on the user's terminal. Therefore, the demand for web applications is increasing, but there is a lack of security technology.

웹 애플리케이션을 클라이언트에게 제공하기 전 또는 제공 중에 웹 애플리케이션의 취약점을 파악하여 보완하기 위한 테스트 방법은 크게 정적 분석 방법과 동적 분석 방법으로 나누어진다. 정적 분석 방법은 웹 애플리케이션의 소스 코드를 기초로 취약점의 위치를 분석할 수 있으며, 동적 분석 방법은 요청 및 응답 방식을 통해 취약점을 유발하는 값을 분석할 수 있다. Test methods for identifying and supplementing Web application vulnerabilities before or during provision of Web applications to clients are largely divided into static analysis methods and dynamic analysis methods. The static analysis method can analyze the location of the vulnerability based on the source code of the web application, and the dynamic analysis method can analyze the value causing the vulnerability through the request and response method.

동적 분석 방법에 대하여 더욱 구체적으로 살펴보면, 현재, 동적 분석 방법을 수행하는 동적 분석기는 상술한 바와 같이 요청 및 응답 방식을 사용하고 있다. 다만, 이러한 응답에는 발생 정보, 즉 요청에 따른 API(Application Programming Interface) 호출 정보가 포함되어 있지 않기 때문에 웹 애플리케이션 서버(Web Application Server, WAS) 내에서 발생하는 SQL(Structured Query Language) 삽입 또는 운영체제 명령어 삽입 등에 따른 취약점은 검출하기 어려운 문제점이 있다.More specifically, the dynamic analyzer performing the dynamic analysis method currently uses a request and response method as described above. However, since the occurrence information, that is, the application programming interface (API) call information according to the request is not included in the response, a SQL (Structured Query Language) insertion or an operating system command There is a problem that it is difficult to detect a vulnerability due to insertion or the like.

상기와 같은 문제점을 해결하기 위한 본 발명의 목적은 웹 애플리케이션의 동적 분석을 위한 API 호출 정보 제공 방법을 제공하는 데 있다.In order to solve the above problems, an object of the present invention is to provide a method for providing API call information for dynamic analysis of a web application.

상기와 같은 문제점을 해결하기 위한 본 발명의 다른 목적은 웹 애플리케이션의 동적 분석을 위한 API 호출 정보 제공 장치를 제공하는 데 있다.It is another object of the present invention to provide an apparatus for providing API call information for dynamic analysis of a web application.

상기 목적을 달성하기 위한 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법은, 사용자의 요청에 따라 API(application programming interface)를 호출하는 스레드(thread)의 ID(identification)을 추출하는 단계, 추적 코드를 포함하는 스레드의 메소드(method)를 실행하는 단계, 및 추적 코드에 따라 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출하는 단계를 포함할 수 있다.According to an aspect of the present invention, there is provided a method for providing API call information, comprising: extracting an identification (ID) of a thread calling an application programming interface (API) Executing a method of a thread containing the code, and extracting API call information from the HTTP request object, which is the first argument of the method according to the trace code.

여기서, 스레드의 ID 및 API 호출 정보를 하나의 쌍으로 저장하는 단계를 더 포함할 수 있다.Here, it may further include storing the ID of the thread and the API call information in one pair.

여기서, 스레드의 ID 및 상기 API 호출 정보를 동적 분석기에게 제공하는 단계를 더 포함할 수 있다.The method may further comprise providing the dynamic analyzer with the ID of the thread and the API call information.

여기서, API 호출 정보는, API의 정규화된 명칭(Fully Qualified Name, FQN), 파라미터(parameter)의 타입 및 파라미터의 값 중 적어도 하나를 포함할 수 있다.Here, the API call information may include at least one of a Fully Qualified Name (FQN) of a API, a type of a parameter, and a value of a parameter.

여기서, 추적 코드를 포함하는 스레드의 메소드는, BCI(Byte-Code Instrumentation)를 이용하여 추적 코드가 삽입될 수 있다.Here, the method of the thread including the tracking code can insert the tracking code using Byte-Code Instrumentation (BCI).

여기서, 스레드의 ID를 추출하는 단계는, JVM(Java Virtual Machine)에서 제공하는 API를 통해 스레드로부터 스레드의 ID를 추출하는 단계를 포함할 수 있다.Here, the step of extracting the ID of the thread may include extracting the ID of the thread from the thread through the API provided by the JVM (Java Virtual Machine).

상기 다른 목적을 달성하기 위한 본 발명의 일 실시예에 따른 API 호출 정보 제공 장치는, 프로세서(processor), 및 프로세서를 통해 실행되는 적어도 하나의 명령이 저장된 메모리(memory)를 포함하고, 적어도 하나의 명령은, 사용자의 요청에 따라 API(application programming interface)를 호출하는 스레드(thread)의 ID(identification)을 추출하도록 실행되고, 추적 코드를 포함하는 스레드의 메소드(method)를 실행하도록 실행되고, 추적 코드에 따라 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출하도록 실행될 수 있다.According to another aspect of the present invention, there is provided an API call information providing apparatus including a processor and a memory in which at least one instruction executed through a processor is stored, The instruction is executed to extract an identification of a thread calling an application programming interface (API) according to a user's request, to execute a method of a thread including the trace code, Depending on the code, it can be executed to extract API call information from the HTTP request object, which is the first argument of the method.

여기서, 적어도 하나의 명령은, 스레드의 ID 및 API 호출 정보를 하나의 쌍으로 저장하도록 실행될 수 있다.Here, the at least one command can be executed to store the ID of the thread and the API call information in one pair.

여기서, 적어도 하나의 명령은, 스레드의 ID 및 API 호출 정보를 동적 분석기에게 제공하도록 실행될 수 있다.Here, the at least one instruction may be executed to provide the dynamic analyzer with the ID of the thread and the API call information.

여기서, API 호출 정보는, API의 정규화된 명칭(Fully Qualified Name, FQN), 파라미터(parameter)의 타입 및 파라미터의 값 중 적어도 하나를 포함할 수 있다.Here, the API call information may include at least one of a Fully Qualified Name (FQN) of a API, a type of a parameter, and a value of a parameter.

여기서, 추적 코드를 포함하는 스레드의 메소드는, BCI(Byte-Code Instrumentation)를 이용하여 추적 코드가 삽입될 수 있다.Here, the method of the thread including the tracking code can insert the tracking code using Byte-Code Instrumentation (BCI).

여기서, 적어도 하나의 명령은, JVM(Java Virtual Machine)에서 제공하는 API를 통해 스레드로부터 스레드의 ID를 추출하도록 실행될 수 있다.Here, the at least one command can be executed to extract the ID of the thread from the thread through the API provided by the JVM (Java Virtual Machine).

본 발명에 따르면, 웹 애플리케이션 서버 내에서 수행되는 API(Application Programming Interface) 호출 정보를 추출하여 웹 애플리케이션의 동적 분석에 제공할 수 있다.According to the present invention, application programming interface (API) call information to be executed in a web application server can be extracted and provided to dynamic analysis of a web application.

본 발명에 따르면, 요청 및 응답 정보와 API 호출 정보를 함께 분석함으로써, 기존에는 검출하지 못하였던 SQL 삽입 또는 운영체제 명령어 삽입 등에 따른 취약점도 검출할 수 있다.According to the present invention, a vulnerability due to SQL insertion or insertion of an operating system command, which has not been detected before, can be detected by analyzing request and response information and API call information together.

도 1은 본 발명의 일 실시예에 따른 API 호출 정보 제공 장치의 블록 구성도이다.
도 2는 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법의 개념도이다.
도 3은 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법의 플로우 차트이다.
도 4는 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법을 이용하여 웹 애플리케이션의 취약점을 검출하는 예를 나타낸 도면이다.
1 is a block diagram of an API call information providing apparatus according to an embodiment of the present invention.
2 is a conceptual diagram of an API call information providing method according to an embodiment of the present invention.
3 is a flowchart of an API call information providing method according to an embodiment of the present invention.
4 is a diagram illustrating an example of detecting a vulnerability of a web application using the API call information providing method according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.

제1, 제2, A, B 등의 용어는 다양한 구성요소들을 설명하는 데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. "및/또는"이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다. The terms first, second, A, B, etc. may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as a second component, and similarly, the second component may also be referred to as a first component. The term "and / or" includes any combination of a plurality of related listed items or any of a plurality of related listed items.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. It is to be understood that when an element is referred to as being "connected" or "connected" to another element, it may be directly connected or connected to the other element, . On the other hand, when an element is referred to as being "directly connected" or "directly connected" to another element, it should be understood that there are no other elements in between.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used in this application is used only to describe a specific embodiment and is not intended to limit the invention. The singular expressions include plural expressions unless the context clearly dictates otherwise. In the present application, the terms "comprises" or "having" and the like are used to specify that there is a feature, a number, a step, an operation, an element, a component or a combination thereof described in the specification, But do not preclude the presence or addition of one or more other features, integers, steps, operations, elements, components, or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art to which this invention belongs. Terms such as those defined in commonly used dictionaries are to be interpreted as having a meaning consistent with the contextual meaning of the related art and are to be interpreted as either ideal or overly formal in the sense of the present application Do not.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.Hereinafter, preferred embodiments of the present invention will be described in detail with reference to the accompanying drawings. In order to facilitate the understanding of the present invention, the same reference numerals are used for the same constituent elements in the drawings and redundant explanations for the same constituent elements are omitted.

본 발명의 설명에서 API(Application Programming Interface)는 응용프로그램에서 사용할 수 있도록, 운영체제 또는 프로그래밍 언어가 제공하는 기능을 제어할 수 있도록 만든 인터페이스를 의미할 수 있으며, 응용프로그램이 운영체제나 데이터베이스 관리 시스템과 같은 시스템 프로그램과 통신할 때 사용되는 언어나 메시지 형식을 가질 수 있다. API는 프로그램 내에서 실행을 위해 특정 서브루틴(subroutine)에 연결을 제공하는 함수를 호출하는 것으로 구현될 수 있다. 여기서, 서브루틴은 프로그램 중 필요할 때마다 반복하여 사용할 수 있는 부분적 프로그램을 의미할 수 있다. In the description of the present invention, an API (Application Programming Interface) may refer to an interface that allows an operating system or a programming language to control functions provided by an application program. If the application program is an operating system or a database management system It can have the language or message format used to communicate with the system program. An API can be implemented by calling a function that provides a connection to a specific subroutine for execution within the program. Here, the subroutine may mean a partial program that can be used repeatedly as needed in a program.

본 발명의 일 실시예에 따른 API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(Web Application Server, WAS) 내에서 동작할 수 있고, 추출한 API 호출 정보를 웹 애플리케이션 서버 외에서 웹 애플리케이션을 동적 분석하는 동적 분석기에 제공할 수 있다.The API call information providing apparatus 100 according to an embodiment of the present invention can operate in a web application server (WAS) and can extract the API call information from a dynamic Analyzer.

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

도 1은 본 발명의 일 실시예에 따른 API 호출 정보 제공 장치의 블록 구성도이다.1 is a block diagram of an API call information providing apparatus according to an embodiment of the present invention.

도 1을 참조하면, 본 발명의 일 실시예에 따른 API(Application Programming Interface) 호출 정보 제공 장치(100)는 적어도 하나의 프로세서(110), 메모리(120) 및 저장 장치(130)를 포함할 수 있다. Referring to FIG. 1, an API (Application Programming Interface) call information providing apparatus 100 according to an embodiment of the present invention may include at least one processor 110, a memory 120, and a storage device 130 have.

프로세서(110)는 메모리(120) 및/또는 저장 장치(130)에 저장된 프로그램 명령(program command)을 실행할 수 있다. 프로세서(110)는 중앙 처리 장치(central processing unit, CPU), 그래픽 처리 장치(graphics processing unit, GPU) 또는 본 발명에 따른 방법들이 수행되는 전용의 프로세서를 의미할 수 있다. 메모리(120)와 저장 장치(130)는 휘발성 저장 매체 및/또는 비휘발성 저장 매체로 구성될 수 있다. 예를 들어, 메모리(120)는 읽기 전용 메모리(read only memory; ROM) 및/또는 랜덤 액세스 메모리(random access memory; RAM)로 구성될 수 있다.The processor 110 may execute a program command stored in the memory 120 and / or the storage device 130. The processor 110 may refer to a central processing unit (CPU), a graphics processing unit (GPU), or a dedicated processor on which the methods of the present invention are performed. The memory 120 and the storage device 130 may be composed of a volatile storage medium and / or a non-volatile storage medium. For example, the memory 120 may be comprised of read only memory (ROM) and / or random access memory (RAM).

메모리(120)는 프로세서(110)를 통해 실행되는 적어도 하나의 명령을 저장하고 있을 수 있다. 적어도 하나의 명령은 사용자의 요청에 따라 API를 호출하는 스레드(thread)의 ID(identification)을 추출하는 명령, 추적 코드를 포함하는 스레드의 메소드(method)를 실행하는 명령, 및 추적 코드에 따라 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출하는 명령을 포함할 수 있다. 또한, 스레드의 ID 및 API 호출 정보를 하나의 쌍으로 저장하는 명령, 및 스레드의 ID 및 API 호출 정보를 동적 분석기에게 제공하는 명령 중 적어도 하나를 더 포함할 수 있다.The memory 120 may store at least one instruction that is executed via the processor 110. The at least one command is a command for extracting an identification (ID) of a thread calling an API according to a user's request, a command for executing a method of a thread including a tracking code, And extracting the API call information from the HTTP request object, which is the first argument of the API call information. It may further include at least one of a command to store the ID of the thread and the API call information in one pair, and an instruction to provide the ID of the thread and the API call information to the dynamic analyzer.

프로세서(110)는 메모리(120)에 저장된 명령에 따라 사용자의 요청에 의해 API를 호출하는 스레드의 ID을 추출할 수 있다. 웹 애플리케이션 서버는 스레드를 이용하여 사용자의 요청을 처리할 수 있으며, 하나의 요청에는 하나의 스레드가 필요할 수 있다. 여기서, 스레드는 프로그램 수행 시 프로세서 내부에 존재하는 수행 경로, 즉 일련의 실행 코드를 의미할 수 있다. 또한, 스레드는 고유의 스레드 ID를 포함할 수 있고, 프로그램 카운터, 레지스터 집합 및 스택 중 적어도 하나를 더 포함할 수 있다. 다시 말해, 모든 스레드는 고유의 스레드 ID를 가질 수 있으므로, 요청 처리 시작 시점에 해당 요청 정보와 해당 요청을 처리하는 스레드의 스레드 ID를 매핑하는 경우, 이후 스레드 ID를 통해 해당 요청을 추적할 수 있다. 스레드로부터 스레드 ID를 추출하는 방법은 JVM(Java Virtual Machine)에서 제공하는 API를 이용할 수 있으나, 이에 한정되지 않는다.The processor 110 may extract an ID of a thread calling an API by a user's request in accordance with an instruction stored in the memory 120. [ A web application server can use a thread to process a user's request, and a request may require one thread. Here, the thread may mean a execution path existing in the processor at the time of executing the program, that is, a series of executable codes. Also, a thread may include a unique thread ID, and may further include at least one of a program counter, a register set, and a stack. In other words, since all threads can have their own thread ID, if the request information is mapped to the thread ID of the thread processing the request at the start of the request processing, the request can be tracked through the thread ID thereafter . A method of extracting a thread ID from a thread may use an API provided by a JVM (Java Virtual Machine), but is not limited thereto.

프로세서(110)는 메모리(120)에 저장된 명령에 따라 추적 코드를 포함하는 스레드의 메소드를 실행할 수 있다. 여기서, 메소드는 프로그래밍 언어에서의 함수와 대응되는 개념일 수 있으며, 객체의 상태 및 속성 변경과 같이 객체에 대하여 수행할 수 있는 작업을 정의한 것을 의미할 수 있고, 웹 애플리케이션 서버에 따라 결정될 수 있다. 또한, 추적 코드는 특정 객체로부터 특정 정보를 추출하는 코드를 의미할 수 있으며, 일반적으로 사용되는 통상의 추적 코드를 의미할 수고, 사용자에 의해 수정 또는 새롭게 정의될 수 있으나, 이에 한정되지 않는다. The processor 110 may execute a method of a thread that includes a tracking code in accordance with instructions stored in the memory 120. [ Here, a method may be a concept corresponding to a function in a programming language, and may be defined as defining an operation that can be performed on an object such as an object state and an attribute change, and may be determined according to a web application server. In addition, the tracking code may mean a code for extracting specific information from a specific object, means a general tracking code that is generally used, and may be modified or newly defined by a user, but is not limited thereto.

추적 코드는 HTTP(hypertext transfer protocol) 요청 및 응답을 처리하는 메소드 또는 JSP(java server page)에 대한 요청 및 응답을 처리하는 메소드의 내부에 사용자에 의해 미리 삽입될 수 있고, 추적 코드가 삽입된 메소드가 실행되는 경우 추적 코드가 동작될 수 있다. 추적 코드를 메소드의 내부에 삽입하는 방법은 바이트-코드 인스트러먼테이션(byte-code instrumentation) 기술을 사용할 수 있다. 바이트-코드 인스트러먼테이션 기술은 바이트-코드(byte-code)로 작성된 자바(java) 프로그램을 동적으로 수정할 수 있는 기술에 관한 것으로, 특정 클래스(class) 및 메소드에 대한 재정의(redefinition), 소스 수정, 신규 클래스 생성 및 주입 등을 수행할 수 있는 기술일 수 있다. 따라서, 이 기술은 프로파일링, 모니터링 및 이벤트 기록 등의 다양한 목적으로 사용될 수도 있다. 인스트러먼테이션 기술은 자바 측에서 제공하는 인스트러먼테이션 클래스(instrumentation class)를 통해 수행될 수 있으나, 이에 한정되지 않는다. The tracking code can be pre-inserted by the user inside a method that handles requests and responses to HTTP (hypertext transfer protocol) requests or responses or requests and responses to JSPs (java server pages) The tracking code can be operated. You can use the byte-code instrumentation technique to insert the tracking code inside a method. The byte-code instrumentation technology is a technique for dynamically modifying a Java program written in byte-code, and it is a technique for redefinition of a specific class and method, Source modification, new class creation and injection, and the like. Therefore, this technique may be used for various purposes such as profiling, monitoring, and event recording. Instruction techniques can be performed through an instrumentation class provided by the Java side, but are not limited thereto.

프로세서(110)는 메모리(120)에 저장된 명령에 따라 추적 코드에 의해 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출할 수 있다. 추적 코드가 삽입된 메소드는 적어도 하나의 인수를 가지고 실행될 수 있으며, 인수 중 첫 번째 인수에 HTTP 요청 객체를 가질 수 있다. 여기서, HTTP 요청 객체는 사용자의 요청 정보를 저장하고 있는 HttpServletRequest 클래스를 의미할 수 있다. HTTP 요청 객체로부터 획득할 수 있는 정보는 원격지 주소(remote address), 포트 번호(port number), 호스트 네임(host name), 요청 URL(request uniform resource locator), 메소드 및 전체 파라미터 정보(parameter map) 중 적어도 하나를 포함할 수 있다. 또한, 전체 파라미터 정보는 파라미터의 타입 및 값 중 적어도 하나를 포함할 수 있다.The processor 110 may extract the API call information from the HTTP request object, which is the first argument of the method, by the trace code according to the command stored in the memory 120. [ A method with the tracking code embedded can be executed with at least one argument, and the first argument of the argument can have an HTTP request object. Here, the HTTP request object may refer to the HttpServletRequest class storing the request information of the user. The information that can be obtained from the HTTP request object includes a remote address, a port number, a host name, a request uniform resource locator (URL), a method, and a parameter map And may include at least one. Further, the entire parameter information may include at least one of a parameter type and a value.

프로세서(110)는 메모리(120)에 저장된 명령에 따라 스레드의 ID 및 API 호출 정보를 하나의 쌍으로 저장할 수 있다. 스레드의 ID 및 API 호출 정보는 하나의 쌍으로 저장됨으로써, 이후, 스레드 ID를 키(key)로 API 호출 정보를 찾을 수 있는 요청 추적 맵(map)을 형성할 수 있다. 따라서, 본 발명의 일 실시예에 따른 API 호출 정보 제공 장치(100)는 필요한 경우, 스레드 ID를 이용하여 대응되는 API 호출 정보를 제공함으로써, 스레드의 요청 처리 여부 또는 현재 스레드가 처리 중인 요청의 정보를 획득할 수 있다.The processor 110 may store the ID of the thread and the API call information in one pair according to the instruction stored in the memory 120. [ The ID of the thread and the API call information are stored in a pair so that a request tracking map can be formed in which the API call information can be searched by using the thread ID as a key. Accordingly, the API call information providing apparatus 100 according to an embodiment of the present invention provides API call information corresponding to a thread ID, if necessary, so that whether the thread is requesting processing or information Can be obtained.

프로세서(110)는 메모리(120)에 저장된 명령에 따라 스레드의 ID 및 API 호출 정보를 동적 분석기에게 제공할 수 있다. 여기서, 동적 분석기는 웹 애플리케이션의 취약점을 검출하기 위해 테스트 케이스를 이용하여 요청 및 응답을 분석하고, 본 발명의 일 실시예에 따른 API 호출 정보 제공 장치(100)가 제공하는 API 호출 정보도 함께 분석할 수 있다. 또한, 동적 분석기는 동적 분석 진행 중 실시간으로 API 호출 정보를 수신하기 위해 별도의 포트(port)를 개방할 수 있다. 동적 분석기는 사전에 정의된 취약점 검출 규칙을 이용하여 특정 API에 위험한 값이 파라미터로 전달되는 경우 취약점을 검출할 수 있다. 여기서, 사전에 정의된 취약점 검출 규칙은 웹 애플리케이션의 동적 분석 방법에서 사용되는 통상의 취약점 검출 규칙일 수 있고, 사용자에 의해 새롭게 정의된 취약점 검출 규칙일 수 있으나, 이에 한정되지 않는다.The processor 110 may provide the dynamic analyzer with the ID of the thread and API call information according to instructions stored in the memory 120. [ Here, the dynamic analyzer analyzes the request and the response using the test case to detect the vulnerability of the web application, analyzes the API call information provided by the API call information providing apparatus 100 according to an embodiment of the present invention, can do. In addition, the dynamic analyzer may open a separate port to receive API call information in real time during dynamic analysis. The dynamic analyzer can detect a vulnerability when a dangerous value is passed as a parameter to a specific API using a predefined vulnerability detection rule. Here, the predefined vulnerability detection rule may be a normal vulnerability detection rule used in the dynamic analysis method of the web application, and may be a vulnerability detection rule newly defined by the user, but is not limited thereto.

도 2는 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법의 개념도이다.2 is a conceptual diagram of an API call information providing method according to an embodiment of the present invention.

도 2를 참조하면, 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법은 웹 애플리케이션 서버(150)와 동적 분석기(200)의 상호 정보 교환을 통해 수행될 수 있다. 여기서, 웹 애플리케이션 서버(150)는 동적 분석기(200)에 의해 동적 분석이 수행될 테스트 대상인 웹 애플리케이션(155) 및 웹 애플리케이션(155)을 실행하기 위해 API를 호출하는 경우 API 호출 정보를 추출하는 API 호출 정보 제공 장치(100)를 포함할 수 있다.Referring to FIG. 2, the API call information providing method according to an embodiment of the present invention can be performed through mutual information exchange between the web application server 150 and the dynamic analyzer 200. Here, the web application server 150 extracts the API call information when the API is called to execute the web application 155 and the web application 155 to be tested by the dynamic analyzer 200 And the paging information providing apparatus 100 may be included.

더욱 상세하게는, 동적 분석기(200)가 웹 애플리케이션 서버(150)로 테스트 대상인 웹 애플리케이션(155) 실행과 관련된 요청을 송신할 수 있고, 웹 애플리케이션 서버(150)는 수신한 요청을 처리하기 위해 필요한 API를 호출하는 등의 작업을 수행하고, 이에 따른 응답을 동적 분석기(200)로 송신할 수 있다. 이때, API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(150)가 수신한 요청을 처리하는 스레드(thread)의 스레드 ID(Identification)을 추출할 수 있다. 또한, API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(150)의 특정 메소드에 추적 코드를 미리 삽입할 수 있고, 웹 애플리케이션 서버(150)가 수신한 요청에 따라 API를 호출하기 위해 추적 코드가 미리 삽입된 특정 메소드를 실행하는 경우, API 호출 정보를 추출할 수 있다. More specifically, the dynamic analyzer 200 may send a request related to the execution of the web application 155 to be tested to the web application server 150, and the web application server 150 may send a request API, or the like, and transmit a response to the dynamic analyzer 200. At this time, the API call information providing apparatus 100 can extract the thread ID of a thread that processes the request received by the web application server 150. [ In addition, the API call information providing apparatus 100 may insert the tracking code into the specific method of the web application server 150 in advance, and the tracking code may be used to call the API according to the request received by the web application server 150 When executing a specific method that has been inserted in advance, API call information can be extracted.

API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(150)가 동적 분석기(200)로 송신하는 응답과 별도로 추출한 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 제공할 수 있고, 응답과 함께 추출한 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 제공할 수도 있다. 또한, API 호출 정보 제공 장치(100)는 추출한 스레드 ID 및 API 호출 정보를 웹 애플리케이션 서버(150)에게 제공하여, 웹 애플리케이션 서버(150)가 동적 분석기(200)로 송신하는 응답과는 별개로 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 제공할 수 있고, 응답과 함께 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 제공할 수 있으나, 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 제공하는 주체 및 방법은 이에 한정하지 않는다.The API call information providing apparatus 100 can provide the dynamic ID and the API ID information to the dynamic analyzer 200 separately from the response sent from the web application server 150 to the dynamic analyzer 200, Thread ID and API call information to the dynamic analyzer 200. [ The API call information providing apparatus 100 also provides the extracted thread ID and API call information to the web application server 150 so that the web application server 150 can access the thread ID and API call information to the dynamic analyzer 200 and may provide the thread ID and API call information with the response to the dynamic analyzer 200 but may also provide the thread ID and API call information to the dynamic analyzer 200, The present invention is not limited thereto.

도 3은 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법의 플로우 차트이다.3 is a flowchart of an API call information providing method according to an embodiment of the present invention.

도 3을 참조하면, 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법은 우선, 사용자에 의해 동적 분석기(200)에 테스트용 요청이 입력될 수 있고(S310), 동적 분석기(200)는 입력된 테스트용 요청을 웹 애플리케이션 서버(150)로 전달할 수 있다(S320). API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(150)이 수신한 요청을 처리하기 위해 사용하는 스레드(thread)의 스레드 ID를 추출할 수 있다(S330). 스레드 ID는 스레드 고유의 ID이므로, 이후, 스레드 ID를 이용하여 해당 스레드에서 처리하는 요청 정보를 찾을 수 있다. S330 단계는 수행되는 단계의 순서에는 무관할 수 있으나, 후술하는 S380 단계 이전에 수행될 수 있다. Referring to FIG. 3, a method for providing API call information according to an exemplary embodiment of the present invention may include inputting a test request to a dynamic analyzer 200 by a user (S310) To the web application server 150 (S320). The API call information providing apparatus 100 may extract a thread ID of a thread used to process a request received by the web application server 150 (S330). Since the thread ID is a thread-specific ID, the thread ID can be used to find request information to be processed by the thread. The step S330 may be independent of the order of the steps to be performed, but may be performed before the step S380 described later.

웹 애플리케이션 서버(150)는 수신한 요청에 따른 테스트용 웹 애플리케이션을 실행하기 위해 필요한 API를 호출할 수 있으며, API 호출을 위해 요청을 처리하는 스레드의 메소드를 실행할 수 있다(S340). 여기서, 메소드는 미리 추적 코드가 삽입되어 있는 특정 메소드일 수 있으며, API 호출 정보 제공 장치(100)는 웹 애플리케이션 서버(150)가 메소드를 실행함에 따라 추적 코드에 의해 API 호출 정보를 추출할 수 있다(S350). 여기서, API 호출 정보는 추적 코드가 삽입되어 있는 메소드의 첫 번째 인자인 HTTP 요청 객체로부터 획득할 수 있다. 웹 애플리케이션 서버(150)는 API를 호출하여 테스트용 웹 애플리케이션을 동작하여 동적 분석기(200)의 요청을 처리할 수 있다(S360). The web application server 150 may call an API required to execute the test web application according to the received request, and may execute a method of the thread that processes the request for the API call (S340). Here, the method may be a specific method in which the tracking code is inserted in advance, and the API call information providing device 100 may extract the API call information by the tracking code as the web application server 150 executes the method (S350). Here, the API call information can be obtained from the HTTP request object, which is the first argument of the method in which the tracking code is inserted. The web application server 150 may call the API to operate the test web application to process the request of the dynamic analyzer 200 (S360).

웹 애플리케이션 서버(150)는 요청 처리의 결과로써 요청에 따른 응답을 동적 분석기(200)로 송신할 수 있다(S370). 또한, API 호출 정보 제공 장치(100)는 추출한 스레드 ID 및 API 호출 정보를 동적 분석기(200)에게 송신할 수 있다(S380). 여기서 S370 단계와 S380 단계는 동시에 일어날 수 있으나, 어느 단계가 우선 수행되어도 무방하다. 동적 분석기(200)는 웹 애플리케이션 서버(150)로부터 수신한 요청에 따른 응답 및 API 호출 정보 제공 장치(100)로부터 수신한 스레드 ID 및 API 호출 정보를 기초로 웹 애플리케이션의 취약점을 검출할 수 있다(S390). 본 발명에 따르면, API 호출 정보 제공 장치(100)가 동적 분석기(200)로 제공한 API 호출 정보로 인해, 기존의 동적 분석기가 검출하기 어려웠던 SQL 삽입 또는 운영체제 명령어 삽입 등의 보안 취약점도 검출할 수 있다.The web application server 150 may transmit a response according to the request to the dynamic analyzer 200 as a result of the request processing (S370). In addition, the API call information providing apparatus 100 may transmit the extracted thread ID and API call information to the dynamic analyzer 200 (S380). Here, steps S370 and S380 may occur simultaneously, but any step may be performed first. The dynamic analyzer 200 can detect the vulnerability of the web application based on the response according to the request received from the web application server 150 and the thread ID and API call information received from the API call information providing apparatus 100 S390). According to the present invention, due to the API call information provided by the API call information providing apparatus 100 to the dynamic analyzer 200, it is possible to detect a security vulnerability such as SQL insertion or insertion of an operating system command, have.

도 4는 본 발명의 일 실시예에 따른 API 호출 정보 제공 방법을 이용하여 웹 애플리케이션의 취약점을 검출하는 예를 나타낸 도면이다.4 is a diagram illustrating an example of detecting a vulnerability of a web application using the API call information providing method according to an embodiment of the present invention.

도 4를 참조하면, 동적 분석기(200)는 사용자의 의해 볼드체로 표시된 공격 문자열이 포함된 요청을 웹 애플리케이션 서버(150)로 송신할 수 있다. 여기서, 공격 문자열은 기존의 동적 분석기(200)가 검출하기 어려운 운영체제 명령어를 의미할 수 있다. 도 4의 예는 웹 애플리케이션 서버(150)에서 ProcessBuilder 생성자의 인자로 공격 문자열이 사용되는 경우를 나타낸 것일 수 있다. 여기서 ProcessBuiler는 운영체제 프로세서를 생성하는 클래스를 의미할 수 있다.Referring to FIG. 4, the dynamic analyzer 200 may send a request to the web application server 150 that includes an attack string indicated by the user in bold. Here, the attack string may mean an operating system command that is difficult for the conventional dynamic analyzer 200 to detect. The example of FIG. 4 may be a case where an attack string is used as a parameter of the ProcessBuilder constructor in the web application server 150. Here, ProcessBuiler can refer to a class that generates an operating system processor.

웹 애플리케이션 서버(150)는 수신한 공격 문자열이 포함된 요청을 처리하여 요청에 따른 응답을 동적 분석기(200)로 송신할 수 있다. 또한, 웹 애플리케이션 서버(150) 내에서 동작하는 본 발명의 일 실시예인 API 호출 정보 제공 장치는 웹 애플리케이션 서버(150)가 수신한 요청을 처리하기 위한 스레드 ID 및 API를 호출하는 경우 API 호출 정보를 추출할 수 있고, 스레드 ID 및 API 호출 정보를 동적 분석기(200)로 송신할 수 있다. 도 4를 참조하면, 요청을 처리하는 스레드의 스레드 ID는 24를 의미할 수 있고, invocations는 아래의 내용을 호출하는 것을 의미할 수 있다.The web application server 150 may process the request including the received attack string and transmit a response according to the request to the dynamic analyzer 200. [ In addition, the API call information providing apparatus, which is an embodiment of the present invention operating in the web application server 150, includes API call information when calling a thread ID and an API for processing a request received by the web application server 150 And send the thread ID and API call information to the dynamic analyzer 200. [ Referring to FIG. 4, the thread ID of the thread handling the request may mean 24, and invocations may mean calling the following.

동적 분석기(200)는 웹 애플리케이션 서버(150)로부터 요청에 따른 응답 및 API 호출 정보를 수신하여, 요청, 응답 및 API 호출 정보를 기초로 웹 애플리케이션의 취약점을 검출할 수 있다. 여기서, API 호출 정보는 API의 정규화된 명칭(Fully Qualified Name, FQN), 파라미터의 타입(parameter type) 및 파라미터의 값(parameter value) 중 적어도 하나를 포함할 수 있다. 도 4를 참조하면, FQN은 java.lang.ProcessBuilder(java.lang.String[])을 의미할 수 있으며, 파라미터 타입은 String을 의미할 수 있고, 파라미터 값은 a; type %SYSTEMROOT%\win.ini 을 의미할 수 있다.The dynamic analyzer 200 receives the response and the API call information according to the request from the web application server 150, and can detect the vulnerability of the web application based on the request, response, and API call information. Here, the API call information may include at least one of a Fully Qualified Name (FQN) of the API, a parameter type, and a parameter value. Referring to FIG. 4, the FQN may refer to java.lang.ProcessBuilder (java.lang.String []), the parameter type may be String, and the parameter values may be a; It can mean type% SYSTEMROOT% \ win.ini.

다시 말해, 동적 분석기(200)는 기존의 동적 분석기가 검출하기 어려운 명령어 삽입에 대한 취약점을 API 호출 정보를 기초로 검출할 수 있다. 더욱 상세하게는, 동적 분석기(200)는 요청, 응답 및 API 호출 정보를 기초로 사전에 정의된 검출 규칙에 따라 특정 API에 위험한 값이 파라미터로 전달되는 경우를 보안 취약점으로 검출할 수 있다.In other words, the dynamic analyzer 200 can detect the vulnerability of instruction insertion, which is difficult to detect by the existing dynamic analyzer, based on the API call information. More specifically, the dynamic analyzer 200 can detect, as a security vulnerability, a case where a dangerous value is passed as a parameter to a specific API according to a predefined detection rule based on request, response, and API call information.

본 발명의 실시예에 따른 API 호출 정보 제공 방법의 동작은 컴퓨터로 읽을 수 있는 기록매체에 컴퓨터가 읽을 수 있는 프로그램 또는 코드로서 구현하는 것이 가능하다. 컴퓨터가 읽을 수 있는 기록매체는 컴퓨터 시스템에 의해 읽혀질 수 있는 데이터가 저장되는 모든 종류의 기록장치를 포함한다. 또한, 컴퓨터가 읽을 수 있는 기록매체는 네트워크로 연결된 컴퓨터 시스템에 분산되어 분산 방식으로 컴퓨터로 읽을 수 있는 프로그램 또는 코드가 저장되고 실행될 수 있다. The operation of the API call information providing method according to the embodiment of the present invention can be implemented as a computer readable program or code on a computer readable recording medium. A computer-readable recording medium includes all kinds of recording apparatuses in which data that can be read by a computer system is stored. In addition, the computer-readable recording medium may be distributed and distributed in a networked computer system so that a computer-readable program or code can be stored and executed.

또한, 컴퓨터가 읽을 수 있는 기록매체는 롬(rom), 램(ram), 플래시 메모리(flash memory) 등과 같이 프로그램 명령을 저장하고 수행하도록 특별히 구성된 하드웨어 장치를 포함할 수 있다. 프로그램 명령은 컴파일러(compiler)에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터(interpreter) 등을 사용해서 컴퓨터에 의해 실행될 수 있는 고급 언어 코드를 포함할 수 있다.Also, the computer-readable recording medium may include a hardware device specially configured to store and execute program instructions, such as a ROM, a RAM, a flash memory, and the like. Program instructions may include machine language code such as those produced by a compiler, as well as high-level language code that may be executed by a computer using an interpreter or the like.

본 발명의 일부 측면들은 장치의 문맥에서 설명되었으나, 그것은 상응하는 방법에 따른 설명 또한 나타낼 수 있고, 여기서 블록 또는 장치는 방법 단계 또는 방법 단계의 특징에 상응한다. 유사하게, 방법의 문맥에서 설명된 측면들은 또한 상응하는 블록 또는 아이템 또는 상응하는 장치의 특징으로 나타낼 수 있다. 방법 단계들의 몇몇 또는 전부는 예를 들어, 마이크로프로세서, 프로그램 가능한 컴퓨터 또는 전자 회로와 같은 하드웨어 장치에 의해(또는 이용하여) 수행될 수 있다. 몇몇의 실시예에서, 가장 중요한 방법 단계들의 하나 이상은 이와 같은 장치에 의해 수행될 수 있다. While some aspects of the invention have been described in the context of an apparatus, it may also represent a description according to a corresponding method, wherein the block or apparatus corresponds to a feature of the method step or method step. Similarly, aspects described in the context of a method may also be represented by features of the corresponding block or item or corresponding device. Some or all of the method steps may be performed (e.g., by a microprocessor, a programmable computer or a hardware device such as an electronic circuit). In some embodiments, one or more of the most important method steps may be performed by such an apparatus.

실시예들에서, 프로그램 가능한 로직 장치(예를 들어, 필드 프로그머블 게이트 어레이)가 여기서 설명된 방법들의 기능의 일부 또는 전부를 수행하기 위해 사용될 수 있다. 실시예들에서, 필드 프로그머블 게이트 어레이는 여기서 설명된 방법들 중 하나를 수행하기 위한 마이크로프로세서와 함께 작동할 수 있다. 일반적으로, 방법들은 어떤 하드웨어 장치에 의해 수행되는 것이 바람직하다.In embodiments, a programmable logic device (e.g., a field programmable gate array) may be used to perform some or all of the functions of the methods described herein. In embodiments, the field programmable gate array may operate in conjunction with a microprocessor to perform one of the methods described herein. Generally, the methods are preferably performed by some hardware device.

상기에서는 본 발명의 바람직한 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.It will be apparent to those skilled in the art that various modifications and variations can be made in the present invention without departing from the spirit or scope of the present invention as defined by the following claims It can be understood that

100: API 호출 정보 제공 장치 110: 프로세서
120: 메모리 130: 저장 장치
150: 웹 애플리케이션 서버 155: 웹 애플리케이션
200: 동적 분석기
100: API call information providing device 110: Processor
120: memory 130: storage device
150: Web application server 155: Web application
200: Dynamic Analyzer

Claims (12)

사용자의 요청에 따라 API(application programming interface)를 호출하는 스레드(thread)의 ID(identification)을 추출하는 단계;
추적 코드를 포함하는 상기 스레드의 메소드(method)를 실행하는 단계; 및
상기 추적 코드에 따라 상기 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출하는 단계를 포함하는, API 호출 정보 제공 방법.
Extracting an identification (ID) of a thread calling an application programming interface (API) according to a user's request;
Executing a method of the thread including the tracking code; And
And extracting API call information from an HTTP request object that is a first argument of the method according to the tracking code.
청구항 1에 있어서,
상기 스레드의 ID 및 상기 API 호출 정보를 하나의 쌍으로 저장하는 단계를 더 포함하는, API 호출 정보 제공 방법.
The method according to claim 1,
And storing the ID of the thread and the API call information in a single pair.
청구항 1에 있어서,
상기 스레드의 ID 및 상기 API 호출 정보를 동적 분석기에게 제공하는 단계를 더 포함하는, API 호출 정보 제공 방법.
The method according to claim 1,
Further comprising the step of providing an ID of the thread and the API call information to a dynamic analyzer.
청구항 1에 있어서,
상기 API 호출 정보는,
API의 정규화된 명칭(Fully Qualified Name, FQN), 파라미터(parameter)의 타입 및 파라미터의 값 중 적어도 하나를 포함하는, API 호출 정보 제공 방법.
The method according to claim 1,
The API call information includes:
A Fully Qualified Name (FQN) of the API, a type of a parameter, and a value of a parameter.
청구항 1에 있어서,
상기 추적 코드를 포함하는 상기 스레드의 메소드는,
BCI(Byte-Code Instrumentation)를 이용하여 상기 추적 코드가 삽입된, API 호출 정보 제공 방법.
The method according to claim 1,
Wherein the method of the thread, which includes the tracking code,
Wherein the tracking code is inserted using Byte-Code Instrumentation (BCI).
청구항 1에 있어서,
상기 스레드의 ID를 추출하는 단계는,
JVM(Java Virtual Machine)에서 제공하는 API를 통해 상기 스레드로부터 상기 스레드의 ID를 추출하는 단계를 포함하는, API 호출 정보 제공 방법.
The method according to claim 1,
The step of extracting the ID of the thread includes:
And extracting the ID of the thread from the thread through an API provided by a Java Virtual Machine (JVM).
프로세서(processor); 및
상기 프로세서를 통해 실행되는 적어도 하나의 명령이 저장된 메모리(memory)를 포함하고,
상기 적어도 하나의 명령은,
사용자의 요청에 따라 API(application programming interface)를 호출하는 스레드(thread)의 ID(identification)을 추출하도록 실행되고,
추적 코드를 포함하는 상기 스레드의 메소드(method)를 실행하도록 실행되고,
상기 추적 코드에 따라 상기 메소드의 첫 번째 인수인 HTTP 요청 객체로부터 API 호출 정보를 추출하도록 실행되는, API 호출 정보 제공 장치.
A processor; And
Wherein at least one instruction executed through the processor includes a memory,
Wherein the at least one instruction comprises:
Is executed to extract an identification (ID) of a thread calling an application programming interface (API) according to a user's request,
Executing a method of the thread including the tracking code,
And to extract API call information from an HTTP request object that is a first argument of the method according to the trace code.
청구항 7에 있어서,
상기 적어도 하나의 명령은,
상기 스레드의 ID 및 상기 API 호출 정보를 하나의 쌍으로 저장하도록 실행되는, API 호출 정보 제공 장치.
The method of claim 7,
Wherein the at least one instruction comprises:
And storing the ID of the thread and the API call information in one pair.
청구항 7에 있어서,
상기 적어도 하나의 명령은,
상기 스레드의 ID 및 상기 API 호출 정보를 동적 분석기에게 제공하도록 실행되는, API 호출 정보 제공 장치.
The method of claim 7,
Wherein the at least one instruction comprises:
And providing the API call information to the dynamic analyzer.
청구항 7에 있어서,
상기 API 호출 정보는,
API의 정규화된 명칭(Fully Qualified Name, FQN), 파라미터(parameter)의 타입 및 파라미터의 값 중 적어도 하나를 포함하는, API 호출 정보 제공 장치.
The method of claim 7,
The API call information includes:
A Fully Qualified Name (FQN) of the API, a type of a parameter, and a value of a parameter.
청구항 7에 있어서,
상기 추적 코드를 포함하는 상기 스레드의 메소드는,
BCI(Byte-Code Instrumentation)를 이용하여 상기 추적 코드가 삽입된, API 호출 정보 제공 장치.
The method of claim 7,
Wherein the method of the thread, which includes the tracking code,
Wherein the tracking code is inserted using BCI (Byte-Code Instrumentation).
청구항 7에 있어서,
상기 적어도 하나의 명령은,
JVM(Java Virtual Machine)에서 제공하는 API를 통해 상기 스레드로부터 상기 스레드의 ID를 추출하도록 실행되는, API 호출 정보 제공 장치.
The method of claim 7,
Wherein the at least one instruction comprises:
And to extract the ID of the thread from the thread via an API provided by a JVM (Java Virtual Machine).
KR1020170105236A 2017-08-21 2017-08-21 Method and apparatus for providing api call information for dynamic analysis of web application KR101996358B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020170105236A KR101996358B1 (en) 2017-08-21 2017-08-21 Method and apparatus for providing api call information for dynamic analysis of web application

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020170105236A KR101996358B1 (en) 2017-08-21 2017-08-21 Method and apparatus for providing api call information for dynamic analysis of web application

Publications (2)

Publication Number Publication Date
KR20190020374A true KR20190020374A (en) 2019-03-04
KR101996358B1 KR101996358B1 (en) 2019-07-03

Family

ID=65760033

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020170105236A KR101996358B1 (en) 2017-08-21 2017-08-21 Method and apparatus for providing api call information for dynamic analysis of web application

Country Status (1)

Country Link
KR (1) KR101996358B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102005107B1 (en) * 2019-01-29 2019-07-29 엘아이지넥스원 주식회사 Method and Apparatus for Analyzing Malicious Code Using API Call Sequence
CN113254112A (en) * 2021-04-29 2021-08-13 杭州天谷信息科技有限公司 Method and system for associating request and interface

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20240002425A (en) * 2022-06-29 2024-01-05 쿠팡 주식회사 Method and apparatus for providing information

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750834B1 (en) * 2005-10-06 2007-08-22 (주)아이피엠에스 A method of data call stack tracing in data monitoring of JAVA byte code and a device for storing the method in compter program type
KR101328344B1 (en) * 2011-01-24 2013-11-11 주식회사 엘지씨엔에스 Heterogeneous Virtual Server Consolidation System and Method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100750834B1 (en) * 2005-10-06 2007-08-22 (주)아이피엠에스 A method of data call stack tracing in data monitoring of JAVA byte code and a device for storing the method in compter program type
KR101328344B1 (en) * 2011-01-24 2013-11-11 주식회사 엘지씨엔에스 Heterogeneous Virtual Server Consolidation System and Method

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102005107B1 (en) * 2019-01-29 2019-07-29 엘아이지넥스원 주식회사 Method and Apparatus for Analyzing Malicious Code Using API Call Sequence
CN113254112A (en) * 2021-04-29 2021-08-13 杭州天谷信息科技有限公司 Method and system for associating request and interface

Also Published As

Publication number Publication date
KR101996358B1 (en) 2019-07-03

Similar Documents

Publication Publication Date Title
Pellegrino et al. jäk: Using dynamic analysis to crawl and test modern web applications
US20070011742A1 (en) Communication information monitoring apparatus
CN112800427B (en) Webshell detection method and device, electronic equipment and storage medium
KR101996358B1 (en) Method and apparatus for providing api call information for dynamic analysis of web application
US9507933B2 (en) Program execution apparatus and program analysis apparatus
EP3547121B1 (en) Combining device, combining method and combining program
EP2987110B1 (en) Unused parameters of application under test
Gauthier et al. AFFOGATO: runtime detection of injection attacks for node. js
US11436133B2 (en) Comparable user interface object identifications
Chandrashekhar et al. SQL injection attack mechanisms and prevention techniques
Kim et al. Efficient file fuzz testing using automated analysis of binary file format
KR101886203B1 (en) Apparatus and method for analyzing programs
CN112052364B (en) Sensitive information detection method, device, equipment and computer readable storage medium
CN112817877A (en) Abnormal script detection method and device, computer equipment and storage medium
CN115186274A (en) IAST-based security test method and device
KR20180009582A (en) Apparatus and method for analyzing programs
EP2972880B1 (en) Kernel functionality checker
Chen et al. ARMORY: An automatic security testing tool for buffer overflow defect detection
Jaeger et al. Normalizing security events with a hierarchical knowledge base
CN111125704B (en) Webpage Trojan horse recognition method and system
CN110457900B (en) Website monitoring method, device and equipment and readable storage medium
JP6258189B2 (en) Specific apparatus, specific method, and specific program
CN116361793A (en) Code detection method, device, electronic equipment and storage medium
WO2019039617A1 (en) Method and device for providing api call information for dynamic analysis of web application
CN111523118B (en) Webshell detection method, device, storage medium and equipment

Legal Events

Date Code Title Description
A201 Request for examination
N231 Notification of change of applicant
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right