다중언어 코드베이스 경량 정적 분석
초록
대규모 소프트웨어가 여러 프로그래밍 언어로 혼합되어 작성되는 현상을 다루며, 언어 간 호출 관계를 투명하게 파악하기 위한 경량 정적 분석 프레임워크인 MLSA를 제안한다. MLSA는 모듈식 테이블 구조를 이용해 다국어 호출 그래프를 자동 생성하고, 보안·성능·품질 측면에서의 분석을 가능하게 한다.
상세 분석
본 논문은 현대 소프트웨어 개발 환경에서 다중언어 코드베이스가 일반화되는 원인을 개발자 선호도, 기존 레거시 시스템의 지속성, 각 언어가 제공하는 특수 기능 등으로 규정한다. 이러한 다중언어 구조는 언어 간 인터페이스, 즉 한 언어가 다른 언어의 함수를 호출하거나 콜백을 받는 형태로 구현되며, 이때 발생하는 호출 흐름은 전통적인 단일언어 정적 분석 도구로는 포착하기 어렵다. 저자는 이 문제를 해결하기 위해 MLSA(Lightweight Multilingual Software Analysis)라는 새로운 아키텍처를 설계하였다. MLSA는 각 언어별 파서와 인터페이스 추출 모듈을 독립적인 플러그인 형태로 제공하고, 이들 모듈이 생성한 메타데이터를 중앙 테이블에 집계한다. 테이블은 함수 정의, 호출 지점, 파라미터 타입, 그리고 언어 경계 정보를 포함한다. 이러한 구조는 새로운 언어나 새로운 인터페이스가 추가될 때 기존 시스템을 크게 수정하지 않아도 확장이 가능하도록 설계되었다. 핵심 알고리즘은 (1) 언어별 AST(추상 구문 트리) 생성, (2) 인터페이스 호출 패턴 매칭, (3) 다중언어 호출 그래프 합성의 세 단계로 이루어진다. 특히, 인터페이스 호출 패턴 매칭 단계에서는 정규 표현식 기반의 시그니처 매칭과 동적 바인딩 정보를 활용해 런타임에 결정되는 호출도 정적으로 추정한다. 결과적으로 MLSA는 동일 언어 내 호출뿐 아니라 언어 간 호출을 모두 포함하는 통합 호출 그래프를 생성한다. 논문은 이 그래프를 이용해 사이클 탐지, 권한 상승 위험 분석, 성능 병목 예측 등 다양한 소프트웨어 엔지니어링 작업을 수행할 수 있음을 실험을 통해 보여준다. 구현 단계에서는 오픈소스 파서 프레임워크와 경량 데이터베이스(SQLite)를 사용해 수천 개 파일 규모의 코드베이스도 몇 분 내에 분석할 수 있음을 입증하였다. 마지막으로 저자는 현재 구현의 제한점(예: 동적 로딩 코드의 완전한 정밀도 부족)과 향후 연구 방향(정적·동적 혼합 분석, 클라우드 기반 대규모 분석 파이프라인)을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기