TraceVIC: 취약점 유발 커밋 식별을 위한 코드 진화에 대한 인과 추론
요약
본 논문은 소프트웨어 취약점의 근본 원인 커밋(VIC)을 식별하는 새로운 방법론 TraceVIC를 제안합니다. 기존 방식이 위치 기반 휴리스틱에 의존했던 것과 달리, TraceVIC는 코드 진화 과정을 시간 그래프로 추적하여 VIC를 식별하고 순위 매깁니다. 이 접근법은 취약점 관련 코드가 여러 개정판에 걸쳐 어떻게 발전했는지 인과적으로 분석합니다.
핵심 포인트
- TraceVIC는 코드의 '진화 과정'을 추론하여 VIC를 식별합니다.
- 시간 그래프 기반 접근 방식으로, 연속적인 개정판 간 대응 관계를 보존합니다.
- 전체 개정 이력 모델링이 F2 점수를 크게 향상시킵니다 (0.637 -> 0.814).
- 테스트 결과, 높은 정확도로 취약한 VIC를 식별할 수 있음을 입증했습니다.
소프트웨어 취약점은 종종 도입된 지 오래 후에 발견되어, 근본적인 취약한 상태를 야기한 취약점 유발 커밋(Vulnerability-Inducing Commit, VIC)을 식별하기 어렵게 만듭니다. 기존의 VIC 식별 기법들은 주로 git blame에 의존하여 수정 이력 전체를 통해 취약한 코드를 추적하고, 가장 초기에 또는 가장 최근에 수정된 부분을 선택하는 것과 같은 위치 기반 휴리스틱(positional heuristics)을 사용합니다. 하지만 실제 VIC는 이 역사 어느 곳에서든 발생할 수 있으며, 취약한 동작은 여러 개정판에 걸쳐 진화하는 코드에 의존할 수 있습니다. 따라서 우리는 VIC 식별이 단순히 후보 커밋이 수정 이력의 어디에 나타나는지를 보는 것이 아니라, 취약점 관련 코드가 어떻게 진화했는지(how it evolves)를 추론해야 한다고 주장합니다. 본 논문에서는 코드 진화를 바탕으로 VIC를 식별하고 순위 매기는 시간 그래프 기반 접근 방식인 TraceVIC를 제시합니다. TraceVIC는 먼저 잠재적인 근본 원인 라인을 국소화하고, 이들의 역사를 개정판 전반에 걸쳐 추적하여, 각 개정판 내의 프로그램 구조와 취약점 관련 코드의 역사적 진화를 포착하는 그래프 표현을 구축합니다. 이는 시간적 엣지(temporal edges)를 사용하여 연속적인 개정판 간 프로그램 요소 간의 대응 관계를 보존하며, 결과로 얻은 개정 이력 전체에 걸쳐 추론하고 후보 커밋들이 취약한 상태에 기여한 정도에 따라 직접 순위를 매깁니다. 제거 분석(Ablation results) 결과, 전체 개정 이력을 모델링하는 것이 F2 점수를 0.637에서 0.814로 향상시키는 것을 보여줍니다. TraceVIC는 최신 기술 대비 최대 28.7%의 F2 개선을 달성하며, 네 개의 보지 못한 C/C++ 프로젝트에서 79개 중 78개의 취약점에 대해 유효한 VIC를 식별합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기