DOI QR코드

DOI QR Code

Detection of Source Code Security Vulnerabilities Using code2vec Model

code2vec 모델을 활용한 소스 코드 보안 취약점 탐지

  • 양준혁 (한양대학교 컴퓨터공학과) ;
  • 모지환 (한양대학교 소프트웨어학부) ;
  • 홍성문 (한양대학교 컴퓨터공학과) ;
  • 도경구 (한양대학교 소프트웨어학부)
  • Received : 2020.11.09
  • Accepted : 2020.12.21
  • Published : 2020.12.31

Abstract

Traditional methods of detecting security vulnerabilities in source-code require a lot of time and effort. If there is good data, the issue could be solved by using the data with machine learning. Thus, this paper proposes a source-code vulnerability detection method based on machine learning. Our method employs the code2vec model that has been used to propose the names of methods, and uses as a data set, Juliet Test Suite that is a collection of common security vulnerabilities. The evaluation shows that our method has high precision of 97.3% and recall rates of 98.6%. And the result of detecting vulnerabilities in open source project shows hopeful potential. In addition, it is expected that further progress can be made through studies covering with vulnerabilities and languages not addressed here.

소스 코드의 보안 취약점을 탐지하는 전통적인 방법은 많은 시간과 노력을 필요로 한다. 만약 보안 취약점 유형들에 대한 좋은 품질의 데이터가 있다면, 이와 머신러닝 기술을 활용해 효과적으로 문제를 해결할 수 있을 것이다. 이에 본 논문은 정적 프로그램 분석에 머신러닝 기술을 활용하여 소스 코드에서 보안 취약점을 탐지하는 방법을 제시하고, 실험을 통하여 가능성을 보인다. 메소드 단위의 코드 조각의 의미를 해석하여 메소드의 이름을 예측하는 code2vec 모델을 사용하고, 모델을 생성하고 검증 및 평가를 하기 위한 데이터로 흔히 발생할 수 있는 보안 취약점을 모아놓은 Juliet Test Suite를 사용하였다. 모델 평가 결과 약 97.3%의 정밀도와 약 98.6%의 재현율로 매우 희망적인 결과를 확인하였고 오픈 소스 프로젝트의 취약점을 탐지함으로써 가능성을 보였다. 향후 연구를 통해 다른 취약점 유형과 다양한 언어로 작성된 소스 코드에 대해서 대응함으로써 기존의 분석 도구들을 대체할 수 있을 것이다.

Keywords

Acknowledgement

본 연구는 과학기술정통신부 및 정보통신기획평가원의 SW중심대학지원사업의 연구결과로 수행되었음(2018-0-00192)

References

  1. Internet Engineering Task Force RFC 2828 Internet Security Glossary, 2020.10.22. https://tools.ietf.org/html/rfc2828#page-190
  2. P. Emanuelsson, U. Nilsson, "A comparative study of industrial static analysis tools", Proc. of the 3rd International Workshop on Systems Software Verification (SSV 2008), 2008.
  3. A. Bessey, K. Block, B. Chelf, A. Chou, B. Fulton, S. Hallem, C. Henri-Gros, A. Kamsky, S. McPeak, D. Engler, "A few billion lines of code later: Using static analysis to find bugs in the real world", CACM, vol.53, no.2, pp.66-75, 2010. https://doi.org/10.1145/1646353.1646374
  4. Clang Analyzer, 2020.11.05. https://clang-analyzer.llvm.org
  5. Coverity, 2020.11.05. https://scan.coverity.com
  6. Sparrow, 2020.11.05. http://wisestone.kr/solution/sparrow.php
  7. Juliet Test Suite for Java, 2020.08.10. https://samate.nist.gov/SARD/around.php#juliet_documents
  8. CWE, 2020.08.10. https://cwe.mitre.org
  9. URI ALON, MEITAL ZILBERSTEIN, OMER LEVY, ERAN YAHAV, code2vec: Learning Distributed Representations of Code, ACM Program. Lang. 3, POPL, 40(29 pages), 2019. https://doi.org/10.1145/3290353
  10. SQL-Injection-Simulation-Project, 2020.10.29. https://github.com/mndarren/SQL-Injection-Simulation-Project