본문 바로가기
KERD
논문KCI 등재

흐름 그래프 정보의 기계학습을 활용한 보안 취약점 정적 탐지

Static Detection of Security Vulnerabilities Using Machine Learning on Graph Information

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

소프트웨어의 소스코드를 분석하여 보안 취약점을 정적으로 탐지하는 방법으로 오염분석이 널리 쓰이고있다. 오염분석은 사용자 입력이 사용 지점에 도달하기 전에 위험 요소가 제거되는지 여부를 가능한 실행 흐름 경로를 모두 분석하여 탐지하는 분석 방법이다. 그런데 입력 데이터를 모르는 상황에서 실행 의미를 요약하여 분석할 수밖에 없어서, 감당할 수 있을 정도의 분석 비용으로 만족할 만큼 정확한 분석 결과를 얻기 힘든 단점이 있다. 이 논문은 그래프를 기계학습의 데이터로 활용할 수 있게 해주는 모델인 graph2vec을 사용하여, 소스코드의 흐름 그래프 데이터를 기반으로 기계학습 기술을 활용하여 보안 취약점을 탐지하는 방법을제안한다. 소스코드의 흐름그래프를 구축한 다음, 벡터 데이터로 변환하여 기계학습을 진행한다. 프로그램 소스코드에 돌연변이 기법을 적용하여 충분한 데이터를 구축하여 학습을 시키고 평가를 진행한 결과, 약 99%의정확도로 보안 취약점을 탐지함을 확인함으로써 기존의 재래식 보안 취약점 탐지 기술을 기계학습으로 대체할 수 있음을 확인하였다.

Abstract

Taint analysis is widely used in detecting security vulnerabilities in source code. However, it is difficult to obtain accurate results in reasonable amount of computing time due to the nature of static analysis. This paper proposes a new way of detecting security vulnerabilities using machine-learning technology utilizing an already established model, graph2vec. The flow graph of a program is transformed into a vector and then given to the model. The data set is prepared by first constructing simplified program and then applying mutation. The evaluation results show that the model detects security vulnerabilities with the accuracy of up to 99%, positively showing the possibility of applying machine-learning technology to the static detection of security vulnerabilities in source code.

참고문헌 (14)

  1. 문태근, "정적 오염 분석을 활용한 타입스크립트 코드의 보안 취약점 탐지", 정보보호학회논문지, 31(2), pp.263~277 (2021), 한국정보보호학회[DOI]
  2. Avancini, Andrea, "Towards security testing with taint analysis and genetic algorithms", Proceedings - International Conference on Software Engineering, pp.65~71 (2010)
  3. 오상환, "SW 보안 취약점 자동 탐색 및 대응 기술 분석", 한국산학기술학회논문지, 18(11), pp.94~103 (2017), 한국산학기술학회[DOI]
  4. Narayanan, A., "graph2vec: Learning distributed representations of graphs", arXiv preprint arXiv:1707.05005, ~ (2017)
  5. "PMD (Programming Mistake Detector)" (2022)[URL]
  6. "CheckStyle" (2022)[URL]
  7. "CPD(Copy/Paste Detector)" (2022)[URL]
  8. Bryan Perozzi, "DeepWalk: online learning of social representations", Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp.701~710 (2014)
  9. Aditya Grover, "node2vec: Scalable Feature Learning for Networks", Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp.855~864 (2016)
  10. D. Wang, "Structural Deep Network Embedding", Proceedings of the ACM SIGKDD International Conference on Knowledge Discovery and Data Mining, pp.1225~1234 (2016)
  11. Yuehua Qin, "Research and Application of Knowledge Graph in Teaching: Take the database course as an example", Journal of Physics: Conference Series, 1607(1), pp.012127~ (2020), IOP Publishing[DOI]
  12. Mikolov, Tomas, "Efficient Estimation of Word Representations in Vector Space", arXiv preprint arXiv:1301.3781, ~ (2013)
  13. Quoc Le, "Distributed representations of sentences and documents", Proceedings of the International Conference on International Conference on Machine Learning, 32(2), pp.1188~1196 (2014)
  14. Theodoros Evgeniou, "Support Vector Machines: Theory and Applications", Machine Learning and Its Applications, 2049, pp.249~257 (2001), Springer Berlin Heidelberg[DOI]

관련 논문AI추천

이 간행물의 다른 논문 (24건)