KR102374034B1 - 시드 파일 생성 장치 및 그 방법 - Google Patents

시드 파일 생성 장치 및 그 방법 Download PDF

Info

Publication number
KR102374034B1
KR102374034B1 KR1020200104094A KR20200104094A KR102374034B1 KR 102374034 B1 KR102374034 B1 KR 102374034B1 KR 1020200104094 A KR1020200104094 A KR 1020200104094A KR 20200104094 A KR20200104094 A KR 20200104094A KR 102374034 B1 KR102374034 B1 KR 102374034B1
Authority
KR
South Korea
Prior art keywords
seed file
generating
syntax tree
action data
machine learning
Prior art date
Application number
KR1020200104094A
Other languages
English (en)
Other versions
KR20220022752A (ko
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 KR1020200104094A priority Critical patent/KR102374034B1/ko
Publication of KR20220022752A publication Critical patent/KR20220022752A/ko
Application granted granted Critical
Publication of KR102374034B1 publication Critical patent/KR102374034B1/ko

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/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/10Text processing
    • G06F40/12Use of codes for handling textual entities
    • G06F40/14Tree-structured documents
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F40/00Handling natural language data
    • G06F40/20Natural language analysis
    • G06F40/205Parsing
    • G06F40/211Syntactic parsing, e.g. based on context-free grammar [CFG] or unification grammars
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Artificial Intelligence (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Linguistics (AREA)
  • Computing Systems (AREA)
  • Audiology, Speech & Language Pathology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Mathematical Physics (AREA)
  • Machine Translation (AREA)

Abstract

제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와, 상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와, 상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고, 상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되는 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법 및 그 장치를 제공한다.

Description

시드 파일 생성 장치 및 그 방법 {APPARATUS FOR GENERATING SEED FILE AND METHOD THEREOF}
본 개시는 소프트웨어의 취약점을 점검하기 위한 시드 파일을 생성하는 장치 및 그 방법에 관한 것이다.
전기전자 분야 기술의 발달에 따라 다양한 전자 장치들이 보급되었다. 전자 장치들의 대부분은 동작을 위한 소프트웨어를 내장하고 있다. 소프트웨어는 경우에 따라 취약점을 포함할 수 있는데, 이러한 취약점을 이용해 전자 장치의 동작을 방해하거나 정보를 탈취하는 등의 공격이 지속적으로 증가하고 있다. 이에 따라 소프트웨어 공격에 의한 피해를 입지 않기 위해 소프트웨어의 보안을 강화하기 위한 기술에 대한 연구가 증가하고 있다.
일 예로 소프트웨어의 취약점을 점검하기 위한 퍼징(fuzzing) 기술에 대한 연구가 증가하고 있다. 퍼징 기술이란 소프트웨어에 랜덤하게 데이터(예: 시드 파일(seed file))를 입력하여 소프트웨어의 취약점을 찾는 기술이다. 퍼징 기술은 소프트웨어를 대상으로 하는 정적, 동적 분석없이 시드 파일의 변이를 이용해 취약점을 찾는 기술로 소프트웨어가 예상치 못한 약점을 탐지할 수 있다. 이러한 퍼징 기술은 여러 소프트웨어에서 다양한 유형의 버그를 찾아낸다는 점에서 실용성이 높지만 입력되는 시드 파일이 다양성에 따라 버그를 찾아내는 능력의 차이가 커서 시드 파일에 다소 의존적이다.
따라서 시드 파일의 다양화를 위한 다양한 기술이 이용되고 있다. 일 예로 시드 파일의 하위 구성요소를 문자열로 인식해 딥러닝 학습을 진행한 후 새로운 문자열을 생성하여 파일에 추가함으로써 새로운 시드 파일을 생성하는 기술이 이용되고 있다. 그러나, 이 기술은 시드 파일과 관련된 문법(grammer)을 따르지 않는 구성요소를 생성하게 되어 문법 오류 코드만을 탐색하는 문제점을 가진다. 또한 이 기술은 기존 파일에 단순히 새로운 문자열을 추가하는 방식이기 때문에 새롭게 생성되는 시드 파일의 구조에 대한 번화가 없어 다양화에 한계가 있다.
이에 따라 보다 다양한 시드 파일을 효과적으로 생성하기 위한 방안이 요구된다.
본 실시 예가 해결하고자 하는 과제는, 시드 파일의 구조에 대한 정보를 포함하는 구문 트리를 이용함으로써 시드 파일의 형식과 문법은 반영하되 보다 다양한 구조를 가지는 시드 파일을 생성하는 장치 및 그 방법을 제공하는데 있다.
본 실시 예가 이루고자 하는 기술적 과제는 상기된 바와 같은 기술적 과제들로 한정되지 않으며, 이하의 실시 예들로부터 또 다른 기술적 과제들이 유추될 수 있다.
제1 실시 예에 따라, 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법은, 제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와, 상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와, 상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고, 상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습될 수 있다.
제2 실시 예에 따라, 소프트웨어 취약점 점검을 위한 시드 파일 생성 장치는, 제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 구문 트리 생성부와, 상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 액션 데이터 생성부와, 상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 시드 파일 생성부를 포함하고, 상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습될 수 있다.
제3 실시 예에 따라, 컴퓨터로 읽을 수 있는 비일시적 기록매체는, 제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와, 상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와, 상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고, 상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습된, 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록할 수 있다.
기타 실시 예들의 구체적인 사항들은 상세한 설명 및 도면들에 포함되어 있다.
본 개시에 따르면, 시드 파일 생성 장치 및 그 방법은 시드 파일의 문법 구조가 반영된 구문 트리를 이용함으로써 구조적 다양성을 갖되 시드 파일의 형식과 문법이 반영된 시드 파일을 생성할 수 있다.
또한 퍼징에 시드 파일 생성 장치 및 그 방법에 의해 생성된 시드 파일을 이용하는 경우 퍼징 대상 소프트웨어에 대한 코드 커버리지가 향상되어 퍼징 효과가 증가함으로써 보다 효과적으로 소프트웨어의 취약성을 점검할 수 있다.
발명의 효과는 이상에서 언급한 효과로 제한되지 않으며, 언급되지 않은 또 다른 효과들은 청구범위의 기재로부터 당해 기술 분야의 통상의 기술자에게 명확하게 이해될 수 있을 것이다.
도 1은 일 실시 예에 따른 시드 파일 생성 방법을 설명하기 위한 개념도이다.
도 2는 일 실시 예에 따른 시드 파일 생성 장치의 기능블록도이다.
도 3은 일 실시 예에 따른 시드 파일 생성 방법의 각 단계의 흐름도이다.
도 4는 일 실시 예에 따른 시드 파일 생성 장치에서 구문 트리 생성을 위해 이용되는 알고리즘의 예를 나타낸다.
도 5는 일 실시 예에 따른 시드 파일 생성 장치에서 추상 구문 표현 언어와 관련된 알고리즘의 예를 나타낸다.
도 6은 일 실시 예에 따른 시드 파일 생성 장치에서 액션 데이터와 관련된 알고리즘의 예를 나타낸다.
도 7은 일 실시 예에 따른 시드 파일 생성 장치의 기계학습 알고리즘을 개념적으로 나타낸다.
도 8은 일 실시 예에 따른 시드 파일 생성 장치의 기계학습 알고리즘의 학습을 위해 이용되는 알고리즘의 예를 나타낸다.
도 9는 일 실시 예에 따른 시드 파일 생성 장치에서 새로운 시드 파일의 생성을 위해 이용되는 알고리즘의 예를 나타낸다.
도 10은 일 실시 예에 따른 시드 파일 생성 장치에서 구문 트리를 새로운 시드 파일로 변환하기 위해 이용되는 알고리즘의 예를 나타낸다.
실시 예들에서 사용되는 용어는 본 개시에서의 기능을 고려하면서 가능한 현재 널리 사용되는 일반적인 용어들을 선택하였으나, 이는 당 분야에 종사하는 기술자의 의도 또는 판례, 새로운 기술의 출현 등에 따라 달라질 수 있다. 또한, 특정한 경우는 출원인이 임의로 선정한 용어도 있으며, 이 경우 해당되는 설명 부분에서 상세히 그 의미를 기재할 것이다. 따라서 본 개시에서 사용되는 용어는 단순한 용어의 명칭이 아닌, 그 용어가 가지는 의미와 본 개시의 전반에 걸친 내용을 토대로 정의되어야 한다.
명세서 전체에서 어떤 부분이 어떤 구성요소를 "포함"한다고 할 때, 이는 특별히 반대되는 기재가 없는 한 다른 구성요소를 제외하는 것이 아니라 다른 구성요소를 더 포함할 수 있음을 의미한다.
명세서 전체에서 기재된 "a, b, 및 c 중 적어도 하나"의 표현은, 'a 단독', 'b 단독', 'c 단독', 'a 및 b', 'a 및 c', 'b 및 c', 또는 'a, b, 및 c 모두'를 포괄할 수 있다.
이하에서 언급되는 "단말"은 네트워크를 통해 서버나 타 단말에 접속할 수 있는 컴퓨터나 휴대용 단말로 구현될 수 있다. 여기서, 컴퓨터는 예를 들어, 웹 브라우저(WEB Browser)가 탑재된 노트북, 데스크톱(desktop), 랩톱(laptop) 등을 포함하고, 휴대용 단말은 예를 들어, 휴대성과 이동성이 보장되는 무선 통신 장치로서, IMT(International Mobile Telecommunication), CDMA(Code Division Multiple Access), W-CDMA(W-Code Division Multiple Access), LTE(Long Term Evolution) 등의 통신 기반 단말, 스마트폰, 태블릿 PC 등과 같은 모든 종류의 핸드헬드(Handheld) 기반의 무선 통신 장치를 포함할 수 있다.
아래에서는 첨부한 도면을 참고하여 본 개시의 실시 예에 대하여 본 개시가 속하는 기술 분야에서 통상의 지식을 가진 자가 용이하게 실시할 수 있도록 상세히 설명한다. 그러나 본 개시는 여러 가지 상이한 형태로 구현될 수 있으며 여기에서 설명하는 실시 예에 한정되지 않는다.
이하에서는 도면을 참조하여 본 개시의 실시 예들을 상세히 설명한다.
도 1은 일 실시 예에 따른 시드 파일 생성 방법을 설명하기 위한 개념도이다.
도 1을 참조하면, 제1 시드 파일(101)을 기초로 제1 구문 트리(103)가 생성될 수 있다. 제1 시드 파일(101)은 퍼징 대상이 되는 소프트웨어의 취약점 점검을 위해 미리 구비된 복수의 시드 파일 중 적어도 하나를 포함할 수 있다. 후술하는 새로운 시드 파일을 생성하는 과정은 취약점 점검을 위해 구비된 복수의 시드 파일 각각에 대해 이루어 질 수 있으나, 설명의 편의를 위해 이하에서는 복수의 시드 파일 중 하나의 시드 파일, 즉 제1 시드 파일(101)에 대해 설명하겠다.
시드 파일 생성 장치(이하, 전자 장치)는 제1 시드 파일(101)을 확인하면 제1 시드 파일(101)의 형식에 대응하는 추상 구문 표현 언어(abstract syntax description language, ASDL)를 이용하여 제1 구문 트리(103)를 생성할 수 있다. 제1 구문 트리(103)의 생성과 관련된 알고리즘의 예는 도 4를 참조할 수 있다.
제1 시드 파일(101)의 형식은 제1 시드 파일(101)에 대응하는 문서파일의 유형으로 예를 들어 어도비시스템즈사의 PDF, 마이크로소프트사의 엑셀(EXCEL), 또는 마이크로소프트사의 워드(WORD)를 포함할 수 있다. 문서파일의 유형은 상술된 예에 제한되지 않으며 다양한 파일 유형이 이용될 수 있다.
추상 구문 표현 언어는 구문 트리의 생성을 위한 시드 파일의 문법 형식으로 시드 파일의 형식 별로 지정될 수 있다. 예를 들어 구문 트리(syntax tree)의 생성과 관련하여, 시드 파일의 형식이 PDF 인 경우 제1 추상 구문 표현 언어가 이용되고 시드 파일의 형식이 엑셀인 경우 제2 추상 구문 표현 언어가 이용될 수 있다. 추상 구문 표현 언어의 예는 도 5를 참조할 수 있다.
한편, 제1 구문 트리(또는 추상 구문 트리)(103)는 구문 트리(또는 추상 구문 트리)로서, 제1 시드 파일의 추상 구문 구조를 나타내는 트리를 포함할 수 있다. 즉, 제1 구문 트리(103)는 시드 파일의 구조를 표현하는 것으로, 각 노드는 제1 시드 파일(101)에 대응하는 코드에서 발생되는 구조를 나타낼 수 있다. 구문 트리는 파스 트리와 구분되며, 실제 구문에서 나타나는 모든 세세한 정보 대신 구문의 구조에 대한 정보를 포함한다.
도시하지는 않았으나, 제1 구문 트리(103)가 생성되는 경우 제1 시드 파일(101)에 포함된 데이터 값은 별도로 저장될 수 있다. 실시 예에서, 데이터 값은 시드 파일의 구조에 미치는 영향이 특정 값 이하인 데이터로서 제1 시드 파일의 문법 구조와 무관하게 제1 시드 파일에 삽입되어 제1 시드 파일의 내용 또는 이야기를 구성하는 값을 포함할 수 있다. 예를 들어 데이터 값은 숫자, 행렬값, 문자열, 벡터, 배열 및 단어 중 적어도 하나를 포함할 수 있다.
제1 구문 트리(103)를 기초로 제1 액션 데이터(105)가 생성될 수 있다. 제1 액션 데이터(105)는 제1 구문 트리(103)를 시계열적 정보로 표현한 데이터를 포함할 수 있다. 예를 들어, 제1 액션 데이터(105)는 제1 구문 트리(103)를 전위 순회하여 제1 구문 트리(103)의 구조와 노드에 대응하는 정보가 변환됨으로써 생성된 데이터를 포함할 수 있다. 제1 액션 데이터(105)는 시퀀스(sequence) 데이터일 수 있다. 구문 트리로부터 액션 데이터를 생성하는 것과 관련된 알고리즘의 예는 도 6을 참조할 수 있다.
제1 액션 데이터(105)가 기계학습 알고리즘(107)에 적용됨에 기초하여 제2 구문 트리(109)가 생성될 수 있다. 기계학습 알고리즘(107)은 액션 데이터의 입력을 기초로 새로운 구문 구조를 가지는 구문 트리를 생성하도록 미리 학습된 기계학습 알고리즘을 포함할 수 있다. 기계학습 알고리즘은 예를 들면 LSTM(long short term memory), Seq2Seq(sequence to sequence), GAN(generative adversarial network), RNN(recurrent neural network), C-RNN-GAN 중 적어도 하나를 포함할 수 있다.
제2 구문 트리(109)는 제1 구문 트리(103)와는 구분되는 구조(또는 상이한 구조)를 가지는 구문 트리일 수 있다. 제2 구문 트리(109)를 기초로 제1 시드 파일(101)과 구분되는 제2 시드 파일(111)이 생성될 수 있다.
실시 예에서, 전자 장치는 제2 구문 트리(109)에 기저장된 데이터 값 중 적어도 일부를 삽입하여 제2 시드 파일(111)을 생성할 수 있다. 제2 시드 파일(111)에 삽입되는 데이터 값은 무작위로 선택될 수 있다.
실시 예에서, 제2 시드 파일(111)은 제1 시드 파일(101)의 형식에 따른 문법은 만족하되 구조적으로 변경된 새로운 시드 파일을 포함할 수 있다. 이러한 시드 파일의 생성은 반복적으로 이루어질 수 있다. 예를 들어 미리 구비된 복수의 시드 파일 중 다른 시드 파일에 대해 상술한 과정이 반복되거나 제2 시드 파일(111)에 대해 상술한 과정이 반복될 수 있다.
도 2는 일 실시 예에 따른 시드 파일 생성 장치의 기능블록도이다. 도 2에는 본 실시 예와 관련된 구성요소들이 도시되어 있으나 이에 제한되는 것은 아니며 도 3에 도시된 구성요소들 외에 다른 범용적인 구성요소들이 더 포함될 수 있다.
시드 파일 생성 장치(이하, 전자 장치)(200)는 구문 트리 생성부(210), 액션 데이터 생성부(220) 및 시드 파일 생성부(230)를 포함할 수 있다. 구문 트리 생성부(210), 액션 데이터 생성부(220) 및 시드 파일 생성부(230) 각각은 적어도 하나의 기능이나 동작을 처리하는 단위를 의미할 수 있으며, 실시 예에 따라 하드웨어(예: 프로세서, 마이크로프로세서)나 소프트웨어, 또는, 하드웨어 및 소프트웨어의 결합으로 구현될 수 있다.
경우에 따라, 전자 장치(200)는 메모리 및 프로세서를 포함하는 형태로 구현될 수 있다. 이러한 경우 메모리는 전자 장치(200)와 관련된 다양한 데이터, 예를 들어 전자 장치(200)의 동작을 위한 적어도 하나의 명령어(instruction)를 포함할 수 있으며, 프로세서는 메모리에 저장된 데이터를 기초로 전자 장치(200)의 구문 트리 생성부(210), 액션 데이터 생성부(220) 및 시드 파일 생성부(230) 각 구성과 관련된 동작을 수행할 수 있다.
구문 트리 생성부(210)는 제1 시드 파일을 확인함에 기초하여 제1 시드 파일에 대한 구문 트리를 생성할 수 있다. 제1 시드 파일은 퍼징을 위한 소프트웨어의 취약점 점검을 위해 미리 마련된 데이터를 포함할 수 있다. 경우에 따라 취약점 점검을 위한 시드 파일은 복수개가 마련될 수 있으며, 이러한 경우 제1 시드 파일은 마련된 복수의 시드 파일 중 하나에 대응할 수 있다.
실시 예에서, 구문 트리 생성부(210)는 제1 시드 파일의 형식에 대응하여 기지정된 추상 구문 표현 언어를 기반으로 제1 시드 파일에 대한 구문 트리를 생성할 수 있다. 제1 시드 파일의 형식에 대응하는 추상 구문 표현 언어는 시드 파일의 형식(예: PDF) 별로 기지정될 수 있다. 예를 들어 제1 형식은 제1 추상 구문 표현 언어에 대응하고, 제2 형식은 제2 추상 구문 표현 언어에 대응하도록 기지정될 수 있다. 구문 트리는 제1 시드 파일의 구조에 대한 정보를 나타내는 트리 형태의 데이터를 포함할 수 있다. 구문 트리는 실시 예에 따라 추상 구문 트리로 지칭될 수도 있다. 구문 트리의 생성은 기지정된 알고리즘을 기초로 이루어질 수 있으며 이러한 알고리즘에 대한 구체적인 예는 도 4를 참조할 수 있다.
실시 예에서, 추상 구문 표현 언어는 구문 트리를 생성하기 위해 지정된 것일 수 있다. 추상 구문 표현 언어는 프로덕션들의 리스트를 포함할 수 있다. 프로덕션은 타입과 컨스트럭션으로 구성될 수 있다. 타입은 단일 타입과 복합 타입, 2가지 종류의 타입을 포함할 수 있다. 단일 타입은 하나의 컨스트럭션으로 정의되고 복합 타입은 하나의 타입이 복수의 컨스트럭션들로 정의될 수 있다. 컨스트럭션은 필드들의 집합으로 구성되어 특정 유형의 언어 구성을 정의할 수 있다. 각 필드에는 필드 별로 보유할 수 있는 값의 종류를 나타내는 자료형이 지정될 수 있다. 자료형은 예를 들면 다른 컨스트럭션을 값으로 가지는 컨스트럭션 자료형 또는 데이터를 값으로 가지는 데이터 자료형에 대응할 수 있다. 카디널리티는 필드가 가지는 값의 형태를 표현하는 것으로서, 필드가 가지는 값의 형태에 따라 단일, 다중 또는 선택 카디널리티가 존재할 수 있다. 이와 관련된 구체적인 예는 도 5을 참조할 수 있다.
실시 예에서, 제1 구문 트리는 제1 시드 파일의 데이터 값이 생략된 정보를 포함할 수 있다. 여기서, 데이터 값은 숫자, 행렬값, 문자열, 벡터, 배열 또는 단어와 같이 제1 시드 파일의 구조와 구분되는 데이터에 대한 값일 수 있다. 데이터 값은 제1 시드 파일의 구조에 영향을 미치지 않는 값일 수 있다.
실시 예에서, 구문 트리 생성부(210)는 상기 데이터 값을 제1 시드 파일에서 구분하여 별도의 정보로서 저장할 수 있다. 예를 들어 구문 트리 생성부(210)는 제1 시드 파일의 데이터 값은 데이터 사전에 저장할 수 있다. 데이터 사전은 데이터 값의 저장을 위해 마련된 것일 수 있다. 경우에 따라 데이터 사전에는 후술하는 제2 시드 파일의 생성과 관련하여 이용 가능한 다양한 데이터 값이 미리 저장되어 있을 수 있다. 이러한 데이터 사전은 시드 파일로부터 구문 트리를 획득하는 동작에 대응하여 데이터 값을 획득함에 기초하여 업데이트 될 수 있다.
액션 데이터 생성부(220)는 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션(action) 데이터(또는 액션)를 생성할 수 있다. 구문 트리는 상술한 바와 같이 추상 구문 트리로 지칭될 수 있으며, 시드 파일의 생성 규칙에 대해서만 노드를 가지도록 추상화한 트리를 포함할 수 있다.
실시 예에서, 액션 데이터 생성부(220)는 제1 시드 파일에 대응하는 액션 데이터 중 적어도 일부를 선택하여 기지정된 크기의 액션 데이터를 생성할 수 있다. 여기서, 기지정된 크기는 후술하는 기계학습 알고리즘의 처리 속도가 특정 값이 되도록 하는 데이터의 크기에 대응할 수 있다.
실시 예에서, 액션 데이터 생성부(220)는 구문 트리를 전위 순회함에 기초하여, 구문 트리의 각 노드에 대응하는 액션 타입과 부모 노드(또는 상위 노드)에 대한 정보를 확인할 수 있다. 액션 데이터 생성부(220)는 액션 타입과 부모 노드에 대한 정보를 각 노드 별로 매칭시킴에 기초하여 액션 데이터를 생성할 수 있다. 여기서, 전위 순회는 트리의 뿌리를 먼저 방문한 다음 왼쪽 부분 트리와 오른쪽 부분 트리를 방문하는 순회를 의미할 수 있다. 액션 타입은 노드의 특성과 관련되며, 예를 들어 ApplyConstr, GenToken, 및 Reduce를 포함할 수 있다.
실시 예에서, ApplyConstr 액션은 컨스트럭션(construction)인 중간 노드들의 정보를 저장할 수 있다. Reduce 액션은 필드가 다중 및 선택 카디널리티(cardinality)일 경우, 모든 필드가 나온 후 마지막에 추가하여 필드의 끝을 나타낼 수 있다. GenToken 액션은 데이터 자료형 필드인 말단 노드를 나타낼 수 있다.
실시 예에서, 액션 데이터 생성부(220)는 제1 구문 트리를 전위 순회하여 제1 구문 트리의 구조와 노드가 가지는 정보를 액션 데이터로 변환할 수 있다. 예를 들어, 액션 데이터 생성부(220)는 구문 트리를 전위 순회하여 추상 구문 표현 언어와 각 노드를 기초로 중간 노드라면 ApplyConstr 액션, 말단 노드라면 GenToken 액션, 다중 및 선택 카디널리티일 경우 끝에 Reduce 액션을 추가할 수 있다. 액션 데이터 생성부(220)는 구문 트리의 구조 정보를 보존하기 위하여 부모 노드의 정보를 액션과 같이 저장할 수 있다.
제1 구문 트리의 액션 데이터로의 변환은 기지정된 알고리즘을 기초로 수행될 수 있으며, 이러한 알고리즘의 예는 도 6을 참조할 수 있다.
액션 데이터는 구문 트리의 시계열적 정보와 관련될 수 있다. 예를 들어 액션 데이터는 구문 트리가 나타내는 정보를 시계열적으로 나열한 시퀀스 데이터를 포함할 수 있다.
시드 파일 생성부(230)는 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 구조가 변경된 구문 트리를 획득할 수 있다. 구체적으로, 시드 파일 생성부(230)는 액션 데이터를 기계학습 알고리즘에 입력할 수 있다. 시드 파일 생성부(230)는 액션 데이터가 입력된 기계학습 알고리즘으로부터 제1 구문 트리와는 구분되는 제2 구문 트리를 출력으로 획득할 수 있다. 제2 구문 트리의 생성과 관련된 알고리즘의 예는 도 9를 참조할 수 있다.
실시 예에서, 기계학습 알고리즘은 시드 파일의 액션 데이터가 입력됨에 기초하여 구문 구조가 변경된 새로운 구문 트리를 생성하도록 미리 학습된 기계학습 알고리즘을 포함할 수 있다. 기계학습 알고리즘의 학습을 위해 이용되는 액션 데이터는 소프트웨어의 취약점 분석을 위해 마련된 복수의 시드 파일 각각의 액션 데이터를 포함할 수 있다. 기계학습 알고리즘은 복수의 시드 파일의 액션 데이터 각각을 이용하여 복수의 학습이 수행될 수 있다. 이러한 학습을 기초로 기계학습 알고리즘은 시드 파일과 관련된 문법은 반영하되 구조적 다양성을 가지는 다양한 구문 트리를 생성할 수 있다. 기계학습 알고리즘의 학습을 위해 이용되는 알고리즘의 예는 도 8을 참조할 수 있다.
여기서, 기계학습 알고리즘은 LSTM, Seq2Seq, GAN, RNN, 및 C-RNN-GAN 중 적어도 하나를 포함할 수 있다. LSTM은 과거의 학습 정보를 지속적으로 사용하는 기계학습 알고리즘을 포함하고, Seq2Seq는 LSTM을 기초로 생성된 딥러닝(deep learning) 알고리즘을 포함할 수 있다. GAN은 생성적 대립 신경망으로 생성모델과 판별모델이 경쟁하면서 실제와 가까운 데이터를 만들어내는 기계학습 알고리즘을 포함할 수 있다. RNN은 순환 신경망 또는 재귀 신경망으로 지칭가능하며, 반복적이고 순차적인 데이터(sequential data) 학습에 특화된 기계학습 알고리즘을 포함할 수 있다. C-RNN-GAN은 RNN 모델과 GAN을 결합한 기계학습 알고리즘을 포함할 수 있다. 다만, 기계학습 알고리즘은 상술된 예에 제한되지 않고 시퀀스 데이터를 이용하는 다양한 기계학습 알고리즘이 이용될 수 있다. 기계학습 알고리즘의 예는 도 7을 참조할 수 있다.
시드 파일 생성부(230)는 상기 획득된 구문 트리와 기저장된 데이터를 이용하여 제2 시드 파일을 생성할 수 있다. 실시 예에서, 시드 파일 생성부(230)는 제1 시드 파일에 대응하는 추상 구문 표현 언어를 이용하여 기계학습 알고리즘을 이용하여 획득된 구문 트리를 시드 파일로 변환할 수 있다. 이 때 시드 파일 생성부(230)는 시드 파일의 데이터 영역에 기저장된 데이터 중 적어도 일부를 삽입하여 제2 시드 파일을 완성할 수 있다. 기저장된 데이터는 제1 시드 파일에 대한 구문 트리의 생성 과정에서 획득된 구조와 구분되는 데이터를 포함할 수 있다. 경우에 따라 구조와 구분되는 데이터가 데이터 사전에 저장되는 경우 시드 파일 생성부(230)는 데이터 사전에서 적어도 일부의 데이터를 선택하여 획득된 구문 트리에 삽입할 수 있다.
실시 예에서, 획득된 구문 트리에 삽입되는 데이터는 기저장된 데이터 중 랜덤하게 선택된 일부를 포함할 수 있다. 구문 트리를 시드 파일로 변환시키는 알고리즘에 대한 예는 도 10을 참조할 수 있다.
도 3은 일 실시 예에 따른 시드 파일 생성 방법의 각 단계의 흐름도이다. 도 3에 도시된 방법의 각 단계는 경우에 따라 도면에 도시된 바와 그 순서를 달리하여 수행될 수 있다. 이하에서는 앞서 도 1 또는 도 2에서 서술한 내용과 중복되는 내용이 생략될 수 있다.
도 3을 참조하면, 단계 310에서 전자 장치는 제1 시드 파일을 확인함에 기초하여 제1 시드 파일에 대한 구문 트리를 생성할 수 있다. 구체적으로, 전자 장치는 제1 시드 파일에 대응하는 추상 구문 표현 언어를 이용하여 제1 시드 파일에 대한 구문 트리를 생성할 수 있다.
실시 예에서, 전자 장치는 구문 트리의 생성에 대응하여 제1 시드 파일에 포함된 데이터 값은 별도로 저장할 수 있다. 예를 들어 전자 장치는 데이터 값을 데이터 사전에 저장할 수 있다.
단계 320에서, 전자 장치는 구문 트리의 구조와 노드에 대한 정보를 포함하는 액션 데이터를 생성할 수 있다. 구체적으로, 전자 장치는 제1 시드 파일에 대한 구문 트리의 구조와 노드에 대한 정보를 기초로 액션 데이터를 생성할 수 있다. 생성된 액션 데이터는 시퀀스 데이터일 수 있다.
실시 예에서, 전자 장치는 구문 트리를 전위 순회함에 기초하여, 구문 트리의 각 노드에 대응하는 액션 타입과 부모 노드에 대한 정보를 확인할 수 있다. 전자 장치는 액션 타입과 부모 노드에 대한 정보를 각 노드 별로 매칭시킴에 기초하여 액션 데이터를 생성할 수 있다. 이 때, 액션 타입은 노드의 특성과 관련될 수 있다.
단계 330에서, 전자 장치는 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성할 수 있다. 실시 예에서, 전자 장치는 기계학습 알고리즘의 입력으로 액션 데이터를 이용하여 출력으로 구조가 변경된 구문 트리를 획득할 수 있다. 전자 장치는 획득된 구문 트리를 제2 시드 파일로 변경함에 기초하여 제2 시드 파일을 생성할 수 있다.
여기서, 기계학습 알고리즘은 시드 파일의 액션 데이터가 입력됨에 기초하여 구문 구조가 변경된 새로운 구문 트리를 생성하도록 미리 학습된 기계학습 알고리즘을 포함할 수 있다. 기계학습 알고리즘의 학습을 위해 이용되는 액션 데이터는 소프트웨어의 취약점 분석을 위해 마련된 복수의 시드 파일 각각의 액션 데이터를 포함할 수 있다.
단계 310 내지 단계 330의 동작은 새로운 시드 파일의 생성을 위해 복수회 수행될 수 있다. 이에 따라 시드 파일과 관련된 문법은 반영하되 구조적 다양성을 가지는 다양한 시드 파일이 생성될 수 있다. 이러한 구조적 다양성을 가지는 시드 파일을 이용하여 퍼징을 수행하면 코드 커버리지가 증가되기 때문에 소프트웨어 취약점 점검이 보다 효과적으로 이루어질 수 있다.
도 4는 일 실시 예에 따른 시드 파일 생성 장치에서 구문 트리 생성을 위해 이용되는 알고리즘의 예를 나타낸다.
구체적으로, 도 4는 추상 구문 표현 언어를 사용하여 파일을 추상 구문 트리 형태로 변환하는 알고리즘(이하, 제1 알고리즘)의 일 예를 나타낸다. 도 4를 참조하면, 전자 장치는 제1 알고리즘에 시드 파일(예: 제1 시드 파일)을 입력하여 구문 트리(도 4의 AST)를 획득할 수 있다. 이 때, 전자 장치는 추상 구문 표현 언어(도 4의 ASDL)를 이용하여 시드 파일에 대응하는 구문 트리가 획득되도록 할 수 있다.
도 5는 일 실시 예에 따른 시드 파일 생성 장치의 추상 구문 표현 언어와 관련된 알고리즘의 예를 나타낸다. 구체적으로, 도 5는 시드 파일의 형식이 PDF인 경우 지정되는 추상 구문 표현 언어에 대한 알고리즘의 예를 나타낸다.
PDF는 복수의 오브젝트(object)를 포함할 수 있다. 복수의 오브젝트 각각은 키(key)와 키에 대응하는 데이터가 매핑된 사전(dictionary)의 형태로 구성된다. 오브젝트는 해당 오브젝트의 타입(type)에 따른 키와 데이터 타입 규격이 존재할 수 있다. 이와 관련된 구체적인 내용은 PDF Spec 1.7 문서에 나타나 있으므로 이에 대한 설명은 생략하겠다.
퍼징을 위해 마련된 시드 파일 중 적어도 하나(이하, 입력 시드)을 기반으로, PDF 구조를 구문 트리로 효율적으로 표현하도록 하는 추상 구문 표현 언어가 지정될 수 있다. 구체적으로, 입력 시드의 Page, Font, XObject와 같은 타입 오브젝트와 오브젝트의 키는 컨스트럭션으로 지정될 수 있다. 타입 컨스트럭션의 필드는 타입 오브젝트의 키로 구성하고, 필수 키와 선택 키들에 대해 알맞은 카디널리티를 적용하여 프로덕션이 생성될 수 있다. 키 컨스트럭션의 필드는 데이터 값, 타입 컨스트럭션 및 키 컨스트럭션으로 구성될 수 있다. 또한, 기본 PDF 추상 구문 표현 언어 구조의 프로덕션이 추가될 수 있다. 이에 따라 PDF 구조가 다양하게 표현될 수 있다.
도 5를 참조하면, 'Page(expr*key)'와 'Key(stmt data)'는 추가되는 문법일 수 있다. 'Page(expr*key)'와 'Key(stmt data)'를 이용하여 입력 시드와 관련된 데이터셋에 존재하는 모든 프로덕션이 추가될 수 있다. 데이터 값은 필드로 구분되어 데이터 사전에 저장될 수 있다. 이에 따라 도 2 및 도 3을 통해 상술한 바와 같이 제2 시드 파일의 생성을 위해 적어도 일부가 랜덤하게 선택되어 구문 트리에 삽입될 수 있다. 이러한 데이터 사전에는 상술한 바와 같이 미리 저장되는 데이터 값 이외에도 제2 시드 파일의 생성을 위해 이용되는 제1 시드 파일과 관련된 데이터 값이 저장될 수도 있다.
구문 트리로의 변환을 위해서는 Root 컨스트럭션의 지정이 요구될 수 있다. PDF의 경우 Root 컨스트럭션은 Page 타입 컨스트럭션에 대응할 수 있다. Root 컨스트럭션의 필드들을 자식 노드로 생성해주고, 필드가 컨스트럭션 자료형일 경우 다시 해당 컨스트럭션의 필드들을 자식 노드로 생성해주는 작업을 반복해준다. 이렇게 생성이 완료된 구문 트리는 컨스트럭션인 중간 노드들과, 데이터 자료형 필드인 말단 노드로 구성될 수 있다.
도 6은 일 실시 예에 따른 시드 파일 생성 장치에서 액션 데이터와 관련된 알고리즘의 예를 나타낸다. 구체적으로, 도 6은 구문 트리를 액션 데이터로 변환하는 알고리즘의 예를 나타낸다.
도 6을 참조하면, 도 6에 나타나는 알고리즘에 구문 트리(도 6의 AST)가 입력됨에 기초하여 액션 데이터(도 6의 actions)가 출력될 수 있다.
액션 데이터는 ApplyConstr action, GenToken action 및 Reduce ation과 같은 액션 타입 및 부모 노드(parent node)가 확인되고, 액션 타입과 부모 노드에 대한 정보가 각 노드 별로 매칭됨에 기초하여 생성될 수 있다.
도 7은 일 실시 예에 따른 시드 파일 생성 장치의 기계학습 알고리즘을 개념적으로 나타낸다. 구체적으로, 도 7은 LSTM으로 구현되는 기계학습 알고리즘의 예를 개념적으로 나타낸다.
도 7을 참조하면 액션 데이터(예: x1, x2, xn)가 기계학습 알고리즘에 입력될 수 있다. 액션 데이터의 삽입을 기초로 새로운 구문 트리가 획득될 수 있다. 도 7에서 n은 액션 데이터가 시계열적 정보임에 기초하여 액션 데이터를 구성하는 정보의 전체 개수를 나타낼 수 있다. xi는 액션 데이터를 구성하는 정보 중 i번째 정보에 대응할 수 있다.
도 8은 일 실시 예에 따른 시드 파일 생성 장치의 기계학습 알고리즘의 학습을 위해 이용되는 알고리즘의 예를 나타낸다. 구체적으로, 도 8은 기계학습 알고리즘을 학습시키는 알고리즘의 예를 나타낸다.
도 8을 참조하면 액션 데이터(도 8의 actions)가 알고리즘에 입력됨에 기초하여 기계학습 알고리즘에 대한 학습이 수행될 수 있다. 도 8의 알고리즘을 이용한 학습은 복수회 반복될 수 있다.
도 9는 일 실시 예에 따른 시드 파일 생성 장치에서 새로운 시드 파일의 생성을 위해 이용되는 알고리즘의 예를 나타낸다. 구체적으로 도 9는 학습이 수행된 기계학습 알고리즘을 이용하여 새로운 구문 트리를 생성하는 알고리즘의 예를 나타낸다.
도 9를 참조하면, 학습이 수행된 기계학습 알고리즘을 이용하여 새로운 구문 트리(도 9의 AST)가 출력됨을 알 수 있다. 출력으로 생성된 구문 트리는 시드 파일의 문법 형식은 반영하되 구조적으로 변경된 새로운 시드 파일을 포함할 수 있다.
도 10은 일 실시 예에 따른 시드 파일 생성 장치에서 구문 트리를 새로운 시드 파일로 변환하기 위해 이용되는 알고리즘의 예를 나타낸다. 구체적으로, 도 10은 구문 트리를 시드 파일로 변환하는 알고리즘의 예를 나타낸다.
도 10을 참조하면, 구문 트리가 알고리즘에 입력됨에 기초하여 새로운 시드 파일이 생성될 수 있다. 새로운 시드 파일의 생성을 위해 데이터 값(도 10의 vocab) 및 추상 구문 표현 언어가 더 이용될 수 있다.
여기서, 새로운 시드 파일의 생성을 위해 이용되는 데이터 값은 데이터 사전에서 랜덤하게 선택된 것일 수 있다.
본 명세서의 일 실시예에 따른 전자 장치는 퍼징 대상이 되는 소프트웨어의 파일의 형식과 문법, 즉 시드 파일의 형식과 문법을 반영하되 구조적 다양성을 가지는 다양한 시드 파일을 생성할 수 있다.
또한, 본 명세서의 일 실시예에 따른 전자 장치에 의해 생성된 시드 파일을 이용하여 퍼징을 수행하는 경우 퍼징 대상 소프트웨어에 대한 코드 커버리지가 향상되어 보다 효과적인 퍼징이 이루어질 수 있고, 이에 따라 퍼징 대상 소프트웨어의 보안성 강화가 이루어지도록 할 수 있다.
전술한 실시 예들에 따른 전자 장치는 프로세서, 프로그램 데이터를 저장하고 실행하는 메모리, 디스크 드라이브와 같은 영구 저장부(permanent storage), 외부 장치와 통신하는 통신 포트, 터치 패널, 키(key), 버튼 등과 같은 사용자 인터페이스 장치 등을 포함할 수 있다. 소프트웨어 모듈 또는 알고리즘으로 구현되는 방법들은 상기 프로세서상에서 실행 가능한 컴퓨터가 읽을 수 있는 코드들 또는 프로그램 명령들로서 컴퓨터가 읽을 수 있는 기록 매체 상에 저장될 수 있다. 여기서 컴퓨터가 읽을 수 있는 기록 매체로 마그네틱 저장 매체(예컨대, ROM(read-only memory), RAM(random-Access memory), 플로피 디스크, 하드 디스크 등) 및 광학적 판독 매체(예컨대, 시디롬(CD-ROM), 디브이디(DVD: Digital Versatile Disc)) 등이 있다. 컴퓨터가 읽을 수 있는 기록 매체는 네트워크로 연결된 컴퓨터 시스템들에 분산되어, 분산 방식으로 컴퓨터가 판독 가능한 코드가 저장되고 실행될 수 있다. 매체는 컴퓨터에 의해 판독가능하며, 메모리에 저장되고, 프로세서에서 실행될 수 있다.
본 실시 예는 기능적인 블록 구성들 및 다양한 처리 단계들로 나타내어질 수 있다. 이러한 기능 블록들은 특정 기능들을 실행하는 다양한 개수의 하드웨어 또는/및 소프트웨어 구성들로 구현될 수 있다. 예를 들어, 실시 예는 하나 이상의 마이크로프로세서들의 제어 또는 다른 제어 장치들에 의해서 다양한 기능들을 실행할 수 있는, 메모리, 프로세싱, 로직(logic), 룩 업 테이블(look-up table) 등과 같은 직접 회로 구성들을 채용할 수 있다. 구성 요소들이 소프트웨어 프로그래밍 또는 소프트웨어 요소들로 실행될 수 있는 것과 유사하게, 본 실시 예는 데이터 구조, 프로세스들, 루틴들 또는 다른 프로그래밍 구성들의 조합으로 구현되는 다양한 알고리즘을 포함하여, C, C++, 자바(Java), 어셈블러(assembler) 등과 같은 프로그래밍 또는 스크립팅 언어로 구현될 수 있다. 기능적인 측면들은 하나 이상의 프로세서들에서 실행되는 알고리즘으로 구현될 수 있다. 또한, 본 실시 예는 전자적인 환경 설정, 신호 처리, 및/또는 데이터 처리 등을 위하여 종래 기술을 채용할 수 있다. “매커니즘”, “요소”, “수단”, “구성”과 같은 용어는 넓게 사용될 수 있으며, 기계적이고 물리적인 구성들로서 한정되는 것은 아니다. 상기 용어는 프로세서 등과 연계하여 소프트웨어의 일련의 처리들(routines)의 의미를 포함할 수 있다.
전술한 실시 예들은 일 예시일 뿐 후술하는 청구항들의 범위 내에서 다른 실시 예들이 구현될 수 있다.

Claims (11)

  1. 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법에 있어서,
    제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 액션 데이터는 상기 생성된 구문 트리의 시계열적 정보와 관련된,
    시드 파일 생성 방법.
  2. 제1항에 있어서,
    상기 구문 트리를 생성하는 단계는,
    상기 제1 시드 파일의 형식에 대응하여 기지정된 추상 구문 표현 언어(abstract syntax description language, ASDL)를 기반으로 상기 제1 시드 파일에 대한 구문 트리를 생성하는 단계를 포함하는,
    시드 파일 생성 방법.
  3. 제1항에 있어서,
    상기 구문 트리는 상기 구문 트리의 구조와 구분되는 데이터 값이 생략된
    시드 파일 생성 방법.
  4. 제3항에 있어서,
    상기 구조와 구분되는 데이터 값은, 숫자, 행렬값, 문자열, 벡터, 배열 및 단어 중 적어도 하나를 포함하는,
    시드 파일 생성 방법.
  5. 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법에 있어서,
    제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 액션 데이터를 생성하는 단계는,
    상기 구문 트리를 전위 순회함에 기초하여, 상기 구문 트리의 각 노드에 대응하는 액션 타입과 부모 노드에 대한 정보를 확인하는 단계와,
    상기 액션 타입과 상기 부모 노드에 대한 정보를 각 노드 별로 매칭시킴에 기초하여 상기 액션 데이터를 생성하는 단계를 포함하고,
    상기 액션 타입은 노드의 특성과 관련된,
    시드 파일 생성 방법.
  6. 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법에 있어서,
    제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 액션 데이터를 생성하는 단계는,
    상기 제1 시드 파일에 대응하는 액션 데이터 중 적어도 일부를 선택하여 기지정된 크기의 액션 데이터를 생성하는 단계를 포함하는,
    시드 파일 생성 방법.
  7. 삭제
  8. 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법에 있어서,
    제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 제2 시드 파일을 생성하는 단계는,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 구조가 변경된 구문 트리를 획득하는 단계와,
    상기 획득된 구문 트리와 기저장된 데이터를 이용하여 상기 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기저장된 데이터는 구조와 구분되는 데이터 값을 포함하는,
    시드 파일 생성 방법.
  9. 제1항에 있어서,
    상기 기계학습 알고리즘은, LSTM(long short term memory), Seq2Seq(sequence to sequence), GAN(generative adversarial network), RNN(recurrent neural network), 및 C-RNN-GAN 중 적어도 하나를 포함하는,
    시드 파일 생성 방법.
  10. 소프트웨어 취약점 점검을 위한 시드 파일 생성 장치에 있어서,
    제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 구문 트리 생성부와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 액션 데이터 생성부와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 시드 파일 생성부를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 액션 데이터는 상기 생성된 구문 트리의 시계열적 정보와 관련된 것을 특징으로 하는, 시드 파일 생성 장치.
  11. 제1 시드 파일을 확인함에 기초하여 상기 제1 시드 파일에 대한 구문 트리(syntax tree)를 생성하는 단계와,
    상기 생성된 구문 트리의 구조와 노드(node)에 대한 정보를 포함하는 액션 데이터를 생성하는 단계와,
    상기 생성된 액션 데이터를 기계학습 알고리즘에 적용함에 기초하여 제2 시드 파일을 생성하는 단계를 포함하고,
    상기 기계학습 알고리즘은 기획득된 복수의 구문 트리 각각에 대한 액션 데이터를 기초로 학습되며,
    상기 액션 데이터는 상기 생성된 구문 트리의 시계열적 정보와 관련된 것을 특징으로 하는, 소프트웨어의 취약점 점검을 위한 시드 파일 생성 방법을 컴퓨터에서 실행시키기 위한 프로그램을 기록한 컴퓨터로 읽을 수 있는 비일시적 기록매체.
KR1020200104094A 2020-08-19 2020-08-19 시드 파일 생성 장치 및 그 방법 KR102374034B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020200104094A KR102374034B1 (ko) 2020-08-19 2020-08-19 시드 파일 생성 장치 및 그 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020200104094A KR102374034B1 (ko) 2020-08-19 2020-08-19 시드 파일 생성 장치 및 그 방법

Publications (2)

Publication Number Publication Date
KR20220022752A KR20220022752A (ko) 2022-02-28
KR102374034B1 true KR102374034B1 (ko) 2022-03-15

Family

ID=80497237

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200104094A KR102374034B1 (ko) 2020-08-19 2020-08-19 시드 파일 생성 장치 및 그 방법

Country Status (1)

Country Link
KR (1) KR102374034B1 (ko)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110232280A (zh) * 2019-06-20 2019-09-13 北京理工大学 一种基于树结构卷积神经网络的软件安全漏洞检测方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110232280A (zh) * 2019-06-20 2019-09-13 北京理工大学 一种基于树结构卷积神经网络的软件安全漏洞检测方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ZIYI CAI 외 2명, ‘An Abstract Syntax Tree Encoding Method for Cross-Project Defect Prediction’, IEEE Access Volume: 7, 2019.11.15.*
장용준 외 1인, ‘딥러닝을 활용한 퍼징 시드 파일 생성 기법’, 한국정보과학회 2019 한국컴퓨터종합학술대회 논문집, 2019.06.30.*

Also Published As

Publication number Publication date
KR20220022752A (ko) 2022-02-28

Similar Documents

Publication Publication Date Title
US11334692B2 (en) Extracting a knowledge graph from program source code
CN111708539B (zh) 一种应用程序代码转换方法、装置、电子设备和存储介质
CN111026470B (zh) 用于输入数据的验证和转换的系统和方法
CN106970820B (zh) 代码存储方法及代码存储装置
US20180136914A1 (en) Programming Language with Extensions using a Strict Meta-Model
CN111190594B (zh) Vue组件的文档生成方法及装置
CN110990273B (zh) 克隆代码检测方法及装置
US10824401B2 (en) Method and system for automated creation of graphical user interfaces
WO2018141140A1 (zh) 一种语义识别方法和装置
US10855717B1 (en) Systems and methods of intelligent and directed dynamic application security testing
CN109739494B (zh) 一种基于Tree-LSTM的API使用代码生成式推荐方法
CN104598232B (zh) 一种Web应用跨设备捕捉‑回放方法
US20120110444A1 (en) Help Document Animated Visualization
CN112154420B (zh) 自动智能云服务测试工具
EP3717999A1 (en) Synthesized programming-by-example programs
Lande et al. GPT Semantic Networking: A Dream of the Semantic Web–The Time is Now
Klinbua et al. Translating tosca into docker-compose yaml file using antlr
KR102374034B1 (ko) 시드 파일 생성 장치 및 그 방법
US20170371852A1 (en) System and method for in-browser editing
CN116893809A (zh) 用于代码可解释性的代码富集的方法、存储介质和系统
KR102610431B1 (ko) 인공지능 분석 기반 프로그램 소스코드의 요약문 생성 장치 및 방법
CN110362317A (zh) 一种代码转换方法、装置和存储介质
US10706215B2 (en) Producing formula representations of mathematical text
CN112988136B (zh) 一种用户界面编辑方法及装置
US20240004619A1 (en) Using indentation to trim output of a language synthesis model

Legal Events

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