기계학습을 이용한 소스코드 정적 분석 개선에 관한 연구
A Study on the Improvement of Source Code Static Analysis Using Machine Learning
0
조회
0
다운로드
2
인용
0
참고문헌
키워드
초록
소스코드에 대한 정적 분석은 광범위한 소스코드에 대해서 잔존하는 보안약점을 찾는 것으로 정적 분석 도구를활용하여 점검을 하고, 그 결과에 대해서 정적 분석 전문가가 정탐 및 오탐 분석을 한다. 이 과정에서 분석양이 많고 오탐의 비율이 높아 많은 시간과 노력이 들어가게 되어 효율적으로 분석하는 방안이 요구되고 있다. 또한 전문가들은 정·오탐 분석을 할 때 결함이 발생한 라인의 소스코드만 보고 분석을 하는 경우는 드물다. 결함의 유형에 따라서 주변의 소스코드를 같이 분석하고 최종 분석 결과를 내리게 된다. 이러한 정적 분석 도구를 사용하여 전문가가정·오탐을 판별하는 어려움을 해결하기 위해서 본 논문에서는 정적 분석 도구가 찾은 보안약점이 정탐인지 아닌지를전문가가 아닌 인공지능을 통해 판별하는 방법을 제안한다. 또한 이러한 기계학습에 사용되는 학습 데이터(결함주변소스코드)의 크기가 성능에 어떤 영향을 미치는지 실험을 통해 최적의 크기를 확인하였다. 이 결과를 통해 정적 분석 후 정·오탐을 분류하는 정적 분석 전문가의 업무에 도움을 줄 것으로 기대한다.
Abstract
The static analysis of the source code is to find the remaining security weaknesses for a wide range of source codes. The static analysis tool is used to check the result, and the static analysis expert performs spying and false detection analysis on the result. In this process, the amount of analysis is large and the rate of false positives is high, so a lot of time and effort is required, and a method of efficient analysis is required. In addition, it is rare for experts to analyze only the source code of the line where the defect occurred when performing positive/false detection analysis. Depending on the type of defect, the surrounding source code is analyzed together and the final analysis result is delivered. In order to solve the difficulty of experts discriminating positive and false positives using these static analysis tools, this paper proposes a method of determining whether or not the security weakness found by the static analysis tools is a spy detection through artificial intelligence rather than an expert. In addition, the optimal size was confirmed through an experiment to see how the size of the training data (source code around the defects) used for such machine learning affects the performance. This result is expected to help the static analysis expert's job of classifying positive and false positives after static analysis.
참고문헌 (12)
- "Software Assurance"[URL]
- "Google Plus Will Be Shut Down After User Information Was Exposed"[URL]
- "Coding Error Sends 2019 Subaru Ascents to the Car Crusher"[URL]
- Software Development Life Cycle and Static Analysis Tool, "Hongjun Choi", 818~819 (2019)
- "Software security weakness diagnosis guide for e-government software development security inspectors", 26~27 (2019)
- Martin White, "deep learning code fragments for code clone detection" (2016)
- A deep language model for software code, "Hoa Khanh Dam", ~ (2016)
- Program Synthesis from Natural Language Using Recurrent Neural Networks, "Xi Victoria Lin", ~ (2017)
- Rebecca L. Russell, "Automated Vulnerability Detection in Source Code Using Deep Representation Learning" (2018)
- 이원경, "소스코드 취약성 분류를 위한 기계학습 기법의 적용", 정보보호학회논문지, 30(4), pp.735~743 (2020), 한국정보보호학회[DOI]
- Youngho Lee, "A machin learning approach to the prediction of indifidual travel mode choices", pp.1011~1024 (2019)
- 방지호, "전자정부 소프트웨어의 보안약점 진단도구 평가방법론", 한국통신학회논문지C, 38(4), pp.335~343 (2013), 한국통신학회
