Skip to main content
QUICK REVIEW

[논문 리뷰] Code2Image: Intelligent Code Analysis by Computer Vision Techniques and Application to Vulnerability Prediction

Zeki Bilgin|arXiv (Cornell University)|2021. 05. 07.
Software Engineering Research참고 문헌 23인용 수 6
한 줄 요약

이 논문은 소스 코드의 추상구문트리(Abstract Syntax Trees, ASTs)를 직접 딥러닝 모델에 입력할 수 있는 시각적 표현으로 변환하는 새로운 방법인 Code2Image를 제안한다. 이러한 코드 이미지에 컴퓨터 비전 기법을 적용함으로써 자동으로 특징을 추출할 수 있으며, 특히 불균형 데이터셋에서 최신 기술 대비 뛰어난 성능을 보이며 취약성 예측을 수행한다.

ABSTRACT

Intelligent code analysis has received increasing attention in parallel with the remarkable advances in the field of machine learning (ML) in recent years. A major challenge in leveraging ML for this purpose is to represent source code in a useful form that ML algorithms can accept as input. In this study, we present a novel method to represent source code as image while preserving semantic and syntactic properties, which paves the way for leveraging computer vision techniques to use for code analysis. Indeed the method makes it possible to directly enter the resulting image representation of source codes into deep learning (DL) algorithms as input without requiring any further data pre-processing or feature extraction step. We demonstrate feasibility and effectiveness of our method by realizing a vulnerability prediction use case over a public dataset containing a large number of real-world source code samples with performance evaluation in comparison to the state-of-art solutions. Our implementation is publicly available.

연구 동기 및 목표

  • 딥러닝 모델에 적합한 형태로 소스 코드를 표현하면서도 광범위한 특징 공학을 필요로 하지 않는 문제를 해결하기 위해.
  • AST를 활용하여 소스 코드의 구문적 및 의미적 정보를 표현 과정에서 유지하기 위해.
  • 이미지 기반 표현을 통해 컴퓨터 비전 기반 딥러닝 모델을 소스 코드 분석에 직접 적용할 수 있도록 하기 위해.
  • 실제 취약성 예측 사용 사례에서 제안된 방법의 효과성을 평가하기 위해.
  • 실제 코드 샘플을 포함한 공개 데이터셋에서 Code2Image의 성능을 최신 기술 대비 비교하기 위해.

제안 방법

  • 소스 코드의 추상구문트리(Abstract Syntax Tree, AST)를 구조적 및 의미적 관계를 유지하는 시각적 이미지 표현으로 변환한다.
  • 겹치지 않는 간선을 갖는 트리 다이어그램으로 AST를 렌더링하여 가독성과 구조적 정밀도를 확보하고, 부모-자식 노드 간 관계를 명확히 시각화한다.
  • AST의 위상적 성질을 유지하면서 크기와 밀도를 최적화하여 효율적인 딥러닝 추론을 지원한다.
  • 추가적인 특징 추출 또는 사전 처리 단계 없이 이미지 표현을 컨볼루션 신경망(Convolutional Neural Networks, CNNs)에 직접 입력한다.
  • 각 취약성 유형에 대해 검증 손실을 최소화하는 별도의 딥러닝 모델을 훈련시켜 클래스별 최적화를 가능하게 한다.
  • 이러한 접근은 컴퓨터 비전 모델이 이미지 분류 작업에서 성공한 바를 활용하여, 특히 취약성 탐지에 있어 소스 코드 분석을 수행한다.

실험 결과

연구 질문

  • RQ1AST 기반의 코드 표현이 딥러닝에 적합한 시각적 형식으로 효과적으로 변환될 수 있는가? 이 과정에서 의미적 및 구문적 정보가 유지되는가?
  • RQ2이미지 기반 코드 표현을 통해 컴퓨터 비전 기법을 소스 코드 분석에 얼마나 효과적으로 적용할 수 있는가?
  • RQ3제안된 Code2Image 방법의 성능은 최신 기술 대비 취약성 예측에서 어떻게 비교되는가?
  • RQ4이미지 형태로 전체 AST를 사용할 경우, 부분적인 AST 표현 대비 취약성 탐지 작업에서 더 높은 성능을 내는가?
  • RQ5매우 불균형한 취약성 카테고리, 예를 들어 테스트 세트에서 긍정 샘플이 단 32개뿐인 CWE-469에서 이 방법은 어떻게 성능을 내는가?

주요 결과

  • CWE-119에 대해 Code2Image는 F1 스코어 0.528을 기록하여, 동일한 취약성 카테고리에서 Ast2vec의 최대 F1 스코어 0.424를 초월했다.
  • 가장 불균형한 카테고리인 CWE-469(0.56% 긍정 샘플)에서 Code2Image는 F1 스코어 0.140을 기록했으며, Ast2vec의 0.082보다 뛰어난 성능을 보여, 희귀 취약성에 대해서도 뛰어난 성능을 입증했다.
  • CWE-476에서는 Code2Image가 F1 스코어 0.617을 기록하여 Ast2vec의 0.599보다 略적으로 높은 성능을 보이며, 중간 정도로 균형 잡힌 카테고리에서도 강력한 성능을 보였다.
  • CWE-others에 대해서는 Code2Image가 F1 스코어 0.335를 기록하여 Ast2vec의 0.283를 크게 상회하며, 다양한 취약성 유형 전반에서 일관된 성과 향상을 보였다.
  • 코드 샘플당 평균 추론 시간은 20.8밀리초였으며, 이는 실세계 정적 분석 파이프라인에 효율적으로 구현 가능함을 시사한다.
  • 이 방법의 우월성은 전체 AST 사용과 취약성 유형별 모델 특화 덕분이며, 정보 손실 감소와 최적화 향상으로 이어진다.

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

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

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

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