KR102074909B1 - 소프트웨어 취약점 분류 장치 및 방법 - Google Patents

소프트웨어 취약점 분류 장치 및 방법 Download PDF

Info

Publication number
KR102074909B1
KR102074909B1 KR1020190110679A KR20190110679A KR102074909B1 KR 102074909 B1 KR102074909 B1 KR 102074909B1 KR 1020190110679 A KR1020190110679 A KR 1020190110679A KR 20190110679 A KR20190110679 A KR 20190110679A KR 102074909 B1 KR102074909 B1 KR 102074909B1
Authority
KR
South Korea
Prior art keywords
vulnerability
classification
model
vulnerability classification
software
Prior art date
Application number
KR1020190110679A
Other languages
English (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 KR1020190110679A priority Critical patent/KR102074909B1/ko
Application granted granted Critical
Publication of KR102074909B1 publication Critical patent/KR102074909B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • 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
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Health & Medical Sciences (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Virology (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

소프트웨어 취약점 분류 장치 및 방법이 개시된다. 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치는, 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델을 저장하는 모델 저장부; 상기 복수의 취약점 분류 모델 중 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 모델 결정부; 및 상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 취약점 분석부를 포함한다.

Description

소프트웨어 취약점 분류 장치 및 방법{APPARATUS AND METHOD FOR CLASSIFYING SOFTWARE VULNERABILITY}
본 발명의 실시예들은 소프트웨어 취약점 분석 기술과 관련된다.
소프트웨어 바이너리의 취약 여부를 예측하기 위해 퍼징(fuzzing)과 기호 실행(symbolic execution) 등과 같이 다양한 기법이 사용되고 있다. 하지만, 이러한 종래 기법들은 탐지 시간이 많이 소요되므로 상황에 따라 오버헤드가 발생할 수 있으며, 전문가 수준의 데이터에 대한 이해가 필요한 단점이 있다.
이러한 단점을 개선하고자 머신 러닝(machine learning) 또는 딥 러닝(deep learning) 알고리즘을 이용해 소프트웨어 바이너리의 취약점을 분석 및 분류하는 연구가 현재 진행되고 있지만 기존 연구들 또한 여러 문제점이 있다.
첫 번째로 학습 데이터의 양에 따라 머신 러닝과 딥 러닝 알고리즘의 성능 차이가 있다. 예를 들어, 딥 러닝은 인간의 뇌처럼 데이터 특징을 스스로 처리하고 학습한 데이터의 양이 많을수록 가장 일반적인 모델을 만들어 정확도를 높인다. 하지만 전통적인 머신 러닝의 경우 인간이 일일이 학습할 데이터 특징을 알려주므로 딥 러닝보다 비교적 높은 정확도를 가지는 구간이 존재한다. 따라서, 대체로 데이터의 양이 적다면 머신 러닝 성능이 더 우수하고, 데이터의 양이 많다면 딥 러닝 성능이 더 우수하다.
두 번째로 지도학습 알고리즘의 경우 데이터의 종류를 명시하는 라벨(label) 데이터가 있어야 하는데, 데이터 셋마다 라벨 데이터가 있을 수도, 없을 수도 있기 때문에 없다면 데이터에 라벨을 일일이 붙이거나 비지도 학습(unsupervised learning) 알고리즘을 새로 구현해야 하는 어려움이 존재한다.
그리고 마지막으로 단일 알고리즘과 단일 데이터 셋은 하나의 학습모델을 생성하는데, 이는 검증할 바이너리가 데이터 셋과 소프트웨어 종류가 다르다면 예측 정확도가 떨어지고 이를 해결하기 위해 여러 데이터 셋을 하나로 합쳐 학습 모델을 만들면 복잡하고 일반적이지 않은 모델이 생성되어 정확도가 하락하는 과적합(overfitting) 문제가 발생할 수 있다.
대한민국 등록특허 제10-1963756호 (2019.03.29. 공고)
본 발명의 실시예들은 소프트웨어 취약점 분류 장치 및 방법을 제공하기 위한 것이다.
본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치는, 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델을 저장하는 모델 저장부; 상기 복수의 취약점 분류 모델 중 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 모델 결정부; 및 상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 취약점 분석부를 포함한다.
상기 모델 결정부는, 상기 소프트웨어 바이너리 파일과 상기 복수의 취약점 데이터 셋 각각 사이의 유사도 및 상기 복수의 취약점 분류 모델 각각의 분류 정확도 중 적어도 하나에 기초하여 상기 취약점 분류를 위해 이용할 취약점 분류 모델을 결정할 수 있다.
상기 모델 결정부는, 상기 복수의 취약점 분류 모델 중 상기 유사도가 가장 높은 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 결정하고, 상기 하나 이상의 취약점 분류 모델 중 상기 분류 정확도가 가장 높은 취약점 분류 모델을 상기 취약점 분류를 위해 이용할 취약점 분류 모델로 결정할 수 있다.
상기 복수의 학습 알고리즘은, 랜덤 포레스트(random forest) 알고리즘, 소프트맥스 회귀(softmax regression) 및 CNN(Convolutional Neural Network) 알고리즘 중 적어도 하나를 포함할 수 있다.
상기 복수의 취약점 데이터 셋 중 사용자에 의해 선택된 데이터 셋 및 상기 복수의 학습 알고리즘 중 상기 사용자에 의해 선택된 학습 알고리즘을 이용한 학습을 통해 상기 복수의 취약점 분류 모델을 생성하는 모델 생성부를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 방법은, 취약점 분류 대상인 소프트웨어 바이너리 파일을 입력받는 단계; 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델 중 상기 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 단계; 및 상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 단계를 포함한다.
상기 결정하는 단계는, 상기 소프트웨어 바이너리 파일과 상기 복수의 취약점 데이터 셋 각각 사이의 유사도 및 상기 복수의 취약점 분류 모델 각각의 분류 정확도 중 적어도 하나에 기초하여 상기 취약점 분류를 위해 이용할 취약점 분류 모델을 결정할 수 있다.
상기 결정하는 단계는, 상기 복수의 취약점 분류 모델 중 상기 유사도가 가장 높은 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 결정하고, 상기 하나 이상의 취약점 분류 모델 중 상기 분류 정확도가 가장 높은 취약점 분류 모델을 상기 취약점 분류를 위해 이용할 취약점 분류 모델로 결정할 수 있다.
상기 복수의 학습 알고리즘은, 랜덤 포레스트(random forest) 알고리즘, 소프트맥스 회귀(softmax regression) 및 CNN(Convolutional Neural Network) 알고리즘 중 적어도 하나를 포함할 수 있다.
상기 입력받는 단계 이전에, 상기 복수의 취약점 데이터 셋 중 사용자에 의해 선택된 데이터 셋 및 상기 복수의 학습 알고리즘 중 상기 사용자에 의해 선택된 학습 알고리즘을 이용한 학습을 통해 상기 복수의 취약점 분류 모델을 생성하는 단계를 더 포함할 수 있다.
본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치는, 하나 이상의 프로세서; 메모리; 및 하나 이상의 프로그램을 포함하는 장치로서, 상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며, 상기 하나 이상의 프로그램은, 취약점 분류 대상인 소프트웨어 바이너리 파일을 입력받는 단계; 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델 중 상기 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 단계; 및 상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 단계를 실행하기 위한 명령어들을 포함한다.
본 발명의 실시예들에 따르면, 취약점 분류 대상인 소프트웨어 바이너리 파일에 따라 각각 상이한 학습 데이터 셋과 학습 알고리즘을 통해 생성된 복수의 취약점 분류 모델 중 하나를 선택하여 취약점 분류를 수행함으로써, 단일 학습 알고리즘과 단일 학습 데이터 셋 사용으로 인한 과적합 문제를 해결함과 동시에 취약점 분류의 정확성을 향상시킬 수 있다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치의 구성도
도 2는 본 발명의 추가적인 실시예에 따른 소프트웨어 취약점 분류 장치의 구성도
도 3은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 모델 생성 방법을 나타낸 순서도
도 4는 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 방법의 순서도
도 5는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도
이하, 도면을 참조하여 본 발명의 구체적인 실시형태를 설명하기로 한다. 이하의 상세한 설명은 본 명세서에서 기술된 방법, 장치 및/또는 시스템에 대한 포괄적인 이해를 돕기 위해 제공된다. 그러나 이는 예시에 불과하며 본 발명은 이에 제한되지 않는다.
본 발명의 실시예들을 설명함에 있어서, 본 발명과 관련된 공지기술에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우에는 그 상세한 설명을 생략하기로 한다. 그리고, 후술되는 용어들은 본 발명에서의 기능을 고려하여 정의된 용어들로서 이는 사용자, 운용자의 의도 또는 관례 등에 따라 달라질 수 있다. 그러므로 그 정의는 본 명세서 전반에 걸친 내용을 토대로 내려져야 할 것이다. 상세한 설명에서 사용되는 용어는 단지 본 발명의 실시예들을 기술하기 위한 것이며, 결코 제한적이어서는 안 된다. 명확하게 달리 사용되지 않는 한, 단수 형태의 표현은 복수 형태의 의미를 포함한다. 본 설명에서, "포함" 또는 "구비"와 같은 표현은 어떤 특성들, 숫자들, 단계들, 동작들, 요소들, 이들의 일부 또는 조합을 가리키기 위한 것이며, 기술된 것 이외에 하나 또는 그 이상의 다른 특성, 숫자, 단계, 동작, 요소, 이들의 일부 또는 조합의 존재 또는 가능성을 배제하도록 해석되어서는 안 된다.
도 1은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치의 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치(100)는 모델 저장부(110), 모델 결정부(120) 및 취약점 분석부(130)를 포함한다.
모델 저장부(110)는 복수의 취약점 분류 모델을 저장한다.
이때, 취약점 분류 모델은 소프트웨어 바이너리 파일에 포함된 취약점을 사전에 알려진 복수의 취약점 중 하나로 분류한 결과를 출력하도록 학습된 분류 모델을 의미한다.
구체적으로, 모델 저장부(110)에 저장된 각 취약점 분류 모델은 복수의 취약점 데이터 셋(data set) 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성될 수 있다.
이때, 각 취약점 데이터 셋은 예를 들어, KISA(Korean Internet & Security Agency), NIST(National Institute of Standards and Technology), ITC benchmark 등과 같이 알려진 소프트웨어 취약점에 대한 정보를 제공하는 다양한 종류의 공개된 데이터베이스로부터 획득될 수 있다. 또한, 각 취약점 데이터 셋은 예를 들어, 복수의 바이너리 파일 및 각 바이너리 파일에 포함된 취약점에 대한 분류 결과를 나타내는 라벨 데이터를 포함할 수 있다.
한편, 복수의 학습 알고리즘은 예를 들어, 랜덤 포레스트(random forest) 알고리즘, 소프트맥스 회귀(softmax regression) 알고리즘 및 CNN(Convolutional Neural Network) 알고리즘 중 적어도 하나를 포함할 수 있으나, 반드시 이에 한정되는 것은 아니며 상술한 예 외에도 다양한 종류의 기계 학습(machine learning) 모델을 포함할 수 있다.
한편, 모델 저장부(110)에 저장된 복수의 취약점 분류 모델은 각각 상이한 취약점 데이터 셋 및 상이한 학습 알고리즘을 이용하여 생성될 수 있다. 예를 들어, 복수의 취약점 데이터 셋이 데이터 셋 a 및 데이터 셋 b를 포함하고, 복수의 학습 알고리즘이 알고리즘 A 및 알고리즘 B를 포함하는 것으로 가정하면, 모델 저장부(110)에 저장되는 학습 모델은 예를 들어, 데이터 셋 a와 알고리즘 A를 이용한 학습을 통해 생성된 취약점 분류 모델 1, 데이터 셋 a와 알고리즘 B를 이용한 학습을 통해 생성된 취약점 분류 모델 2, 데이터 셋 b와 알고리즘 A를 이용한 학습을 통해 생성된 취약점 분류 모델 3 및 데이터 셋 b와 알고리즘 B를 이용한 학습을 통해 생성된 취약점 분류 모델 4 중 적어도 하나를 포함할 수 있다.
모델 결정부(120)는 모델 저장부(110)에 저장된 복수의 취약점 분류 모델 중 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정한다.
구체적으로, 모델 결정부(120)는 취약점 분류 대상인 소프트웨어 바이너리 파일과 복수의 취약점 분류 모델 각각의 생성을 위해 이용된 복수의 취약점 데이터 셋 각각 사이의 유사도 및 복수의 취약점 분류 모델 각각의 분류 정확도 중 적어도 하나에 기초하여 취약점 분류 모델을 결정할 수 있다. 예를 들어, 모델 결정부(120)는 모델 저장부(110)에 저장된 복수의 취약점 분류 모델 중 취약점 분류 대상인 소프트웨어 바이너리 파일과의 유사도가 가장 높은 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 선택할 수 있다. 이후, 모델 결정부(120)는 선택된 하나 이상의 취약점 분류 모델 중 분류 정확도가 가장 높은 취약점 분류 모델을 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델로 결정할 수 있다.
구체적인 예로, 모델 결정부(120)는 취약점 분류 대상 소프트웨어 바이너리 파일에서 추출된 특징 벡터와 각 취약점 데이터 셋에 포함된 각 바이너리 파일로부터 추출된 특징 벡터 사이의 코사인 유사도(cosine similarity)를 산출할 수 있다. 이때, 특징 벡터는 예를 들어, 바이너리 파일을 기 설정된 크기의 이미지 데이터로 변환한 후 변환된 이미지 데이터로부터 추출된 특징 값들을 포함하는 벡터일 수 있다.
한편, 모델 결정부(120)는 모델 저장부(110)에 저장된 복수의 취약점 분류 모델 중 예를 들어, 산출된 코사인 유사도가 가장 높은 바이너리 파일을 포함하는 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 선택하고, 선택된 하나 이상의 취약점 분류 모델 중 분류 정확도가 가장 높은 취약점 분류 모델을 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델로 결정할 수 있다.
한편, 모델 저장부(110)에 저장된 각 취약점 분류 모델의 분류 정확도는 각 취약점 분류 모델의 생성을 위한 학습 과정에서 사전 산출될 수 있다.
취약점 분석부(130)는 모델 결정부(120)에 의해 선택된 취약점 분류 모델을 이용하여 소프트웨어 바이너리 파일에 포함된 취약점을 분류한다.
이때, 취약점 분석부(130)는 취약점 분류 대상인 소프트웨어 바이너리 파일을 변환하여 생성된 기 설정된 크기의 이미지 데이터를 선택된 취약점 분류 모델의 입력으로 이용할 수 있으며, 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 다양한 전처리 과정을 수행할 수 있다.
도 2는 본 발명의 추가적인 실시예에 따른 소프트웨어 취약점 분류 장치의 구성도이다.
도 2를 참조하면, 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 장치(100)는 모델 저장부(210), 모델 결정부(220), 취약점 분석부(230) 및 모델 생성부(240)를 포함한다.
도 2에 도시된 예에서, 모델 저장부(210), 모델 결정부(220) 및 취약점 분석부(230)는 각각 도 1에 도시된 모델 저장부(110), 모델 결정부(120) 및 취약점 분석부(130)와 동일한 구성이므로, 이에 대한 중복적인 설명은 생략한다.
모델 생성부(240)는 복수의 취약점 분류 모델을 생성하고, 생성된 각 취약점 분류 모델을 모델 저장부(210)에 저장한다.
구체적으로, 모델 생성부(240)는 사용자로부터 복수의 취약점 데이터 셋 및 복수의 학습 알고리즘 중 취약점 분류 모델 생성을 위해 이용할 취약점 데이터 셋과 학습 알고리즘을 선택 받을 수 있다. 이때, 복수의 취약점 데이터 셋 및 복수의 학습 알고리즘은 사용자에 의해 추가 또는 삭제될 수 있다.
한편, 사용자에 의해 취약점 데이터 셋 및 학습 알고리즘이 선택된 경우, 모델 생성부(240)는 선택된 학습 알고리즘을 이용하여 선택된 취약점 데이터 셋에 포함된 학습 데이터들을 학습함으로써 취약점 분류 모델을 생성할 수 있다.
이때, 학습 데이터는 바이너리 파일과 해당 바이너리 파일에 대한 라벨 데이터(예를 들어, 취약점 분류 결과)를 포함할 수 있다. 또한, 모델 생성부(240)는 예를 들어, 선택된 취약점 데이터 셋에 포함된 각 학습 데이터의 바이너리 파일을 취약점 분류 모델의 입력 값으로 이용하고, 해당 바이너리 파일에 대한 라벨 데이터를 취약점 분류 모델의 목표 값으로 이용한 지도 학습 기법을 통해 취약점 분류 모델을 학습 시킬 수 있다.
한편, 모델 생성부(240)는 실시예에 따라, 학습 데이터에 포함된 바이너리 파일을 기 설정된 크기의 이미지 데이터로 변환한 후, 변환된 이미지 데이터를 취약점 분류 모델의 입력으로 이용할 수 있으며, 이 외에도 학습 데이터에 대한 다양한 전처리 과정을 수행할 수 있다.
한편, 취약점 분류 모델이 생성된 경우, 모델 생성부(240)는 생성된 취약점 분류 모델에 대한 분류 정확도를 산출할 수 있으며, 산출된 분류 정확도를 취약점 분류 모델과 함께 모델 저장부(210)에 저장할 수 있다.
이때, 정확도는 예를 들어, 아래의 수학식 1에 따라 산출될 수 있으나 정확도 산출 방식이 반드시 특정한 방식으로 한정되는 것은 아니다.
[수학식 1]
Accuracy=C/T×100
이때, T는 취약점 데이터 셋에 포함된 학습 데이터의 총 개수, C는 취약점 데이터 셋에 포함된 학습 데이터 중 취약점 분류 모델의 취약점 분류 결과와 라벨 데이터가 일치한 학습 데이터의 총 개수를 나타낸다.
도 3은 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 모델 생성 방법을 나타낸 순서도이다.
도 3에 도시된 방법은 예를 들어, 도 2에 도시된 소프트웨어 취약점 분류 장치(200)에 의해 수행될 수 있다.
도 3을 참조하면, 우선, 소프트웨어 취약점 분류 장치(200)는 복수의 취약점 데이터 셋 및 복수의 학습 알고리즘 중 취약점 분류 모델 생성을 위해 이용할 취약점 데이터 셋 및 학습 알고리즘을 선택한다(310).
이때, 취약점 데이터 셋 및 학습 알고리즘의 선택은 예를 들어, 사용자의 입력에 따라 수행될 수 있다. 이를 위해 소프트웨어 취약점 분류 장치(200)는 선택 가능한 취약점 데이터 셋과 학습 알고리즘의 리스트를 제공하고, 제공된 리스트에서 취약점 데이터 셋과 학습 알고리즘을 선택할 수 있도록 하는 사용자 인터페이스를 사용자에게 제공할 수 있다.
한편, 취약점 데이터 셋 및 학습 알고리즘이 선택된 경우, 소프트웨어 취약점 분류 장치(200)는 선택된 취약점 데이터 셋 및 학습 알고리즘을 이용한 학습을 통해 취약점 분류 모델을 생성한다(320).
도 4는 본 발명의 일 실시예에 따른 소프트웨어 취약점 분류 방법의 순서도이다.
도 4에 도시된 방법은 예를 들어, 도 1 또는 도 2에 도시된 소프트웨어 취약점 분류 장치(100, 200)에 의해 수행될 수 있다.
도 4를 참조하면, 우선, 소프트웨어 취약점 분류 장치(100, 200)는 취약점 분류 대상인 소프트웨어 바이너리 파일을 입력받는다(410).
이후, 소프트웨어 취약점 분류 장치(100, 200)는 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델 중 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정한다(420).
이때, 일 실시예에 따르면, 소프트웨어 취약점 분류 장치(100, 200)는 입력된 소프트웨어 바이너리 파일과 복수의 취약점 데이터 셋 각각 사이의 유사도 및 복수의 취약점 분류 모델 각각의 분류 정확도 중 적어도 하나에 기초하여 취약점 분류를 위해 이용할 취약점 분류 모델을 결정할 수 있다.
이후, 소프트웨어 취약점 분류 장치(100, 200)는 결정된 취약점 분류 모델을 이용하여, 입력된 소프트웨어 바이너리 파일에 포함된 취약점을 분류한다(430).
한편, 도 3 및 도 4에 도시된 순서도에서는 상기 방법을 복수 개의 단계로 나누어 기재하였으나, 적어도 일부의 단계들은 순서를 바꾸어 수행되거나, 다른 단계와 결합되어 함께 수행되거나, 생략되거나, 세부 단계들로 나뉘어 수행되거나, 또는 도시되지 않은 하나 이상의 단계가 부가되어 수행될 수 있다.
도 5는 예시적인 실시예들에서 사용되기에 적합한 컴퓨팅 장치를 포함하는 컴퓨팅 환경을 예시하여 설명하기 위한 블록도이다. 도시된 실시예에서, 각 컴포넌트들은 이하에 기술된 것 이외에 상이한 기능 및 능력을 가질 수 있고, 이하에 기술되지 않은 것 이외에도 추가적인 컴포넌트를 포함할 수 있다.
도시된 컴퓨팅 환경(10)은 컴퓨팅 장치(12)를 포함한다. 일 실시예에서, 컴퓨팅 장치(12)는 도 1 또는 도 2에 도시된 소프트웨어 취약점 분류 장치(100, 200)에 포함되는 하나 이상의 컴포넌트일 수 있다.
컴퓨팅 장치(12)는 적어도 하나의 프로세서(14), 컴퓨터 판독 가능 저장 매체(16) 및 통신 버스(18)를 포함한다. 프로세서(14)는 컴퓨팅 장치(12)로 하여금 앞서 언급된 예시적인 실시예에 따라 동작하도록 할 수 있다. 예컨대, 프로세서(14)는 컴퓨터 판독 가능 저장 매체(16)에 저장된 하나 이상의 프로그램들을 실행할 수 있다. 상기 하나 이상의 프로그램들은 하나 이상의 컴퓨터 실행 가능 명령어를 포함할 수 있으며, 상기 컴퓨터 실행 가능 명령어는 프로세서(14)에 의해 실행되는 경우 컴퓨팅 장치(12)로 하여금 예시적인 실시예에 따른 동작들을 수행하도록 구성될 수 있다.
컴퓨터 판독 가능 저장 매체(16)는 컴퓨터 실행 가능 명령어 내지 프로그램 코드, 프로그램 데이터 및/또는 다른 적합한 형태의 정보를 저장하도록 구성된다. 컴퓨터 판독 가능 저장 매체(16)에 저장된 프로그램(20)은 프로세서(14)에 의해 실행 가능한 명령어의 집합을 포함한다. 일 실시예에서, 컴퓨터 판독 가능 저장 매체(16)는 메모리(랜덤 액세스 메모리와 같은 휘발성 메모리, 비휘발성 메모리, 또는 이들의 적절한 조합), 하나 이상의 자기 디스크 저장 디바이스들, 광학 디스크 저장 디바이스들, 플래시 메모리 디바이스들, 그 밖에 컴퓨팅 장치(12)에 의해 액세스되고 원하는 정보를 저장할 수 있는 다른 형태의 저장 매체, 또는 이들의 적합한 조합일 수 있다.
통신 버스(18)는 프로세서(14), 컴퓨터 판독 가능 저장 매체(16)를 포함하여 컴퓨팅 장치(12)의 다른 다양한 컴포넌트들을 상호 연결한다.
컴퓨팅 장치(12)는 또한 하나 이상의 입출력 장치(24)를 위한 인터페이스를 제공하는 하나 이상의 입출력 인터페이스(22) 및 하나 이상의 네트워크 통신 인터페이스(26)를 포함할 수 있다. 입출력 인터페이스(22) 및 네트워크 통신 인터페이스(26)는 통신 버스(18)에 연결된다. 입출력 장치(24)는 입출력 인터페이스(22)를 통해 컴퓨팅 장치(12)의 다른 컴포넌트들에 연결될 수 있다. 예시적인 입출력 장치(24)는 포인팅 장치(마우스 또는 트랙패드 등), 키보드, 터치 입력 장치(터치패드 또는 터치스크린 등), 음성 또는 소리 입력 장치, 다양한 종류의 센서 장치 및/또는 촬영 장치와 같은 입력 장치, 및/또는 디스플레이 장치, 프린터, 스피커 및/또는 네트워크 카드와 같은 출력 장치를 포함할 수 있다. 예시적인 입출력 장치(24)는 컴퓨팅 장치(12)를 구성하는 일 컴포넌트로서 컴퓨팅 장치(12)의 내부에 포함될 수도 있고, 컴퓨팅 장치(12)와는 구별되는 별개의 장치로 컴퓨팅 장치(12)와 연결될 수도 있다.
이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자는 전술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
10: 컴퓨팅 환경
12: 컴퓨팅 장치
14: 프로세서
16: 컴퓨터 판독 가능 저장 매체
18: 통신 버스
20: 프로그램
22: 입출력 인터페이스
24: 입출력 장치
26: 네트워크 통신 인터페이스
100, 200: 소프트웨어 취약점 분류 장치
110: 210: 모델 저장부
120, 220: 모델 결정부
130, 230: 취약점 분석부
240: 모델 생성부

Claims (11)

  1. 각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델을 저장하는 모델 저장부;
    상기 복수의 취약점 분류 모델 중 취약점 분류 대상인 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 모델 결정부; 및
    상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 취약점 분석부를 포함하고,
    상기 모델 결정부는, 상기 소프트웨어 바이너리 파일과 상기 복수의 취약점 데이터 셋 각각 사이의 유사도 및 상기 복수의 취약점 분류 모델 각각의 분류 정확도에 기초하여 상기 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 소프트웨어 취약점 분류 장치.
  2. 삭제
  3. 청구항 1에 있어서,
    상기 모델 결정부는, 상기 복수의 취약점 분류 모델 중 상기 유사도가 가장 높은 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 결정하고, 상기 하나 이상의 취약점 분류 모델 중 상기 분류 정확도가 가장 높은 취약점 분류 모델을 상기 취약점 분류를 위해 이용할 취약점 분류 모델로 결정하는 소프트웨어 취약점 분류 장치.
  4. 청구항 1에 있어서,
    상기 복수의 학습 알고리즘은, 랜덤 포레스트(random forest) 알고리즘, 소프트맥스 회귀(softmax regression) 및 CNN(Convolutional Neural Network) 알고리즘 중 적어도 하나를 포함하는 소프트웨어 취약점 분류 장치.
  5. 청구항 1에 있어서,
    상기 복수의 취약점 데이터 셋 중 사용자에 의해 선택된 데이터 셋 및 상기 복수의 학습 알고리즘 중 상기 사용자에 의해 선택된 학습 알고리즘을 이용한 학습을 통해 상기 복수의 취약점 분류 모델을 생성하는 모델 생성부를 더 포함하는 소프트웨어 취약점 분류 장치.
  6. 취약점 분류 대상인 소프트웨어 바이너리 파일을 입력받는 단계;
    각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델 중 상기 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 단계; 및
    상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 단계를 포함하고,
    상기 결정하는 단계는, 상기 소프트웨어 바이너리 파일과 상기 복수의 취약점 데이터 셋 각각 사이의 유사도 및 상기 복수의 취약점 분류 모델 각각의 분류 정확도에 기초하여 상기 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 소프트웨어 취약점 분류 방법.
  7. 삭제
  8. 청구항 6에 있어서,
    상기 결정하는 단계는, 상기 복수의 취약점 분류 모델 중 상기 유사도가 가장 높은 취약점 데이터 셋을 이용하여 학습된 하나 이상의 취약점 분류 모델을 결정하고, 상기 하나 이상의 취약점 분류 모델 중 상기 분류 정확도가 가장 높은 취약점 분류 모델을 상기 취약점 분류를 위해 이용할 취약점 분류 모델로 결정하는 소프트웨어 취약점 분류 방법.
  9. 청구항 6에 있어서,
    상기 복수의 학습 알고리즘은, 랜덤 포레스트(random forest) 알고리즘, 소프트맥스 회귀(softmax regression) 및 CNN(Convolutional Neural Network) 알고리즘 중 적어도 하나를 포함하는 소프트웨어 취약점 분류 방법.
  10. 청구항 6에 있어서,
    상기 입력받는 단계 이전에, 상기 복수의 취약점 데이터 셋 중 사용자에 의해 선택된 데이터 셋 및 상기 복수의 학습 알고리즘 중 상기 사용자에 의해 선택된 학습 알고리즘을 이용한 학습을 통해 상기 복수의 취약점 분류 모델을 생성하는 단계를 더 포함하는 소프트웨어 취약점 분류 방법.
  11. 하나 이상의 프로세서;
    메모리; 및
    하나 이상의 프로그램을 포함하는 장치로서,
    상기 하나 이상의 프로그램은 상기 메모리에 저장되고 상기 하나 이상의 프로세서에 의해 실행되도록 구성되며,
    상기 하나 이상의 프로그램은,
    취약점 분류 대상인 소프트웨어 바이너리 파일을 입력받는 단계;
    각각 복수의 취약점 데이터 셋 중 하나와 복수의 학습 알고리즘 중 하나를 이용한 학습을 통해 생성된 복수의 취약점 분류 모델 중 상기 소프트웨어 바이너리 파일에 대한 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하되, 상기 소프트웨어 바이너리 파일과 상기 복수의 취약점 데이터 셋 각각 사이의 유사도 및 상기 복수의 취약점 분류 모델 각각의 분류 정확도에 기초하여 상기 취약점 분류를 위해 이용할 취약점 분류 모델을 결정하는 단계; 및
    상기 결정된 취약점 분류 모델을 이용하여 상기 소프트웨어 바이너리 파일에 포함된 취약점을 분류하는 단계를 실행하기 위한 명령어들을 포함하는 소프트웨어 취약점 분류 장치.
KR1020190110679A 2019-09-06 2019-09-06 소프트웨어 취약점 분류 장치 및 방법 KR102074909B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020190110679A KR102074909B1 (ko) 2019-09-06 2019-09-06 소프트웨어 취약점 분류 장치 및 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020190110679A KR102074909B1 (ko) 2019-09-06 2019-09-06 소프트웨어 취약점 분류 장치 및 방법

Publications (1)

Publication Number Publication Date
KR102074909B1 true KR102074909B1 (ko) 2020-02-07

Family

ID=69570117

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020190110679A KR102074909B1 (ko) 2019-09-06 2019-09-06 소프트웨어 취약점 분류 장치 및 방법

Country Status (1)

Country Link
KR (1) KR102074909B1 (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102313181B1 (ko) * 2020-10-29 2021-10-15 주식회사 디에스랩글로벌 딥러닝 솔루션 플랫폼을 제공하는 딥러닝 플랫폼 제공장치에 의해서 수행되는 딥러닝 솔루션 제공 방법
KR20220022322A (ko) * 2020-08-18 2022-02-25 세종대학교산학협력단 네트워크 공격 탐지 장치 및 방법
KR20220122149A (ko) * 2021-02-26 2022-09-02 고려대학교 산학협력단 프로그램 분석 장치 및 방법
KR20230082792A (ko) * 2021-12-02 2023-06-09 (주)트리니티소프트 소스코드 보안 취약점의 종류를 구별하는 인공지능 기반의 구별 모델의 생성을 통해 소스코드에 대한 보안 취약점의 종류를 확인할 수 있도록 지원하는 전자 장치 및 그 동작 방법
KR20230126423A (ko) 2022-02-23 2023-08-30 연세대학교 산학협력단 딥러닝 모델 취약성 검증 방법 및 장치

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101935261B1 (ko) * 2018-06-27 2019-01-04 한화시스템 주식회사 위험 자산 알림 시스템 및 이의 동작 방법
KR101963756B1 (ko) 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법
JP2019148917A (ja) * 2018-02-26 2019-09-05 エヌ・ティ・ティ・コミュニケーションズ株式会社 脆弱性判定システム、脆弱性判定方法及びコンピュータプログラム

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2019148917A (ja) * 2018-02-26 2019-09-05 エヌ・ティ・ティ・コミュニケーションズ株式会社 脆弱性判定システム、脆弱性判定方法及びコンピュータプログラム
KR101935261B1 (ko) * 2018-06-27 2019-01-04 한화시스템 주식회사 위험 자산 알림 시스템 및 이의 동작 방법
KR101963756B1 (ko) 2018-11-19 2019-03-29 세종대학교산학협력단 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
논문, 최민준 외, 기계학습 알고리즘을 이용한 소프트웨어 취약 여부 예측 시스템, 한국정보보호학회 28(3), 2018.6* *

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20220022322A (ko) * 2020-08-18 2022-02-25 세종대학교산학협력단 네트워크 공격 탐지 장치 및 방법
KR102369240B1 (ko) * 2020-08-18 2022-02-28 세종대학교산학협력단 네트워크 공격 탐지 장치 및 방법
KR102313181B1 (ko) * 2020-10-29 2021-10-15 주식회사 디에스랩글로벌 딥러닝 솔루션 플랫폼을 제공하는 딥러닝 플랫폼 제공장치에 의해서 수행되는 딥러닝 솔루션 제공 방법
KR20220122149A (ko) * 2021-02-26 2022-09-02 고려대학교 산학협력단 프로그램 분석 장치 및 방법
KR102491925B1 (ko) * 2021-02-26 2023-01-26 고려대학교 산학협력단 프로그램 분석 장치 및 방법
KR20230082792A (ko) * 2021-12-02 2023-06-09 (주)트리니티소프트 소스코드 보안 취약점의 종류를 구별하는 인공지능 기반의 구별 모델의 생성을 통해 소스코드에 대한 보안 취약점의 종류를 확인할 수 있도록 지원하는 전자 장치 및 그 동작 방법
KR102589350B1 (ko) 2021-12-02 2023-10-16 (주)트리니티소프트 소스코드 보안 취약점의 종류를 구별하는 인공지능 기반의 구별 모델의 생성을 통해 소스코드에 대한 보안 취약점의 종류를 확인할 수 있도록 지원하는 전자 장치 및 그 동작 방법
KR20230126423A (ko) 2022-02-23 2023-08-30 연세대학교 산학협력단 딥러닝 모델 취약성 검증 방법 및 장치

Similar Documents

Publication Publication Date Title
KR102074909B1 (ko) 소프트웨어 취약점 분류 장치 및 방법
US11790237B2 (en) Methods and apparatus to defend against adversarial machine learning
KR101963756B1 (ko) 소프트웨어 취약점 예측 모델 학습 장치 및 방법, 소프트웨어 취약점 분석 장치 및 방법
US11954202B2 (en) Deep learning based detection of malicious shell scripts
CN109376535B (zh) 一种基于智能化符号执行的漏洞分析方法及系统
JP2019192198A (ja) 悪意あるコンテナを検出するための機械学習モデルをトレーニングするシステムおよび方法
EP3916597A1 (en) Detecting malware with deep generative models
KR102191722B1 (ko) 딥러닝 모델의 취약점 판단 장치 및 방법
US12032711B2 (en) System and method for controlling confidential information
KR20210149530A (ko) 이미지 분류 모델 학습 방법 및 이를 수행하기 위한 장치
US20200118027A1 (en) Learning method, learning apparatus, and recording medium having stored therein learning program
CN115997218A (zh) 可证明鲁棒的能够解释的机器学习模型的系统
CN116361788A (zh) 一种基于机器学习的二进制软件漏洞预测方法
CN115221475A (zh) 以可扩展的方式对软件代码进行聚类
EP3605338B1 (en) Apparatus, program, & computer-implemented image processing method for predicting execution performance metrics
KR20200106108A (ko) 딥러닝 기반의 특허정보 워드임베딩 방법 및 그 시스템
CN111950579A (zh) 分类模型的训练方法和训练装置
US10402303B2 (en) Determining similarities in computer software codes for performance analysis
KR102413588B1 (ko) 학습 데이터에 따른 객체 인식 모델 추천 방법, 시스템 및 컴퓨터 프로그램
JP7349404B2 (ja) 判定装置、判定方法及び判定プログラム
US20210174910A1 (en) Method and apparatus for generating new chemical structure using neural network
CN114064891A (zh) 对抗文本生成方法、介质、装置和计算设备
Chen et al. MalAder: Decision-Based Black-Box Attack Against API Sequence Based Malware Detectors
CN112801226A (zh) 数据筛选方法和装置、计算机可读存储介质、电子设备
WO2020044413A1 (ja) 仮説推論装置、仮説推論方法、及びコンピュータ読み取り可能な記録媒体

Legal Events

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