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

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

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

원문 보기

AI 핵심 요약

대용량 코드에서 LLM이 필요한 코드를 놓치거나 분석 결과가 들쭉날쭉하고, 모든 경로를 분석하면 비용이 커지는 문제를 해결하기 위해 취약점 분석 파이프라인을 구성했다. ctags·tree-sitter 기반 SourceCode Browse MCP로 코드 탐색을 돕고, Semgrep으로 Untrusted Input 경로를 수집한 뒤 SARIF를 간소화하고 연속된 라인을 병합해 분석 입력을 줄였다. 이어 Discovery와 Analysis 에이전트를 분리해 후보 경로를 먼저 선별하고, 비용 지속성을 위해 샘플 프로젝트에서 여러 오픈 모델을 비교한 뒤 Qwen3:30B를 채택했으며 Pydantic과 Instructor로 출력 형식도 보완했다. 핵심 교훈은 모델 자체의 성능뿐 아니라 코드 인덱싱, 후보 수집, 단계별 역할 분담과 검증을 함께 설계해야 정확도와 비용을 관리할 수 있다는 것이다.

  • ctags와 tree-sitter로 심볼과 함수 범위를 미리 인덱싱하면 LLM의 코드 탐색을 정확하고 효율적으로 만들 수 있다.
  • SAST는 취약점 판정기가 아니라 입력 경로 후보를 빠짐없이 수집하는 용도로 활용하고, SARIF에서 필요한 정보만 추려 토큰 낭비를 줄인다.
  • Discovery 단계에서는 미탐을 줄이도록 후보를 넉넉히 남기고, 정밀 검증은 Analysis 에이전트에 맡기는 식으로 비용과 정확도의 균형을 잡는다.
  • 오픈 모델은 샘플 프로젝트와 통제된 환경에서 분석률·정탐률·오탐률, 도구 호출 안정성, 토큰 사용량을 함께 비교해 선택한다.
  • Pydantic으로 응답 형식을 검증하고 Instructor의 재시도를 활용하면 오픈 모델의 불안정한 출력 형식을 보완할 수 있다.

소개

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

비슷한 학습 자료

문서 김민규

비어 있는 캐시, 완벽한 알리바이, 사라진 처리량

데브옵스 · 인프라 AI에이전트 개발

문서 김병균

문서 · 코드 · 사내 메신저에 흩어진 정보를, 믿고 쓸 수 있는 컨텍스트로 만드는 여정

AI에이전트 개발

문서 표상영

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

AI에이전트 개발 보안

문서 조민규

LLM으로 에러 원인 분석과 해결 방안 제시까지 자동화하고, 팀의 생산성을 향상시킨 이야기를 들려드립니다.

데브옵스 · 인프라 AI에이전트 개발

문서 김민규

LLM 쉽고 빠르게 서빙하기

문서 김민규

구슬이 서 말이어도 꿰어야 보배라는 말처럼 좋은 LLM을 학습시키는 것도 중요하지만, 이걸 서비스에 적용하지 못하면 큰 의미가 없습니다. 하지만, 어느정도의 성능 이상을 지원하는 LLM을 서비스에 적용하는 것은 크게 두 가지의 어려움을 가지고 있습니다.

AI에이전트 개발

문서 박재현

Prompt Engineering을 활용한 비정형 데이터 검수 실험

AI에이전트 개발 자연어 처리