KR102195748B1 - Apparatus and method for generating patch - Google Patents
Apparatus and method for generating patch Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 48
- 230000000153 supplemental effect Effects 0.000 claims abstract description 15
- 238000004458 analytical method Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 13
- 238000004590 computer program Methods 0.000 claims description 12
- 230000000295 complement effect Effects 0.000 claims description 11
- 238000005516 engineering process Methods 0.000 description 9
- 230000001502 supplementing effect Effects 0.000 description 5
- 238000004364 calculation method Methods 0.000 description 4
- 230000001419 dependent effect Effects 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 241000282412 Homo Species 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/121—Restricting unauthorised execution of programs
- G06F21/125—Restricting unauthorised execution of programs by manipulating the program code, e.g. source code, compiled code, interpreted code, machine code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/55—Detecting local intrusion or implementing counter-measures
- G06F21/56—Computer malware detection or handling, e.g. anti-virus arrangements
- G06F21/562—Static detection
- G06F21/563—Static detection by source code analysis
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying 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
본 발명은 패치 생성 장치 및 방법에 관한 것이다.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.
본 발명의 해결하고자 하는 과제는, 소스 코드에 포함된 보안상 약점을 보완하는 패치를 자동으로 생성하는 기술을 제공하는 것이다.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
도 1을 참조하면, 패치 생성 장치(1000)는 정적 분석 도구부(100), 패치 동작 라이브러리부(200), 패치 절차 생성부(300), 토크나이저부(400) 및 패치 생성부(500)를 포함한다. 여기서, 도 1에 도시된 패치 생성 장치(1000)의 구성은 예시적인 것에 불과하다. 즉, 실시예에 따라 패치 생성 장치(1000)는 도 1에 도시된 구성 중 적어도 하나, 예컨대 정적 분석 도구부(100)를 포함하지 않거나 및/또는 도 1에 도시되지 않은 구성을 추가로 포함하도록 실시될 수 있다. 아울러, 패치 생성 장치(1000)에 포함된 각 구성, 즉 정적 분석 도구부(100), 패치 동작 라이브러리부(200), 패치 절차 생성부(300), 토크나이저부(400) 및 패치 생성부(500) 각각은 소프트웨어 모듈이나 하드웨어 모듈 형태로 구현되거나 또는 소프트웨어 모듈과 하드웨어 모듈이 조합된 형태로 구현될 수 있다.Referring to FIG. 1, the
먼저, 정적 분석 도구부(100)는 분석 대상인 소스 코드(10)에 어떠한 보안상 약점이 포함되어 있는지를 분석하도록 구성된다. 또한 정적 분석 도구부(100)는 이렇게 분석된 결과를 패치 절차 생성부(300)에게 입력시키도록 구성된다. First, the static
여기서 소스 코드(10)란 컴퓨터 프로그램을 구성하는 명령어들의 집합을 가리키며, 소프트웨어라고 지칭될 수도 있다. 아울러, 정적 분석 도구부(100)가 분석한 결과는 예컨대 '소스 코드에 포함된 명령문 A에는 a라는 보안상 약점이 있다' 또는 ' 소스 코드에 포함된 명령문 B 이전에 명령문 C가 필요함에도 불구하고 명령문 C가 없다' 등을 포함할 수 있으나 이에 한정되는 것은 아니다. Here, the
한편 정적 분석 도구부(100)가 소스 코드(10)에 어떠한 보안상 약점이 포함되어 있는지를 분석하는 알고리즘은 공지된 것을 이용할 수 있는 바, 이에 대한 설명은 생략하기로 한다.Meanwhile, known algorithms for analyzing which security weaknesses are included in the
패치 동작 라이브러리부(200)에는 다양한 종류의 패치 동작이 저장된다. 여기서 패치 동작이란 소스 코드(10)의 수정을 위해 소스 코드(10)에 가해져야 할, 소스 코드 레벨에서 작성된 동작을 지칭하며, 다만 이러한 패치 동작은 소스 코드가 갖는 규칙에 따라 작성된 것이 아닌, 일반적인 인간의 언어로서 작성된 것일 수 있다. 예컨대, '명령문 A 이전에 명령문 B를 삽입한다', '계산식 C 이전에 명령문 D를 삽입한다', '보안상 약점이 있는 명령문 E를 삭제한다' 또는 '보안상 약점이 있는 계산식 F를 삭제한다' 등이 패치 동작에 해당될 수 있으며, 다만 이에 한정되는 것은 아니다.Various types of patch operations are stored in the patch
패치 절차 생성부(300)에는 복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있을 수 있다. 예컨대 '보안상 약점 A에 대한 보완 솔루션은 명령문 a를 삭제하는 것이다' 또는 '보안상 약점 B에 대한 보완 솔루션은 명령문 b를 명령문 c로서 대체하는 것이다' 등이 보안상 약점에 대한 보완 솔루션으로서 저장되어 있을 수 있다.In the patch
이러한 패치 절차 생성부(300)는 소스 코드에 포함된 보안상 약점을 입력받을 경우, 이렇게 입력받은 보안상 약점에 대한 보완 솔루션을 출력한다. 이 때 출력되는 보완 솔루션은 전술한 바와 같이 미리 저장된 복수 개의 보완 솔루션 중에서 선별된 것일 수 있다.When a security weakness included in the source code is input, the patch
패치 절차 생성부(300)가 출력한 보완 솔루션은 적어도 한 개의 패치 동작으로 구성될 수 있다. 예컨대 보완 솔루션이 '명령문 A를 삭제해라'라면, 이러한 보완 솔루션은 '명령문 A가 존재하는 위치로 이동해라'와 '이동된 위치에서 명령문 A를 삭제해라'로 구성될 수 있으며, 다만 이에 한정되는 것은 아니다. 이에 패치 절차 생성부(300)는 자신이 출력한 보완 솔루션이 어떠한 패치 동작으로 구성되어 있는지를 분석한 뒤, 이렇게 분석된 패치 동작과 매칭되는 패치 동작을, 패치 동작 라이브러리부(200)에 저장된 복수 개의 패치 동작 중에서 선별할 수 있다.The supplemental solution output by the
패치 절차 생성부(300)는 자신이 선별한 패치 동작을 토큰 레벨로 변환시킨다. 여기서 토큰이란 소스 코드에 포함된 구성 중에서 의미를 갖는 최소 단위를 지칭한다. 예컨대 패치 절차 생성부(300)가 토큰 레벨로 변환시킨 패치 동작에는 '토큰 A를 추가한다', '토큰 A가 나타나는 지점까지 이동한다', '토큰 A 이전에 나타나는 토큰은 삭제한다' 또는 '지정된 작업 목록 중 가능한 작업 하나를 수행한다' 등이 포함될 수 있으며, 다만 이에 한정되는 것은 아니다. 이 때 패치 동작을 토큰 레벨로 변환시키는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다.The patch
한편, 토크나이저부(400)는 소스 코드(10)를 복수 개의 토큰으로 분할하도록 구성된다. 여기서, 토크나이저부(400)가 소스 코드(10)를 복수 개의 토큰으로 분할하는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다.Meanwhile, the
여기서 토크나이저부(400)는 프로그램밍 언어별로 복수 개가 마련될 수 있다. 예컨대 도 1에 도시된 바와 같이 토크나이저부(400)로서 JAVA 언어에 대한 제1 토크나이저부, C언어에 대한 제2 토크나이저부 및 파이썬 언어에 대한 제3 토크나이저부가 마련될 수 있으며, 다만 이에 한정되는 것은 아니다.Here, a plurality of
패치 생성부(500)는, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작을, 소스 코드(10)에 대한 복수 개의 토큰(토크나이저부(400)가 소스 코드를 분할해서 생성된 토큰) 중 적어도 일부에 적용시킨다. 그 결과 소스 코드(10)에 포함된 보안상 약점을 보완시킬 수 있는 패치가 생성된다.The
구체적으로 살펴보면, 패치 생성부(500)는 복수 개의 토큰으로 분할된 소스 코드 중에서, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작이 수행되어야 할 위치를 파악한다. 아울러, 패치 생성부(500)는 이렇게 파악된 위치에서 토큰 레벨로 변환된 패치 동작이 수행되도록 제어함으로써 패치를 생성한다. 여기서 패치 생성부(500)가 패치를 생성하는 이러한 방법 그 자체는 예시적인 것에 불과하며, 따라서 언급된 것과 상이한 방법으로 패치를 생성하는 방법 자체가 이에 의해 배제되는 것은 아니다.Specifically, the
이상에서 살펴본 바와 같이, 일 실시예에 따르면 소스 코드에 포함된 보안상 약점을 보완할 수 있는 패치가 용이하게 생성될 수 있다. 예컨대 일 실시예에 따르면, 패치를 위해 새로운 프로그램을 작성할 필요가 없으며, 패치 동작을 패치 생성 장치에 적용하는 것만으로도 패치가 생성될 수 있다. 아울러, 일 실시예에 따른 기술은 프로그래밍 언어에 종속되지 않으며, 어떠한 프로그래밍 언어에도 적용 가능하다. 따라서, 새로운 프로그래밍 언어가 개발 내지 도입된 경우라고 하더라도, 해당 프로그래밍 언어로 작성된 소스 코드에 대한 토크나이저부만 구현된다면 일 실시예에 따른 패치 생성 기술이 적용될 수 있다.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
도 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
이 때, 패치 동작이란 소스 코드(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
다음으로, 소스 코드(10)를 복수 개의 토큰으로 분할하는 단계(S110)이 구행된다. 이러한 단계 S110은 토크나이저부(400)에 의해 수행될 수 있다. 여기서, 토크나이저부(400)가 소스 코드(10)를 복수 개의 토큰으로 분할하는 기술 그 자체는 이미 공지된 것이므로, 이에 대한 설명은 생략하기로 한다. 아울러, 소스 코드(10)란 컴퓨터 프로그램을 구성하는 명령어들의 집합을 가리키며, 소프트웨어라고 지칭될 수도 있다.Next, a step (S110) of dividing the
한편, 토크나이저부(400)가 프로그램밍 언어별로 복수 개가 마련될 수 있음은 전술한 바와 같다.Meanwhile, as described above, a plurality of
다음으로, 소스 코드(10)에 포함된 보안상 약점을 입력받을 경우, 이렇게 입력받은 보안상 약점에 대한 보완 솔루션을 출력하는 단계(S120)가 수행된다. 이러한 단계 S120은 패치 절차 생성부(300)에 의해 수행될 수 있다.Next, when a security weakness included in the
구체적으로 살펴보면, 패치 절차 생성부(300)는 소스 코드(10)에 대한 보안상 약점을 입력받는다. 여기서 패치 절차 생성부(300)가 입력받은 보안상 약점은 정적 분석 도구부(100)에 의해 분석된 것일 수 있다.Specifically, the patch
패치 절차 생성부(300)에는 복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있을 수 있다. 예컨대 '보안상 약점 A에 대한 보완 솔루션은 명령문 a를 삭제하는 것이다' 또는 '보안상 약점 B에 대한 보완 솔루션은 명령문 b를 명령문 c로서 대체하는 것이다' 등이 보안상 약점에 대한 보완 솔루션으로서 저장되어 있을 수 있다. In the patch
단계 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
이에 패치 절차 생성부(300)에 의해 출력된 보완 솔루션이 어떠한 패치 동작으로 구성되어 있는지를 분석한 뒤, 이렇게 분석된 패치 동작과 매칭되는 패치 동작을, 패치 동작 라이브러리부(200)에 저장된 복수 개의 패치 동작 중에서 선별하는 단계(S130)가 수행된다. 이러한 단계 S130 역시 패치 절차 생성부(300)에 의해 수행될 수 있다.Accordingly, after analyzing which patch operation is composed of the supplemental solution output by the patch
다음으로, 단계 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
다음으로, 단계 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
구체적으로 살펴보면, 패치 생성부(500)는 복수 개의 토큰으로 분할된 소스 코드 중에서, 패치 절차 생성부(300)에 의해 토큰 레벨로 변환된 패치 동작이 수행되어야 할 위치를 파악한다. 아울러, 패치 생성부(500)는 이렇게 파악된 위치에서 토큰 레벨로 변환된 패치 동작이 수행되도록 제어함으로써 패치를 생성한다. 여기서 패치 생성부(500)가 패치를 생성하는 이러한 방법 그 자체는 예시적인 것에 불과하며, 따라서 언급된 것과 상이한 방법으로 패치를 생성하는 방법 자체가 이에 의해 배제되는 것은 아니다.Specifically, the
이상에서 살펴본 바와 같이, 일 실시예에 따르면 소스 코드에 포함된 보안상 약점을 보완할 수 있는 패치가 용이하게 생성될 수 있다. 예컨대 일 실시예에 따르면, 패치를 위해 새로운 프로그램을 작성할 필요가 없으며, 패치 동작을 패치 생성 장치에 적용하는 것만으로도 패치가 생성될 수 있다. 아울러, 일 실시예에 따른 기술은 프로그래밍 언어에 종속되지 않으며, 어떠한 프로그래밍 언어에도 적용 가능하다. 따라서, 새로운 프로그래밍 언어가 개발 내지 도입된 경우라고 하더라도, 해당 프로그래밍 언어로 작성된 소스 코드에 대한 토크나이저만 구현된다면 일 실시예에 따른 패치 생성 기술이 적용될 수 있다.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.
상기 소스 코드에 포함된 보안상 약점을 파악하여서 상기 패치 절차 생성부에게 입력시키는 정적 분석 도구부를 더 포함하는
패치 생성 장치.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.
상기 패치 절차 생성부에는,
복수 개의 보안상 약점 각각에 대한 보완 솔루션이 미리 저장되어 있고,
상기 입력받은 보안상 약점에 대해 출력된 보완 솔루션은,
상기 복수 개의 보안상 약점 각각에 대해 저장된 보완 솔루션 중에서 선별된 것인
패치 생성 장치.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.
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)
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)
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 |
-
2019
- 2019-05-21 KR KR1020190059668A patent/KR102195748B1/en active IP Right Grant
Patent Citations (3)
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 |