MCP와 Multi-Agent로 완성한 고성능 보안 분석 파이프라인 구축기
단순한 챗봇 수준을 넘어 보안 전문가의 사고 과정을 코드로 구현한 토스의 기술적 성취를 다룹니다. MCP를 통한 구조적 코드 이해와 SAST의 정밀함을 결합하여 LLM이 실제 서비스의 복잡한 취약점을 어떻게 스스로 찾아낼 수 있는지 구체적인 아키텍처와 함께 소개합니다.
LLM을 활용해 대규모 코드베이스를 분석하거나 보안 자동화 도구를 고도화하려는 엔지니어에게 강력히 추천합니다. 특히 정적 분석 도구와 AI 에이전트를 결합한 하이브리드 접근 방식은 실무적인 비용 관리와 성능 향상을 동시에 달성할 수 있는 핵심 인사이트를 제공합니다.
대용량 소스코드를 LLM에 효율적으로 전달하지 못해 발생하는 토큰 낭비와 분석 결과의 일관성 및 정확도 부족이 주요 문제였습니다. 특히 단순히 패턴 매칭 기반으로 코드를 탐색할 경우 취약점 경로를 누락하거나 분석 비용이 과도하게 발생하는 병목 현상이 존재했습니다.
ctags와 tree-sitter를 활용해 심볼 인덱싱과 함수 범위를 파악하는 MCP 서버를 구축하여 구조적 코드 탐색 능력을 확보했습니다. 또한 SAST(Semgrep)를 후보군 추출 도구로 활용해 모든 입력 경로를 수집하고, Discovery와 Analysis 에이전트로 역할을 나눈 Multi-Agent 아키텍처를 도입했습니다.
AI가 IDE 수준의 코드 탐색 기능을 갖추게 되었으며, SARIF 결과의 JSONL 최적화를 통해 Context 낭비를 최소화했습니다. 이를 통해 분석 정확도를 높이는 동시에 불필요한 경로 분석을 줄여 비용 효율적인 취약점 탐지 파이프라인을 실현했습니다.
Trade-off
Discovery 에이전트에서 미탐을 방지하기 위해 과탐률을 의도적으로 높이는 전략을 선택했습니다. 이로 인해 Analysis 에이전트가 처리해야 할 대상이 일부 늘어나 토큰 비용이 추가로 발생할 수 있으나, 보안 분석의 완결성을 위해 선택한 절충안입니다.
AI 모델이 외부 도구나 데이터 소스에 구조적으로 접근하여 상호작용할 수 있도록 설계된 개방형 표준 프로토콜입니다.
소스 코드를 실행하지 않은 상태에서 코드 구조를 분석하여 잠재적인 보안 취약점을 찾아내는 정적 분석 기술입니다.
하나의 거대 언어 모델이 모든 업무를 수행하는 대신, 특정 역할에 특화된 여러 에이전트가 협업하여 복잡한 문제를 해결하는 구조입니다.


