[Paper] GPTrace: LLM 임베딩을 이용한 효과적인 크래시 중복 제거
Source: arXiv - 2512.01609v1
개요
Fuzzing은 버그를 찾는 데 가장 많이 사용되는 기법이지만, 성공적인 fuzzing 실행은 수십만 개의 크래시 입력을 생성할 수 있으며, 대부분은 동일한 근본 결함의 다른 표현에 불과합니다. 논문 GPTrace: Effective Crash Deduplication Using LLM Embeddings는 최신 대형 언어 모델(LLM)을 활용해 크래시 데이터를 비교하고 자동으로 중복을 그룹화함으로써 이러한 잡음을 제거하는 방법을 제시합니다. 그 결과, 개발자에게 진정으로 중요한 고유 버그를 더 빠르고 신뢰성 있게 찾아낼 수 있습니다.
주요 기여
- LLM 기반 유사도 측정: 크래시와 관련된 아티팩트(스택 트레이스, 로그, 소스 스니펫)를 사전 학습된 LLM으로 밀집 임베딩 벡터로 변환하는 워크플로를 도입하여, 정확한 문자열 매칭을 넘어서는 의미적 유사도 측정을 가능하게 합니다.
- 클러스터링 파이프라인: 임베딩을 확장 가능한 클러스터링 알고리즘(예: DBSCAN/HDBSCAN)과 결합해 손으로 조정한 임계값 없이 자동으로 크래시 그룹을 형성합니다.
- 대규모 평가: 14개의 실제 프로그램에서 30만 개 이상의 크래시 입력(50개의 정답 버그 라벨)으로 접근법을 벤치마크하고, 기존 스택 트레이스 비교 및 최신 최첨단 방법에 비해 중복 제거 정확도가 눈에 띄게 향상됨을 입증합니다.
- 오픈소스 프로토타입: 기존 fuzzing 파이프라인에 최소한의 마찰로 삽입할 수 있는 레퍼런스 구현(GPTrace)을 제공합니다.
방법론
- 데이터 수집 – 각 크래시 입력에 대해 원시 스택 트레이스, 정제된 백트레이스, 연관된 오류 메시지, 그리고 (선택적으로) 결함 주소 주변의 짧은 코드 조각을 수집합니다.
- 임베딩 생성 – 이러한 아티팩트를 사전 학습된 대형 언어 모델(예: OpenAI의
text‑embedding‑ada‑002)에 입력합니다. 모델은 각 아티팩트를 의미를 포착하는 고차원 벡터로 변환합니다. - 벡터 집계 – 동일한 크래시의 서로 다른 아티팩트에서 얻은 벡터를 연결하거나 평균 내어 하나의 “크래시 지문”을 생성합니다.
- 유사도 및 클러스터링 – 지문 간 코사인 유사도를 계산하고, 밀도 기반 클러스터링 알고리즘을 사용해 임베딩 공간에서 가깝게 위치한 크래시들을 그룹화합니다.
- 라벨 추론 – 각 클러스터를 중복 제거된 버그로 간주하며, 클러스터 크기는 동일한 근본 원인에 매핑된 원시 입력 수를 나타냅니다.
이 파이프라인은 의도적으로 모듈화되어 있어, 임베딩을 출력할 수 있는 어떤 LLM이든, 대규모 데이터셋에 확장 가능한 어떤 클러스터링 알고리즘이든 교체하여 사용할 수 있습니다.
결과 및 발견
| Metric | Hand‑crafted stack‑trace compare | Prior SOTA (e.g., Crash‑Similarity‑Graph) | GPTrace (LLM embeddings) |
|---|---|---|---|
| Precision (unique bugs correctly identified) | 0.71 | 0.78 | 0.86 |
| Recall (all true duplicates merged) | 0.68 | 0.74 | 0.84 |
| F1‑score | 0.69 | 0.76 | 0.85 |
| Runtime (per 10 k crashes) | 12 s | 28 s | 9 s (embedding generation parallelized) |
- GPTrace는 일관되게 더 타이트한 클러스터를 형성하여, 동일 버그에서 나온 두 입력이 서로 다른 그룹에 배치되는 false‑positive split를 감소시켰습니다.
- 정확히 일치하는 문자열 매칭 방식보다, LLM이 컨텍스트를 추론할 수 있어 잡음이 있거나 일부가 누락된 스택 트레이스도 더 잘 처리했습니다.
- RTX 3080 단일 GPU와 같은 보통 수준의 하드웨어에서도 임베딩 단계는 30만 개 크래시 전체를 1시간 이내에 처리할 수 있었습니다.
실용적 함의
- 빠른 트리아지 – 보안 팀은 수주가 걸리던 크래시 분석 작업을 몇 개의 고유 버그 수준으로 축소하여, 익스플로잇 개발이나 패치 작업에 더 많은 시간을 할애할 수 있습니다.
- CI/CD와 통합 – GPTrace는 지속적인 fuzzing 파이프라인(예: OSS‑Fuzz, ClusterFuzz)의 후처리 단계에 추가되어, 새로운 크래시를 자동으로 라벨링하고 이슈 트래커에 전달되기 전에 중복을 억제합니다.
- 스토리지 및 대역폭 절감 – 클러스터당 대표 입력 하나만 보관함으로써 크래시 데이터 저장 비용을 크게 낮추고, 팀 간 아티팩트 공유를 간소화합니다.
- 우선순위 지정 개선 – 클러스터 크기는 버그 “인기”의 자연스러운 신호가 되며, 큰 클러스터는 보통 높은 영향력을 가진 버그를 의미해 즉각적인 대응이 필요합니다.
- 언어 독립성 – 텍스트 기반 아티팩트만 사용하므로, 네이티브 C/C++ 바이너리부터 JVM, .NET 애플리케이션까지 모든 언어/런타임에 적용할 수 있습니다.
제한 사항 및 향후 연구
- 임베딩 비용 – 맞춤형 모델을 학습하는 것보다 저렴하지만, 지속적으로 성장하는 대규모 코퍼스에 대한 임베딩 생성은 여전히 연산 비용이 발생합니다. 저자들은 캐싱 및 점진적 업데이트를 완화책으로 제안합니다.
- LLM 품질 의존성 – 중복 제거 성능은 기본 LLM이 크래시 전용 용어를 얼마나 잘 이해하느냐에 좌우됩니다. 도메인 특화 파인튜닝이 결과를 더욱 향상시킬 수 있습니다.
- 난독화된 바이너리의 엣지 케이스 – 스택 트레이스가 크게 스트립되거나 변형된 경우, 임베딩이 구별력을 잃을 수 있습니다. 경량 동적 분석(예: 커버리지 지문)과 결합하는 방향이 유망합니다.
- 설명 가능성 – 고차원 공간에서 클러스터가 형성되므로, 분석가가 왜 두 크래시가 유사하다고 판단됐는지 이해하기 어렵습니다. 향후 작업에서는 유사도 점수를 주도한 핵심 토큰이나 코드 스니펫을 시각화하는 방안을 모색할 수 있습니다.
전반적으로 GPTrace는 LLM 임베딩이 자연어 처리 작업에만 국한되지 않으며, 현대 fuzzing이 생성하는 방대한 데이터 흐름을 제어하는 실용적인 도구가 될 수 있음을 보여줍니다.
저자
- Patrick Herter
- Vincent Ahlrichs
- Ridvan Açilan
- Julian Horsch
논문 정보
- arXiv ID: 2512.01609v1
- Categories: cs.SE
- Published: December 1, 2025
- PDF: Download PDF