본문으로 이동
LLM을 이용한 서비스 취약점 분석 자동화 #1
문서

LLM을 이용한 서비스 취약점 분석 자동화 #1

표상영 · 토스 · 토스 기술 블로그

원본 보기

소개

보안 분석가라면 누구나 한 번쯤 상상했을 ‘해줘’로 취약점 찾기. 그 경험을 공유해 드립니다.

AI 핵심 요약

대규모 서비스 코드 전체를 LLM에 넣는 방식은 토큰 한계와 환각에 부딪혔고, 이를 해결하기 위해 tree-sitter·ctags·ripgrep으로 코드를 인덱싱한 SourceCode Browse MCP를 만들었다. 결과의 누락과 변동을 줄이기 위해 Semgrep으로 Source→Sink 경로를 수집하고, Multi-Agent 구조에서 Discovery가 분석 대상을 선별한 뒤 Analysis가 취약점을 검토하도록 설계했다. 운영 비용을 낮추기 위해 여러 오픈 모델을 비교한 끝에 Qwen3:30B를 선택하고, 작업 분할과 프롬프트·예외 처리를 보강해 정확도 95% 이상의 자동화 시스템을 구현했다. 기술적 가능성만으로는 충분하지 않으며, 정확도와 커버리지뿐 아니라 비용·안정성·지속 가능성까지 함께 설계해야 한다는 점을 얻었다.

  • 대용량 코드를 한 번에 프롬프트에 넣기보다, 인덱싱과 도구 호출로 필요한 코드만 탐색하게 하면 토큰 한계와 환각을 줄일 수 있다.
  • SAST는 취약점을 직접 판정하는 대신 Source→Sink 경로를 빠짐없이 수집하는 용도로 활용할 수 있다.
  • 모든 경로를 LLM에 분석시키면 비용이 커지므로, Discovery 에이전트로 후보를 좁힌 뒤 Analysis 에이전트가 검토하도록 나눈다.
  • 모델 선택은 정확도뿐 아니라 커버리지, 도구 호출 안정성, 토큰 비용을 함께 비교해야 한다.
  • 오픈 모델의 성능 한계는 작은 작업 단위, 엄격한 프롬프트, 예외 처리 강화로 보완할 수 있다.