Skip to main content
QUICK REVIEW

[논문 리뷰] Predicting Vulnerability In Large Codebases With Deep Code Representation

Anshul Tanwar, Krishna Sundaresan|arXiv (Cornell University)|2020. 04. 24.
Software Engineering Research참고 문헌 5인용 수 8
한 줄 요약

이 논문은 소프트웨어 개발 중 실시간으로 보안 취약점과 코드 결함을 예측하기 위해 추상 구문 트리(abstract syntax trees, ASTs)의 딥 러닝 표현과 활성 피드백 루프를 활용하는 AI 기반 시스템을 제안한다. IDE 플러그인으로 통합되어 과거에 문제가 발생한 유사한 코드 조각을 식별함으로써 개발자가 생산 코드에 도입되기 전에 반복적인 버그와 취약점을 방지할 수 있도록 한다.

ABSTRACT

Currently, while software engineers write code for various modules, quite often, various types of errors - coding, logic, semantic, and others (most of which are not caught by compilation and other tools) get introduced. Some of these bugs might be found in the later stage of testing, and many times it is reported by customers on production code. Companies have to spend many resources, both money and time in finding and fixing the bugs which would have been avoided if coding was done right. Also, concealed flaws in software can lead to security vulnerabilities that potentially allow attackers to compromise systems and applications. Interestingly, same or similar issues/bugs, which were fixed in the past (although in different modules), tend to get introduced in production code again. We developed a novel AI-based system which uses the deep representation of Abstract Syntax Tree (AST) created from the source code and also the active feedback loop to identify and alert the potential bugs that could be caused at the time of development itself i.e. as the developer is writing new code (logic and/or function). This tool integrated with IDE as a plugin would work in the background, point out existing similar functions/code-segments and any associated bugs in those functions. The tool would enable the developer to incorporate suggestions right at the time of development, rather than waiting for UT/QA/customer to raise a defect. We assessed our tool on both open-source code and also on Cisco codebase for C and C++ programing language. Our results confirm that deep representation of source code and the active feedback loop is an assuring approach for predicting security and other vulnerabilities present in the code.

연구 동기 및 목표

  • 개발 과정에서 발생하지만 테스트 또는 운영 환경에서 늦게 발견되는 미발견의 소프트웨어 버그와 보안 취약점을 해결하는 데 목적을 두며.
  • 배포 후에 수정하는 데 드는 비용과 노력을 줄이기 위해, 코드 작성 시점에 잠재적 문제를 식별함으로써 결함 수정을 사전에 방지하는 데 목적을 두며.
  • 과거 코드 변경 사항에서 유래한 이력 버그 데이터를 활용하여 새로운 코드에서 유사한 문제가 반복되는 것을 방지하는 데 목적을 두며.
  • 딥 코드 표현을 사용하여 실시간으로 개발자에게 잠재적 취약점을 사전 경고하는 IDE 통합 시스템을 개발하는 데 목적을 두며.
  • 딥 러닝을 활용한 AST 분석과 피드백 메커니즘을 조합하여 대규모 C/C++ 코드베이스에서의 취약점 예측 성능을 입증하는 데 목적을 두며.

제안 방법

  • 소스 코드에서 추출한 추상 구문 트리(Abstract Syntax Trees, ASTs)를 기반으로 신경망을 훈련시켜 깊이 있는 코드 표현을 구축한다.
  • 코드 스니펫 간의 의미적 유사성을 AST 구조에 기반해 학습하기 위해 시아모이 신경망 아키텍처를 활용한다.
  • 과거 수정 사례를 학습하고 유사한 코드 패턴과 알려진 취약점 간의 관련성을 파악하기 위해 활성 피드백 루프를 구현한다.
  • 버그 수정 포함한 과거 코드 변경 사항을 훈련 데이터로 활용하여 보안 결함과 관련된 패턴을 식별한다.
  • 개발자가 코드를 작성하는 동안 실시간으로 분석하고 잠재적 문제를 제안하기 위해 IDE 내부에 모델을 통합한다.
  • 특정 코드베이스(예: 시SCO의 C/C++ 코드베이스)에 맞게 적응하기 위해 전이 학습 및 미세 조정 기법을 활용한다.

실험 결과

연구 질문

  • RQ1AST의 딥 러닝 표현이 대규모 코드베이스에서 보안 취약점을 효과적으로 예측할 수 있는가?
  • RQ2과거 버그 수정 사례를 얼마나 효과적으로 활용하여 신규 코드에서 유사한 취약점을 예측할 수 있는가?
  • RQ3활성 피드백 루프가 개발 과정에서 취약점 예측의 정확도와 관련성 향상에 얼마나 기여하는가?
  • RQ4기존 테스트 방법에 비해 제안된 시스템이 개발 생명주기의 더 이른 시점에서 취약점을 탐지할 수 있는가?
  • RQ5모델이 오픈소스 및 기업 소프트웨어를 포함한 다양한 코드베이스 간에 얼마나 잘 일반화되는가?

주요 결과

  • 과거 버그 수정 사례를 기반으로 학습함으로써 시스템은 취약한 코드 패턴을 성공적으로 식별하여 유사 문제의 반복 발생 가능성을 낮춘다.
  • 딥 AST 표현은 코드 세그먼트 간의 의미적 및 구조적 유사성을 잘 포착하여 유사한 취약점의 정확한 탐지가 가능하다.
  • 활성 피드백 루프의 통합은 개발자 피드백과 과거 수정 사례를 반영함으로써 예측 정확도를 크게 향상시킨다.
  • 모델은 오픈소스 및 기업 코드베이스(시SCO의 C/C++ 코드베이스 포함) 모두에서 뛰어난 성능을 보였다.
  • IDE 내 실시간 분석을 통해 개발자는 잠재적 취약점을 즉각적으로 대응할 수 있어, 배포 후 결함 비율이 감소한다.
  • 구문 규칙에만 의존하는 기존 정적 분석 도구에 비해 의미적 유사성과 이력적 맥락을 중시함으로써 본 연구의 접근 방식은 우수한 성능을 보였다.

더 나은 연구,지금 바로 시작하세요

논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.

카드 등록 없음 · 무료 플랜 제공

이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.