KR102195748B1 - Apparatus and method for generating patch - Google Patents

Apparatus and method for generating patch Download PDF

Info

Publication number
KR102195748B1
KR102195748B1 KR1020190059668A KR20190059668A KR102195748B1 KR 102195748 B1 KR102195748 B1 KR 102195748B1 KR 1020190059668 A KR1020190059668 A KR 1020190059668A KR 20190059668 A KR20190059668 A KR 20190059668A KR 102195748 B1 KR102195748 B1 KR 102195748B1
Authority
KR
South Korea
Prior art keywords
patch
source code
tokenizer
tokens
operations
Prior art date
Application number
KR1020190059668A
Other languages
Korean (ko)
Other versions
KR20200134084A (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 KR1020190059668A priority Critical patent/KR102195748B1/en
Publication of KR20200134084A publication Critical patent/KR20200134084A/en
Application granted granted Critical
Publication of KR102195748B1 publication Critical patent/KR102195748B1/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/10Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
    • G06F21/12Protecting executable software
    • G06F21/121Restricting unauthorised execution of programs
    • G06F21/125Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
    • 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/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities

Landscapes

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

Abstract

일 실시예에 따른 패치 생성 장치는 소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 패치 동작 라이브러리부와, 패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 토크나이저부와, 상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하며, 상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별한 뒤, 상기 선별된 패치 동작을 토큰 레벨로 변환시키는 패치 절차 생성부와, 상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 패치 생성부를 포함한다The patch generation apparatus according to an embodiment includes a patch operation library unit that stores a plurality of patch operations created at a source code level, a tokenizer unit that divides a source code to be patched into a plurality of tokens, and included in the source code to be patched. When a security weakness is input, a supplemental solution for the security weakness is output, a patch operation required for the supplementary solution is selected from among the plurality of patch operations, and then the selected patch operation is converted to a token level. And a patch generator configured to generate a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens.

Description

패치 생성 장치 및 방법 {APPARATUS AND METHOD FOR GENERATING PATCH}Patch generation device and method {APPARATUS AND METHOD FOR GENERATING PATCH}

본 발명은 패치 생성 장치 및 방법에 관한 것이다.The present invention relates to an apparatus and method for generating a patch.

컴퓨터 프로그램 등의 소스 코드에는 보안 문제를 일으키는 보안상 약점이 포함될 수 있다. 이러한 보안상 약점의 경우 사람이 찾아내기에는 쉽지가 않다. 이에, 보안상 약점을 찾아주는 정적 분석 도구가 개발되어 이용되고 있다. Source codes such as computer programs may contain security weaknesses that cause security problems. These security weaknesses are not easy for humans to detect. Accordingly, a static analysis tool to find weaknesses in security has been developed and used.

하지만 대부분의 정적 분석 도구는 보안상 약점을 찾아내기만 할 뿐 이를 패치해 주지는 않는다. 왜냐하면, 컴퓨터 프로그램의 형태는 다양하며, 보안상 약점을 패치하는 방식 역시 다양하기 때문이다. 즉 패치를 제공하려면 각각의 경우에 해당하는 무수히 많은 패치 생성 프로그램을 작성해야 하는 문제가 발생한다. 따라서 대부분의 정적 분석 도구는 보안상 약점과 패치 하는 방법을 원론적으로 설명하는 매뉴얼을 제공하는데 그치며, 사용자는 이를 보고 보안상 약점이 검출되지 않을 때까지 패치를 반복하는 식으로 대처하는 실정이다.However, most static analysis tools only detect security weaknesses and do not patch them. This is because there are various types of computer programs, and various methods of patching security weaknesses. In other words, in order to provide patches, a problem arises in that a myriad of patch generation programs for each case must be created. Therefore, most static analysis tools only provide manuals that explain security weaknesses and how to patch them in principle, and users look at them and respond by repeating patches until no security weaknesses are detected.

한국공개특허공보, 10-2011-0072989호 (2011.06.29. 공개)Korean Patent Application Publication No. 10-2011-0072989 (published on June 29, 2011)

본 발명의 해결하고자 하는 과제는, 소스 코드에 포함된 보안상 약점을 보완하는 패치를 자동으로 생성하는 기술을 제공하는 것이다.The problem to be solved of the present invention is to provide a technology for automatically generating a patch that compensates for the security weakness included in the source code.

또한, 새로운 또는 다양한 프로그래밍 언어로 작성된 소스 코드에 대해서도 그에 맞게 패치가 자동으로 생성되도록 하는 기술을 제공하는 것이다.In addition, it provides a technology that automatically generates patches for source codes written in new or various programming languages.

다만, 본 발명의 해결하고자 하는 과제는 이상에서 언급한 것으로 제한되지 않으며, 언급되지 않은 또 다른 해결하고자 하는 과제는 아래의 기재로부터 본 발명이 속하는 통상의 지식을 가진 자에게 명확하게 이해될 수 있을 것이다.However, the problem to be solved of the present invention is not limited to the ones mentioned above, and another problem to be solved that is not mentioned can be clearly understood by those of ordinary skill in the art from the following description. will be.

일 실시예에 따른 패치 생성 장치는 소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 패치 동작 라이브러리부와, 패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 토크나이저부와, 상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하며, 상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별한 뒤, 상기 선별된 패치 동작을 토큰 레벨로 변환시키는 패치 절차 생성부와, 상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 패치 생성부를 포함한다.The patch generation apparatus according to an embodiment includes a patch operation library unit that stores a plurality of patch operations created at a source code level, a tokenizer unit that divides a source code to be patched into a plurality of tokens, and included in the source code to be patched. When a security weakness is input, a supplemental solution for the security weakness is output, a patch operation required for the supplementary solution is selected from among the plurality of patch operations, and then the selected patch operation is converted to a token level. And a patch generator configured to generate a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens.

또한, 상기 토크나이저부는 프로그래밍 언어별로 복수 개가 마련되어 있으며, 상기 소스 코드는 상기 복수 개의 토크나이저부 중에서 상기 소스 코드의 기반이 되는 프로그래밍 언어와 부합되는 토크나이저부에 의해 상기 복수 개의 토큰으로 분할될 수 있다.In addition, a plurality of tokenizer units may be provided for each programming language, and the source code may be divided into the plurality of tokens by a tokenizer unit corresponding to a programming language that is the basis of the source code among the plurality of tokenizer units. have.

또한, 상기 패치 생성 장치는 상기 소스 코드에 포함된 보안상 약점을 파악하여서 상기 패치 절차 생성부에게 입력시키는 정적 분석 도구부를 더 포함할 수 있다.In addition, the patch generating device may further include a static analysis tool unit for identifying a security weakness included in the source code and inputting it to the patch procedure generating unit.

또한, 상기 패치 절차 생성부에는 복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있을 수 있고, 상기 입력받은 보안상 약점에 대해 출력된 보완 솔루션은 상기 복수 개의 보안상 약점 각각에 대해 저장된 보완 솔루션 중에서 선별된 것일 수 있다.In addition, the patch procedure generation unit may pre-store a supplementary solution for each of a plurality of security weaknesses, and the supplemental solution output for the received security weaknesses is stored for each of the plurality of security weaknesses. It may be selected from among the solutions.

일 실시예에 따라 패치 생성 장치가 수행하는 패치 생성 방법은 소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 단계와, 패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 단계와, 상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하는 단계와, 상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별하는 단계와, 상기 선별된 패치 동작을 토큰 레벨로 변환시키는 단계와, 상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 단계를 포함하여 수행된다.According to an embodiment, a patch generation method performed by a patch generation apparatus includes storing a plurality of patch operations created at a source code level, dividing a source code as a patch target into a plurality of tokens, and in the source code as a patch target. When an included security weakness is input, outputting a supplemental solution for the security weakness, selecting a patch operation required for the supplemental solution from among the plurality of patch operations, and converting the selected patch operation to a token level. Converting and generating a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens.

일 실시예에 따르면 소스 코드에 포함된 보안상 약점을 보완할 수 있는 패치가 용이하게 생성될 수 있다. 예컨대 일 실시예에 따르면, 패치를 위해 새로운 프로그램을 작성할 필요가 없으며, 패치 동작을 패치 생성 장치에 적용하는 것만으로도 패치가 생성될 수 있다. 아울러, 일 실시예에 따른 기술은 프로그래밍 언어에 종속되지 않으며, 어떠한 프로그래밍 언어에도 적용 가능하다. 따라서, 새로운 프로그래밍 언어가 개발 내지 도입된 경우라고 하더라도, 해당 프로그래밍 언어로 작성된 소스 코드에 대한 토크나이저부만 구현된다면 일 실시예에 따른 패치 생성 기술이 적용될 수 있다.According to an embodiment, a patch capable of supplementing a security weakness included in the source code may be easily generated. For example, according to an embodiment, it is not necessary to create a new program for the patch, and a patch can be generated simply by applying the patch operation to the patch generating device. In addition, the technology according to an embodiment is not dependent on a programming language and can be applied to any programming language. Accordingly, even when a new programming language is developed or introduced, a patch generation technique according to an embodiment may be applied if only the tokenizer unit for the source code written in the corresponding programming language is implemented.

도 1은 일 실시예에 따른 패치 생성 장치에 관한 개략적인 구성도이다.
도 2는 일 실시예에 따른 패치 생성 방법에 대한 개략적인 순서도이다.
1 is a schematic configuration diagram of a patch generating apparatus according to an exemplary embodiment.
2 is a schematic flowchart of a patch generation method according to an embodiment.

본 발명의 이점 및 특징, 그리고 그것들을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시예들을 참조하면 명확해질 것이다. 그러나 본 발명은 이하에서 개시되는 실시예들에 한정되는 것이 아니라 서로 다른 다양한 형태로 구현될 수 있으며, 단지 본 실시예들은 본 발명의 개시가 완전하도록 하고, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 발명의 범주를 완전하게 알려주기 위해 제공되는 것이며, 본 발명은 청구항의 범주에 의해 정의될 뿐이다.Advantages and features of the present invention, and a method of achieving them will become apparent with reference to the embodiments described below in detail together with the accompanying drawings. However, the present invention is not limited to the embodiments disclosed below, but may be implemented in a variety of different forms, and only these embodiments make the disclosure of the present invention complete, and are common knowledge in the technical field to which the present invention pertains. It is provided to completely inform the scope of the invention to those who have, and the invention is only defined by the scope of the claims.

본 발명의 실시예들을 설명함에 있어서 공지 기능 또는 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략할 것이다. 그리고 후술되는 용어들은 본 발명의 실시예에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. In describing the embodiments of the present invention, if it is determined that a detailed description of a known function or configuration may unnecessarily obscure the subject matter of the present invention, a detailed description thereof will be omitted. In addition, terms to be described later are terms defined in consideration of functions in an embodiment of the present invention, which may vary according to the intention or custom of users or operators. Therefore, the definition should be made based on the contents throughout this specification.

도 1은 일 실시예에 따른 패치 생성 장치(1000)에 관한 개략적인 구성도이다.1 is a schematic configuration diagram of a patch generating apparatus 1000 according to an exemplary embodiment.

도 1을 참조하면, 패치 생성 장치(1000)는 정적 분석 도구부(100), 패치 동작 라이브러리부(200), 패치 절차 생성부(300), 토크나이저부(400) 및 패치 생성부(500)를 포함한다. 여기서, 도 1에 도시된 패치 생성 장치(1000)의 구성은 예시적인 것에 불과하다. 즉, 실시예에 따라 패치 생성 장치(1000)는 도 1에 도시된 구성 중 적어도 하나, 예컨대 정적 분석 도구부(100)를 포함하지 않거나 및/또는 도 1에 도시되지 않은 구성을 추가로 포함하도록 실시될 수 있다. 아울러, 패치 생성 장치(1000)에 포함된 각 구성, 즉 정적 분석 도구부(100), 패치 동작 라이브러리부(200), 패치 절차 생성부(300), 토크나이저부(400) 및 패치 생성부(500) 각각은 소프트웨어 모듈이나 하드웨어 모듈 형태로 구현되거나 또는 소프트웨어 모듈과 하드웨어 모듈이 조합된 형태로 구현될 수 있다.Referring to FIG. 1, the patch generation apparatus 1000 includes a static analysis tool unit 100, a patch operation library unit 200, a patch procedure generation unit 300, a tokenizer unit 400, and a patch generation unit 500. Includes. Here, the configuration of the patch generating apparatus 1000 illustrated in FIG. 1 is only an example. That is, according to the embodiment, the patch generating apparatus 1000 may not include at least one of the configurations illustrated in FIG. 1, for example, the static analysis tool unit 100 and/or additionally include a configuration not illustrated in FIG. 1. Can be implemented. In addition, each component included in the patch generation device 1000, that is, the static analysis tool unit 100, the patch operation library unit 200, the patch procedure generation unit 300, the tokenizer unit 400, and the patch generation unit ( 500) Each may be implemented in the form of a software module or a hardware module, or a combination of a software module and a hardware module.

먼저, 정적 분석 도구부(100)는 분석 대상인 소스 코드(10)에 어떠한 보안상 약점이 포함되어 있는지를 분석하도록 구성된다. 또한 정적 분석 도구부(100)는 이렇게 분석된 결과를 패치 절차 생성부(300)에게 입력시키도록 구성된다. First, the static analysis tool unit 100 is configured to analyze which security weaknesses are included in the source code 10 to be analyzed. In addition, the static analysis tool unit 100 is configured to input the analyzed result to the patch procedure generation unit 300.

여기서 소스 코드(10)란 컴퓨터 프로그램을 구성하는 명령어들의 집합을 가리키며, 소프트웨어라고 지칭될 수도 있다. 아울러, 정적 분석 도구부(100)가 분석한 결과는 예컨대 '소스 코드에 포함된 명령문 A에는 a라는 보안상 약점이 있다' 또는 ' 소스 코드에 포함된 명령문 B 이전에 명령문 C가 필요함에도 불구하고 명령문 C가 없다' 등을 포함할 수 있으나 이에 한정되는 것은 아니다. Here, the source code 10 refers to a set of instructions constituting a computer program, and may also be referred to as software. In addition, the result of analysis by the static analysis tool unit 100 is, for example,'the statement A included in the source code has a security weakness of a'or'although the statement C is required before the statement B included in the source code. It may include, but is not limited to,'there is no statement C'.

한편 정적 분석 도구부(100)가 소스 코드(10)에 어떠한 보안상 약점이 포함되어 있는지를 분석하는 알고리즘은 공지된 것을 이용할 수 있는 바, 이에 대한 설명은 생략하기로 한다.Meanwhile, known algorithms for analyzing which security weaknesses are included in the source code 10 by the static analysis tool unit 100 may be used, and a description thereof will be omitted.

패치 동작 라이브러리부(200)에는 다양한 종류의 패치 동작이 저장된다. 여기서 패치 동작이란 소스 코드(10)의 수정을 위해 소스 코드(10)에 가해져야 할, 소스 코드 레벨에서 작성된 동작을 지칭하며, 다만 이러한 패치 동작은 소스 코드가 갖는 규칙에 따라 작성된 것이 아닌, 일반적인 인간의 언어로서 작성된 것일 수 있다. 예컨대, '명령문 A 이전에 명령문 B를 삽입한다', '계산식 C 이전에 명령문 D를 삽입한다', '보안상 약점이 있는 명령문 E를 삭제한다' 또는 '보안상 약점이 있는 계산식 F를 삭제한다' 등이 패치 동작에 해당될 수 있으며, 다만 이에 한정되는 것은 아니다.Various types of patch operations are stored in the patch operation library unit 200. Here, the patch operation refers to an operation that must be applied to the source code 10 for modification of the source code 10, which is written at the source code level. However, this patch operation is not written according to the rules of the source code, It may be written in human language. For example,'Insert statement B before statement A','Insert statement D before calculation C','Delete statement E that has security weaknesses', or'Delete calculation formula F that has security weaknesses. 'And the like may correspond to the patch operation, but are not limited thereto.

패치 절차 생성부(300)에는 복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있을 수 있다. 예컨대 '보안상 약점 A에 대한 보완 솔루션은 명령문 a를 삭제하는 것이다' 또는 '보안상 약점 B에 대한 보완 솔루션은 명령문 b를 명령문 c로서 대체하는 것이다' 등이 보안상 약점에 대한 보완 솔루션으로서 저장되어 있을 수 있다.In the patch procedure generation unit 300, a supplementary solution for each of a plurality of security weaknesses may be stored in advance. For example,'the complementary solution for security weakness A is to delete the statement a'or'the complementary solution for security weakness B is to replace the statement b with statement c'are stored as a supplementary solution for security weaknesses. Can be.

이러한 패치 절차 생성부(300)는 소스 코드에 포함된 보안상 약점을 입력받을 경우, 이렇게 입력받은 보안상 약점에 대한 보완 솔루션을 출력한다. 이 때 출력되는 보완 솔루션은 전술한 바와 같이 미리 저장된 복수 개의 보완 솔루션 중에서 선별된 것일 수 있다.When a security weakness included in the source code is input, the patch procedure generation unit 300 outputs a complementary solution for the security weakness received in this way. The supplementary solution output at this time may be selected from among a plurality of pre-stored supplementary solutions as described above.

패치 절차 생성부(300)가 출력한 보완 솔루션은 적어도 한 개의 패치 동작으로 구성될 수 있다. 예컨대 보완 솔루션이 '명령문 A를 삭제해라'라면, 이러한 보완 솔루션은 '명령문 A가 존재하는 위치로 이동해라'와 '이동된 위치에서 명령문 A를 삭제해라'로 구성될 수 있으며, 다만 이에 한정되는 것은 아니다. 이에 패치 절차 생성부(300)는 자신이 출력한 보완 솔루션이 어떠한 패치 동작으로 구성되어 있는지를 분석한 뒤, 이렇게 분석된 패치 동작과 매칭되는 패치 동작을, 패치 동작 라이브러리부(200)에 저장된 복수 개의 패치 동작 중에서 선별할 수 있다.The supplemental solution output by the patch procedure generator 300 may be configured with at least one patch operation. For example, if the complementary solution is'delete instruction A', this complementary solution may consist of'move to the location where instruction A exists' and'delete instruction A from the moved location', but are limited to this. It is not. Accordingly, the patch procedure generation unit 300 analyzes which patch operation is composed of the supplemental solution output by itself, and then performs a plurality of patch operations that match the analyzed patch operation, stored in the patch operation library unit 200. You can select from among the number of patch operations.

패치 절차 생성부(300)는 자신이 선별한 패치 동작을 토큰 레벨로 변환시킨다. 여기서 토큰이란 소스 코드에 포함된 구성 중에서 의미를 갖는 최소 단위를 지칭한다. 예컨대 패치 절차 생성부(300)가 토큰 레벨로 변환시킨 패치 동작에는 '토큰 A를 추가한다', '토큰 A가 나타나는 지점까지 이동한다', '토큰 A 이전에 나타나는 토큰은 삭제한다' 또는 '지정된 작업 목록 중 가능한 작업 하나를 수행한다' 등이 포함될 수 있으며, 다만 이에 한정되는 것은 아니다. 이 때 패치 동작을 토큰 레벨로 변환시키는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다.The patch procedure generation unit 300 converts the patch operation selected by itself into a token level. Here, the token refers to the smallest unit that has meaning among the components included in the source code. For example, in the patch operation converted to the token level by the patch procedure generator 300,'add token A','move to the point where token A appears','delete tokens appearing before token A', or'designated Performing one possible task in the task list may be included, but is not limited thereto. At this time, since the technology itself for converting the patch operation to the token level is already known, a description thereof will be omitted.

한편, 토크나이저부(400)는 소스 코드(10)를 복수 개의 토큰으로 분할하도록 구성된다. 여기서, 토크나이저부(400)가 소스 코드(10)를 복수 개의 토큰으로 분할하는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다.Meanwhile, the tokenizer unit 400 is configured to divide the source code 10 into a plurality of tokens. Here, since the technology itself for dividing the source code 10 into a plurality of tokens by the tokenizer 400 is already known, a description thereof will be omitted.

여기서 토크나이저부(400)는 프로그램밍 언어별로 복수 개가 마련될 수 있다. 예컨대 도 1에 도시된 바와 같이 토크나이저부(400)로서 JAVA 언어에 대한 제1 토크나이저부, C언어에 대한 제2 토크나이저부 및 파이썬 언어에 대한 제3 토크나이저부가 마련될 수 있으며, 다만 이에 한정되는 것은 아니다.Here, a plurality of tokenizer units 400 may be provided for each programming language. For example, as the tokenizer unit 400 as shown in FIG. 1, a first tokenizer unit for the JAVA language, a second tokenizer unit for the C language, and a third tokenizer unit for the Python language may be provided. It is not limited thereto.

패치 생성부(500)는, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작을, 소스 코드(10)에 대한 복수 개의 토큰(토크나이저부(400)가 소스 코드를 분할해서 생성된 토큰) 중 적어도 일부에 적용시킨다. 그 결과 소스 코드(10)에 포함된 보안상 약점을 보완시킬 수 있는 패치가 생성된다.The patch generation unit 500 generates a plurality of tokens for the source code 10 (the tokenizer unit 400 divides the source code and generates a patch operation converted to a token level by the patch procedure generation unit 300) Tokens). As a result, a patch capable of supplementing the security weakness included in the source code 10 is generated.

구체적으로 살펴보면, 패치 생성부(500)는 복수 개의 토큰으로 분할된 소스 코드 중에서, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작이 수행되어야 할 위치를 파악한다. 아울러, 패치 생성부(500)는 이렇게 파악된 위치에서 토큰 레벨로 변환된 패치 동작이 수행되도록 제어함으로써 패치를 생성한다. 여기서 패치 생성부(500)가 패치를 생성하는 이러한 방법 그 자체는 예시적인 것에 불과하며, 따라서 언급된 것과 상이한 방법으로 패치를 생성하는 방법 자체가 이에 의해 배제되는 것은 아니다.Specifically, the patch generation unit 500 identifies a location in which a patch operation converted to a token level by the patch procedure generation unit 300 is to be performed, among source codes divided into a plurality of tokens. In addition, the patch generation unit 500 generates a patch by controlling the patch operation converted to the token level to be performed at the identified location. Here, this method of generating the patch by the patch generation unit 500 itself is merely exemplary, and therefore, a method of generating a patch in a different method from that mentioned above is not excluded by this.

이상에서 살펴본 바와 같이, 일 실시예에 따르면 소스 코드에 포함된 보안상 약점을 보완할 수 있는 패치가 용이하게 생성될 수 있다. 예컨대 일 실시예에 따르면, 패치를 위해 새로운 프로그램을 작성할 필요가 없으며, 패치 동작을 패치 생성 장치에 적용하는 것만으로도 패치가 생성될 수 있다. 아울러, 일 실시예에 따른 기술은 프로그래밍 언어에 종속되지 않으며, 어떠한 프로그래밍 언어에도 적용 가능하다. 따라서, 새로운 프로그래밍 언어가 개발 내지 도입된 경우라고 하더라도, 해당 프로그래밍 언어로 작성된 소스 코드에 대한 토크나이저부만 구현된다면 일 실시예에 따른 패치 생성 기술이 적용될 수 있다.As described above, according to an embodiment, a patch capable of supplementing a security weakness included in the source code may be easily generated. For example, according to an embodiment, it is not necessary to create a new program for the patch, and a patch can be generated simply by applying the patch operation to the patch generating device. In addition, the technology according to an embodiment is not dependent on a programming language and can be applied to any programming language. Accordingly, even when a new programming language is developed or introduced, a patch generation technique according to an embodiment may be applied if only the tokenizer unit for the source code written in the corresponding programming language is implemented.

도 2는 일 실시예에 따른 패치 생성 방법에 대한 개략적인 순서도이다. 도 2에 도시된 순서도를 구성하는 각 단계는 전술한 패치 생성 장치(1000)에 의해 수행 가능하다. 아울러, 도 2에 도시된 순서도는 예시적인 것에 불과한 바, 실시예에 따라 도 2에 도시된 순서도에 포함된 각 단계 중 적어도 하나가 수행되지 않거나 또는 언급되지 않은 단계가 수행될 수도 있다. 뿐만 아니라, 도 2에 도시된 것과 상이한 순서로 순서도에 포함된 각 단계가 수행될 수도 있다.2 is a schematic flowchart of a patch generation method according to an embodiment. Each step of constructing the flowchart shown in FIG. 2 can be performed by the aforementioned patch generating apparatus 1000. In addition, since the flowchart shown in FIG. 2 is merely exemplary, at least one of the steps included in the flowchart shown in FIG. 2 may not be performed or steps not mentioned may be performed according to embodiments. In addition, each step included in the flowchart may be performed in an order different from that shown in FIG. 2.

도 2를 도 1과 함께 참조하면, 소스 코드 레벨에서 작성된 다양한 종류의 패치 동작 복수 개가 저장되는 단계(S100)가 수행된다. 여기서 이러한 패치 동작 복수 개는 패치 동작 라이브러리부(200)에 저장될 수 있다.Referring to FIG. 2 together with FIG. 1, a step S100 of storing a plurality of various types of patch operations created at the source code level is performed. Here, a plurality of such patch operations may be stored in the patch operation library unit 200.

이 때, 패치 동작이란 소스 코드(10)의 수정을 위해 소스 코드(10)에 가해져야 할, 소스 코드 레벨에서 작성된 동작을 지칭하며, 다만 이러한 패치 동작은 소스 코드가 갖는 규칙에 따라 작성된 것이 아닌, 일반적인 인간의 언어로서 작성된 것일 수 있다. 예컨대, '명령문 A 이전에 명령문 B를 삽입한다', '계산식 C 이전에 명령문 D를 삽입한다', '보안상 약점이 있는 명령문 E를 삭제한다' 또는 '보안상 약점이 있는 계산식 F를 삭제한다' 등이 패치 동작에 해당될 수 있으며, 다만 이에 한정되는 것은 아니다.In this case, the patch operation refers to an operation created at the source code level that must be applied to the source code 10 for modification of the source code 10, but such a patch operation is not created according to the rules of the source code. , May be written in general human language. For example,'Insert statement B before statement A','Insert statement D before calculation C','Delete statement E that has security weaknesses', or'Delete calculation formula F that has security weaknesses. 'And the like may correspond to the patch operation, but are not limited thereto.

다음으로, 소스 코드(10)를 복수 개의 토큰으로 분할하는 단계(S110)이 구행된다. 이러한 단계 S110은 토크나이저부(400)에 의해 수행될 수 있다. 여기서, 토크나이저부(400)가 소스 코드(10)를 복수 개의 토큰으로 분할하는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다. 아울러, 소스 코드(10)란 컴퓨터 프로그램을 구성하는 명령어들의 집합을 가리키며, 소프트웨어라고 지칭될 수도 있다.Next, a step (S110) of dividing the source code 10 into a plurality of tokens is performed. This step S110 may be performed by the tokenizer unit 400. Here, since the technology itself for dividing the source code 10 into a plurality of tokens by the tokenizer 400 is already known, a description thereof will be omitted. In addition, the source code 10 refers to a set of instructions constituting a computer program, and may be referred to as software.

한편, 토크나이저부(400)가 프로그램밍 언어별로 복수 개가 마련될 수 있음은 전술한 바와 같다.Meanwhile, as described above, a plurality of tokenizer units 400 may be provided for each programming language.

다음으로, 소스 코드(10)에 포함된 보안상 약점을 입력받을 경우, 이렇게 입력받은 보안상 약점에 대한 보완 솔루션을 출력하는 단계(S120)가 수행된다. 이러한 단계 S120은 패치 절차 생성부(300)에 의해 수행될 수 있다.Next, when a security weakness included in the source code 10 is received, a step S120 of outputting a supplemental solution for the security weakness received in this way is performed. This step S120 may be performed by the patch procedure generation unit 300.

구체적으로 살펴보면, 패치 절차 생성부(300)는 소스 코드(10)에 대한 보안상 약점을 입력받는다. 여기서 패치 절차 생성부(300)가 입력받은 보안상 약점은 정적 분석 도구부(100)에 의해 분석된 것일 수 있다.Specifically, the patch procedure generation unit 300 receives security weaknesses for the source code 10. Here, the security weakness received by the patch procedure generator 300 may be analyzed by the static analysis tool unit 100.

패치 절차 생성부(300)에는 복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있을 수 있다. 예컨대 '보안상 약점 A에 대한 보완 솔루션은 명령문 a를 삭제하는 것이다' 또는 '보안상 약점 B에 대한 보완 솔루션은 명령문 b를 명령문 c로서 대체하는 것이다' 등이 보안상 약점에 대한 보완 솔루션으로서 저장되어 있을 수 있다. In the patch procedure generation unit 300, a supplementary solution for each of a plurality of security weaknesses may be stored in advance. For example,'the complementary solution for security weakness A is to delete the statement a'or'the complementary solution for security weakness B is to replace the statement b with statement c'are stored as a supplementary solution for security weaknesses. Can be.

단계 S120에 의해 출력되는 보완 솔루션은 이와 같이 미리 저장된 복수 개의 보완 솔루션 중에서 선별된 것일 수 있다.The supplementary solution output by step S120 may be selected from among a plurality of pre-stored supplementary solutions.

한편, 패치 절차 생성부(300)가 출력한 보완 솔루션은 적어도 한 개의 패치 동작으로 구성될 수 있다. 예컨대 보완 솔루션이 '명령문 A를 삭제해라'라면, 이러한 보완 솔루션은 '명령문 A가 존재하는 위치로 이동해라'와 '이동된 위치에서 명령문 A를 삭제해라'로 구성될 수 있으며, 다만 이에 한정되는 것은 아니다. Meanwhile, the supplemental solution output by the patch procedure generator 300 may be configured with at least one patch operation. For example, if the complementary solution is'delete instruction A', this complementary solution may consist of'move to the location where instruction A exists' and'delete instruction A from the moved location', but are limited to this. It is not.

이에 패치 절차 생성부(300)에 의해 출력된 보완 솔루션이 어떠한 패치 동작으로 구성되어 있는지를 분석한 뒤, 이렇게 분석된 패치 동작과 매칭되는 패치 동작을, 패치 동작 라이브러리부(200)에 저장된 복수 개의 패치 동작 중에서 선별하는 단계(S130)가 수행된다. 이러한 단계 S130 역시 패치 절차 생성부(300)에 의해 수행될 수 있다.Accordingly, after analyzing which patch operation is composed of the supplemental solution output by the patch procedure generation unit 300, a patch operation matching the analyzed patch operation is performed, and a plurality of stored in the patch operation library unit 200 The step of selecting among the patch operations (S130) is performed. This step S130 may also be performed by the patch procedure generator 300.

다음으로, 단계 S130에서 선별된 패치 동작이 토큰 레벨로 변환되는 단계(S140)가 수행된다. 이러한 단계 S140은 패치 절차 생성부(300)에 의해 수행될 수 있다. 여기서, 토큰이란 소스 코드에 포함된 구성 중에서 의미를 갖는 최소 단위를 지칭한다. 예컨대 패치 절차 생성부(300)가 토큰 레벨로 변환시킨 패치 동작에는 '토큰 A를 추가한다', '토큰 A가 나타나는 지점까지 이동한다', '토큰 A 이전에 나타나는 토큰은 삭제한다' 또는 '지정된 작업 목록 중 가능한 작업 하나를 수행한다' 등이 포함될 수 있으며, 다만 이에 한정되는 것은 아니다. 이 때 패치 동작을 토큰 레벨로 변환시키는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다.Next, a step (S140) of converting the patch operation selected in step S130 to a token level is performed. This step S140 may be performed by the patch procedure generator 300. Here, the token refers to the smallest unit having meaning among the components included in the source code. For example, in the patch operation converted to the token level by the patch procedure generator 300,'add token A','move to the point where token A appears','delete tokens appearing before token A', or'designated Performing one possible task in the task list may be included, but is not limited thereto. At this time, since the technology itself for converting the patch operation to the token level is already known, a description thereof will be omitted.

다음으로, 단계 S140에 의해 토큰 레벨로 변환된 패치 동작을, 소스 코드(10)에 대한 복수 개의 토큰(토크나이저부(400)가 소스 코드를 분할해서 생성된 토큰) 중 적어도 일부에 적용시킴으로써 소스 코드(10)에 포함된 보안상 약점을 보완시킬 수 있는 패치를 생성하는 단계(S150)가 수행된다. 이러한 단계 S150은 패치 생성부(500)에 의해 수행될 수 있다.Next, by applying the patch operation converted to the token level in step S140 to at least a part of a plurality of tokens for the source code 10 (tokens generated by dividing the source code by the tokenizer unit 400) A step (S150) of generating a patch capable of supplementing a security weakness included in the code 10 is performed. This step S150 may be performed by the patch generation unit 500.

구체적으로 살펴보면, 패치 생성부(500)는 복수 개의 토큰으로 분할된 소스 코드 중에서, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작이 수행되어야 할 위치를 파악한다. 아울러, 패치 생성부(500)는 이렇게 파악된 위치에서 토큰 레벨로 변환된 패치 동작이 수행되도록 제어함으로써 패치를 생성한다. 여기서 패치 생성부(500)가 패치를 생성하는 이러한 방법 그 자체는 예시적인 것에 불과하며, 따라서 언급된 것과 상이한 방법으로 패치를 생성하는 방법 자체가 이에 의해 배제되는 것은 아니다.Specifically, the patch generation unit 500 identifies a location in which a patch operation converted to a token level by the patch procedure generation unit 300 is to be performed, among source codes divided into a plurality of tokens. In addition, the patch generation unit 500 generates a patch by controlling the patch operation converted to the token level to be performed at the identified location. Here, this method of generating the patch by the patch generation unit 500 itself is merely exemplary, and therefore, a method of generating a patch in a different method from that mentioned above is not excluded by this.

이상에서 살펴본 바와 같이, 일 실시예에 따르면 소스 코드에 포함된 보안상 약점을 보완할 수 있는 패치가 용이하게 생성될 수 있다. 예컨대 일 실시예에 따르면, 패치를 위해 새로운 프로그램을 작성할 필요가 없으며, 패치 동작을 패치 생성 장치에 적용하는 것만으로도 패치가 생성될 수 있다. 아울러, 일 실시예에 따른 기술은 프로그래밍 언어에 종속되지 않으며, 어떠한 프로그래밍 언어에도 적용 가능하다. 따라서, 새로운 프로그래밍 언어가 개발 내지 도입된 경우라고 하더라도, 해당 프로그래밍 언어로 작성된 소스 코드에 대한 토크나이저만 구현된다면 일 실시예에 따른 패치 생성 기술이 적용될 수 있다.As described above, according to an embodiment, a patch capable of supplementing a security weakness included in the source code may be easily generated. For example, according to an embodiment, it is not necessary to create a new program for the patch, and a patch may be generated simply by applying the patch operation to the patch generating device. In addition, the technology according to an embodiment is not dependent on a programming language, and can be applied to any programming language. Therefore, even if a new programming language is developed or introduced, a patch generation technique according to an embodiment may be applied if only a tokenizer for a source code written in the corresponding programming language is implemented.

한편, 이러한 일 실시예에 따른 방법은 이러한 방법의 각 단계를 수행하도록 프로그램된 컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램의 형태로 구현 가능하고, 또한 이러한 방법의 각 단계를 수행하도록 프로그램된 컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체의 형태로 구현 가능하다.On the other hand, the method according to this embodiment can be implemented in the form of a computer program stored in a computer-readable recording medium programmed to perform each step of the method, and also includes a computer program programmed to perform each step of the method. It can be implemented in the form of a computer-readable recording medium to store.

이상의 설명은 본 발명의 기술 사상을 예시적으로 설명한 것에 불과한 것으로서, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자라면 본 발명의 본질적인 품질에서 벗어나지 않는 범위에서 다양한 수정 및 변형이 가능할 것이다. 따라서, 본 발명에 개시된 실시예들은 본 발명의 기술 사상을 한정하기 위한 것이 아니라 설명하기 위한 것이고, 이러한 실시예에 의하여 본 발명의 기술 사상의 범위가 한정되는 것은 아니다. 본 발명의 보호 범위는 아래의 청구범위에 의하여 해석되어야 하며, 그와 균등한 범위 내에 있는 모든 기술사상은 본 발명의 권리범위에 포함되는 것으로 해석되어야 할 것이다.The above description is merely illustrative of the technical idea of the present invention, and those of ordinary skill in the art to which the present invention pertains will be able to make various modifications and variations without departing from the essential quality of the present invention. Accordingly, the embodiments disclosed in the present invention are not intended to limit the technical idea of the present invention, but to explain the technical idea, and the scope of the technical idea of the present invention is not limited by these embodiments. The scope of protection of the present invention should be interpreted by the following claims, and all technical ideas within the scope equivalent thereto should be construed as being included in the scope of the present invention.

100 : 패치 생성 장치100: patch generation device

Claims (7)

소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 패치 동작 라이브러리부와,
패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 토크나이저부와,
상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하며, 상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별한 뒤, 상기 선별된 패치 동작을 토큰 레벨로 변환시키는 패치 절차 생성부와,
상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 패치 생성부를 포함하고,
상기 복수 개의 패치 동작은,
소스 코드의 명령문을 수정하거나 삭제하는 동작을 포함하며,
상기 토크나이저부는 프로그래밍 언어별로 마련되어 있는 복수 개이고,
상기 소스 코드는,
상기 복수 개의 토크나이저부 중에서 상기 소스 코드의 기반이 되는 프로그래밍 언어와 부합되는 토크나이저부에 의해 상기 복수 개의 토큰으로 분할되는
패치 생성 장치.
A patch operation library unit that stores a plurality of patch operations created at the source code level,
A tokenizer that divides the source code to be patched into a plurality of tokens,
When a security weakness included in the patch target source code is input, a supplemental solution for the security weakness is output, a patch operation required for the supplemental solution is selected from among the plurality of patch operations, and the selected patch operation is performed. A patch procedure generation unit that converts to a token level,
A patch generator configured to generate a patch for the source code by applying the converted patch operation to at least some of the plurality of tokens,
The plurality of patch operations,
Includes the action of modifying or deleting statements in the source code,
The tokenizer unit is a plurality of units provided for each programming language,
The source code,
Divided into the plurality of tokens by a tokenizer unit corresponding to the programming language that is the basis of the source code among the plurality of tokenizer units
Patch generation device.
삭제delete 제 1 항에 있어서,
상기 소스 코드에 포함된 보안상 약점을 파악하여서 상기 패치 절차 생성부에게 입력시키는 정적 분석 도구부를 더 포함하는
패치 생성 장치.
The method of claim 1,
Further comprising a static analysis tool unit for identifying security weaknesses included in the source code and inputting them to the patch procedure generation unit
Patch generation device.
제 1 항에 있어서,
상기 패치 절차 생성부에는,
복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있고,
상기 입력받은 보안상 약점에 대해 출력된 보완 솔루션은,
상기 복수 개의 보안상 약점 각각에 대해 저장된 보완 솔루션 중에서 선별된 것인
패치 생성 장치.
The method of claim 1,
In the patch procedure generation unit,
Complementary solutions for each of multiple security weaknesses are stored in advance,
The supplementary solution output for the security weakness received above,
It is selected from the complementary solutions stored for each of the plurality of security weaknesses
Patch generation device.
패치 생성 장치가 수행하는 패치 생성 방법으로서,
소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 단계와,
패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 단계와,
상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하는 단계와,
상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별하는 단계와,
상기 선별된 패치 동작을 토큰 레벨로 변환시키는 단계와,
상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 단계를 포함하고,
상기 복수 개의 패치 동작은,
소스 코드의 명령문을 수정하거나 삭제하는 동작을 포함하며,
상기 분할하는 단계는, 상기 패치 생성 장치에 포함되어 있는 복수 개의 토크나이저부에 의해 수행되되, 상기 복수 개의 토크나이저부 각각은 프로그래밍 언어별로 마련되어 있는 것이며,
상기 소스코드는,
상기 복수 개의 토크나이저부 중에서 상기 소스 코드의 기반이 되는 프로그래밍 언어와 부합되는 토크나이저부에 의해 상기 복수 개의 토큰으로 분할되는
패치 생성 방법.
As a patch generation method performed by a patch generation device,
Storing a plurality of patch operations created at the source code level, and
Dividing the source code to be patched into a plurality of tokens,
When a security weakness included in the source code to be patched is input, outputting a supplemental solution for the security weakness;
Selecting a patch operation required for the supplementary solution from among the plurality of patch operations,
Converting the selected patch operation to a token level,
Generating a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens,
The plurality of patch operations,
Includes the action of modifying or deleting statements in the source code,
The dividing step is performed by a plurality of tokenizer units included in the patch generating device, wherein each of the plurality of tokenizer units is provided for each programming language,
The source code,
Divided into the plurality of tokens by a tokenizer unit corresponding to the programming language that is the basis of the source code among the plurality of tokenizer units
How to create a patch.
컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램으로서,
상기 컴퓨터 프로그램은 패치 생성 장치에 포함된 프로세서에 의해 수행되면,
소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 단계와,
패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 단계와,
상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하는 단계와,
상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별하는 단계와,
상기 선별된 패치 동작을 토큰 레벨로 변환시키는 단계와,
상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 단계를 포함하여 수행하도록 프로그램되고,
상기 복수 개의 패치 동작은,
소스 코드의 명령문을 수정하거나 삭제하는 동작을 포함하며,
상기 분할하는 단계는, 상기 패치 생성 장치에 포함되어 있는 복수 개의 토크나이저부에 의해 수행되되, 상기 복수 개의 토크나이저부 각각은 프로그래밍 언어별로 마련되어 있는 것이며,
상기 소스코드는,
상기 복수 개의 토크나이저부 중에서 상기 소스 코드의 기반이 되는 프로그래밍 언어와 부합되는 토크나이저부에 의해 상기 복수 개의 토큰으로 분할되는
컴퓨터 판독가능한 기록매체에 저장된 컴퓨터 프로그램.
A computer program stored on a computer-readable recording medium,
When the computer program is executed by a processor included in the patch generating device,
Storing a plurality of patch operations created at the source code level, and
Dividing the source code to be patched into a plurality of tokens,
When a security weakness included in the source code to be patched is input, outputting a supplemental solution for the security weakness;
Selecting a patch operation required for the supplementary solution from among the plurality of patch operations,
Converting the selected patch operation to a token level,
And generating a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens,
The plurality of patch operations,
Includes the action of modifying or deleting statements in the source code,
The dividing step is performed by a plurality of tokenizer units included in the patch generating device, wherein each of the plurality of tokenizer units is provided for each programming language,
The source code,
Divided into the plurality of tokens by a tokenizer unit corresponding to the programming language that is the basis of the source code among the plurality of tokenizer units
A computer program stored on a computer-readable recording medium.
컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체로서,
상기 컴퓨터 프로그램은 패치 생성 장치에 포함된 프로세서에 의해 수행되면,
소스 코드 레벨에서 작성된 복수 개의 패치 동작을 저장하는 단계와,
패치 대상인 소스 코드를 복수 개의 토큰으로 분할하는 단계와,
상기 패치 대상인 소스 코드에 포함된 보안상 약점을 입력받으면 상기 보안상 약점에 대한 보완 솔루션을 출력하는 단계와,
상기 보완 솔루션에 필요한 패치 동작을 상기 복수 개의 패치 동작 중에서 선별하는 단계와,
상기 선별된 패치 동작을 토큰 레벨로 변환시키는 단계와,
상기 변환된 패치 동작을 상기 복수 개의 토큰 중 적어도 일부에 적용시켜서 상기 소스 코드에 대한 패치를 생성하는 단계를 포함하여 수행하도록 프로그램되고,
상기 복수 개의 패치 동작은,
소스 코드의 명령문을 수정하거나 삭제하는 동작을 포함하며,
상기 분할하는 단계는, 상기 패치 생성 장치에 포함되어 있는 복수 개의 토크나이저부에 의해 수행되되, 상기 복수 개의 토크나이저부 각각은 프로그래밍 언어별로 마련되어 있는 것이며,
상기 소스코드는,
상기 복수 개의 토크나이저부 중에서 상기 소스 코드의 기반이 되는 프로그래밍 언어와 부합되는 토크나이저부에 의해 상기 복수 개의 토큰으로 분할되는
컴퓨터 프로그램을 저장하는 컴퓨터 판독가능한 기록매체.
A computer-readable recording medium storing a computer program,
When the computer program is executed by a processor included in the patch generating device,
Storing a plurality of patch operations created at the source code level, and
Dividing the source code to be patched into a plurality of tokens,
When a security weakness included in the source code to be patched is input, outputting a supplemental solution for the security weakness;
Selecting a patch operation required for the supplementary solution from among the plurality of patch operations,
Converting the selected patch operation to a token level,
And generating a patch for the source code by applying the converted patch operation to at least a portion of the plurality of tokens,
The plurality of patch operations,
Includes the action of modifying or deleting statements in the source code,
The dividing step is performed by a plurality of tokenizer units included in the patch generating device, wherein each of the plurality of tokenizer units is provided for each programming language,
The source code,
Divided into the plurality of tokens by a tokenizer unit corresponding to the programming language that is the basis of the source code among the plurality of tokenizer units
A computer-readable recording medium storing a computer program.
KR1020190059668A 2019-05-21 2019-05-21 Apparatus and method for generating patch KR102195748B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190059668A KR102195748B1 (en) 2019-05-21 2019-05-21 Apparatus and method for generating patch

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190059668A KR102195748B1 (en) 2019-05-21 2019-05-21 Apparatus and method for generating patch

Publications (2)

Publication Number Publication Date
KR20200134084A KR20200134084A (en) 2020-12-01
KR102195748B1 true KR102195748B1 (en) 2020-12-28

Family

ID=73790880

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190059668A KR102195748B1 (en) 2019-05-21 2019-05-21 Apparatus and method for generating patch

Country Status (1)

Country Link
KR (1) KR102195748B1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013134573A (en) * 2011-12-26 2013-07-08 Nec Corp Software correction device, software correction system, software correction method and software correction program
US20150089656A1 (en) 2013-09-25 2015-03-26 Veracode, Inc. System and method for automated remedying of security vulnerabilities
KR101568224B1 (en) * 2014-12-26 2015-11-11 고려대학교 산학협력단 Analysis device and method for software security

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110072989A (en) 2009-12-23 2011-06-29 엘지전자 주식회사 Software test apparatus
KR101946904B1 (en) * 2017-03-21 2019-02-11 주식회사 한컴시큐어 Source code security weakness detection and automatic fix support apparatus, and operating method thereof

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013134573A (en) * 2011-12-26 2013-07-08 Nec Corp Software correction device, software correction system, software correction method and software correction program
US20150089656A1 (en) 2013-09-25 2015-03-26 Veracode, Inc. System and method for automated remedying of security vulnerabilities
KR101568224B1 (en) * 2014-12-26 2015-11-11 고려대학교 산학협력단 Analysis device and method for software security

Also Published As

Publication number Publication date
KR20200134084A (en) 2020-12-01

Similar Documents

Publication Publication Date Title
US9934270B2 (en) Source code search engine
US8387017B2 (en) Black box testing optimization using information from white box testing
US8671397B2 (en) Selective data flow analysis of bounded regions of computer software applications
EP3379443A1 (en) Method and computer device to deobfuscate a source code
US10055329B2 (en) Detection of antipatterns through statistical analysis
CN113031967B (en) Code conversion method and device
KR101886203B1 (en) Apparatus and method for analyzing programs
US20120304161A1 (en) Determining suitable insertion points for string sanitizers in a computer code
KR101837337B1 (en) Obfuscated method of preventing CFG generation from using debugging tools to transform relative address jump into indirect jump between basic block in native code and apparatus therefor
CN114911711A (en) Code defect analysis method and device, electronic equipment and storage medium
EP3177990B1 (en) Method for compiling a source code
RU2016137177A (en) IMPROVED TRANSFORMATION OF SOURCE PROGRAMMING LANGUAGE CODE
US12118383B2 (en) System migration support apparatus, system migration support method and program to enhance reproducibility of migration destination system
CN106844216A (en) The localization method and system of a kind of RAM leakage
KR102195748B1 (en) Apparatus and method for generating patch
US7549146B2 (en) Apparatus, systems, and methods for execution-driven loop splitting and load-safe code hosting
CN111158667B (en) Code injection method and device, electronic equipment and storage medium
KR102185293B1 (en) Apparatus and method for automatically setting reliability test tool
KR102156845B1 (en) Apparatus and method for performing symbolic execution
US20240037215A1 (en) Program analysis device, program analysis method, and computer-readable medium
JP2002182709A (en) Programming device for programmable controller
KR102649847B1 (en) Apparatus and method for generating random numbers using stack/heap area of mcu
Angerer et al. Modular change impact analysis for configurable software
CN109408063A (en) Instruction pile pitching method and device based on virtual machine
KR102601979B1 (en) Method and apparatus for verifying software program

Legal Events

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