LLM 기반 악성코드 탐지와 CVE 연계: MalCVE 구현과 평가
초록
본 논문은 대형 언어 모델(LLM)과 검색‑증강 생성(RAG)을 활용해 JAR 파일 형태의 바이너리 악성코드를 자동으로 탐지하고, 해당 악성코드가 악용할 가능성이 있는 CVE를 연계하는 시스템 MalCVE를 제안한다. 3,839개의 JAR 샘플을 대상으로 97%의 탐지 정확도와 상위 10개 CVE 후보 중 65%를 회수하는 성능을 보이며, 상용 솔루션 대비 비용을 1/66~1/80 수준으로 크게 절감한다.
상세 분석
MalCVE는 정적 분석 파이프라인을 8단계로 구성한다. 첫 단계에서는 오픈소스 Java 디컴파일러인 CFR과 Procyon을 조합해 JAR 파일을 Java 소스 코드로 변환한다. 두 번째 단계에서는 JavaParser 기반의 자체 개발 디오브퓨스케이션 도구를 적용해 문자열 상수 인라인 등 기본적인 난독화 기법을 해제한다. 세 번째 단계에서는 변환·정제된 소스 코드를 LLM에 전달해 “요약‑판단” 프롬프트를 수행한다. 여기서 LLM은 악성 여부 판정, 신뢰도 점수, 주요 행위 요약, 사용 라이브러리 및 초기 검색 쿼리를 JSON 스키마 형태로 반환한다.
네 번째 단계에서는 앞서 얻은 요약만을 입력으로 하여 별도 프롬프트를 통해 CVE 검색에 최적화된 키워드와 문장을 생성한다. 이렇게 생성된 질의는 벡터 데이터베이스(예: FAISS)와의 의미 유사도 검색에 사용되어 CVE 설명과 매칭된다. 검색 결과는 유사도 점수에 따라 순위화되고, 상위 k (본 연구에서는 k=10) 후보가 최종 출력으로 제공된다.
성능 평가는 공개된 MalDICT 데이터셋(3,839개 JAR)으로 수행했으며, 악성·정상 구분 정확도는 97%에 달한다. 이는 기존 상용 안티바이러스 엔진(VirusTotal, CrowdStrike 등) 대비 동일 데이터에서 1/66~1/80 수준의 비용 절감 효과를 의미한다. CVE 연계 측면에서는 recall@10이 65%로, 소스 코드 기반 CVE 매핑 연구와 동등한 수준을 기록한다.
주요 기여는 다음과 같다. (1) 사전 학습된 LLM만으로도 바이너리 악성코드 탐지가 가능함을 실증적으로 입증했다. (2) LLM 기반 코드 요약이 악성코드 행위와 연관된 CVE를 효과적으로 추출하는 중간 단계 역할을 함을 확인했다. (3) 전체 파이프라인을 오픈소스 도구와 상용 LLM API만으로 구현해 진입 장벽을 크게 낮췄다.
한계점으로는(가) 디오브퓨스케이션이 문자열 인라인 정도에 머물러 복잡한 난독화(예: 제어 흐름 변조, 동적 로딩)에는 미흡하고,(나) LLM의 “Hallucination” 현상으로 인해 생성된 검색 쿼리나 CVE 매칭이 부정확할 가능성이 있다. 또한, 현재는 Java/JAR에 국한되었으며, PE, ELF 등 다른 바이너리 포맷에 대한 확장은 추가 연구가 필요하다.
향후 연구에서는(1) 다중 언어·다중 포맷 지원을 위한 통합 디컴파일러 프레임워크, (2) 동적 분석 결과와 결합한 하이브리드 RAG, (3) LLM 파인튜닝 혹은 LoRA 적용을 통한 도메인 특화 성능 향상, (4) CVE 외에 CWE·CAPEC 등 보안 지식 그래프와의 연계 등을 제시한다.
댓글 및 학술 토론
Loading comments...
의견 남기기