🛡️ Garak 실무 스터디 가이드

데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약

llm-security vulnerability-scanner v0.9+ Python 3.10+
📅 2026.03 작성 · v1.0

1. Garak란?

Garak은 LLM(대규모 언어 모델)의 보안 취약점을 자동으로 탐지하는 오픈소스 스캐너입니다. 프롬프트 인젝션, 탈옥, 데이터 유출, 편향 등 다양한 공격 벡터를 시뮬레이션하여 모델의 안전성을 평가합니다. Python 패키지로 제공되며 CLI와 라이브러리 모두 사용 가능합니다.

🔑 3대 핵심 능력

🔍 취약점 탐지

300+ 내장 프롬프트 템플릿으로 OWASP LLM Top 10 기반 취약점을 자동 진단.

🧪 모델 평가

Hugging Face, OpenAI, Anthropic 등 다양한 모델 제공자와 연동 가능.

📊 리포트 생성

JSON/HTML 형식의 상세 리포트로 취약점 심각도, 재현 절차, 권장 조치 제공.

2. 왜 써야 하는가?

기존 보안 스캐너는 LLM 특화 공격을 다루지 못합니다. Garak은 LLM 전용으로 설계되어 프롬프트 인젝션, 탈옥(Jailbreak), 민감 정보 유출 등을 정밀하게 테스트합니다. 아래 비교표를 확인하세요.

기능 Garak 일반 보안 스캐너 수동 프롬프트 테스트
LLM 전용 취약점 ✅ 300+ 템플릿 ❌ 미지원 ⚠️ 제한적
자동화 CI/CD ✅ CLI + Python API ✅ 가능 (일반 웹) ❌ 수동
리포트 표준화 ✅ JSON / HTML ✅ 포맷 다양 ❌ 없음
OWASP LLM Top 10 ✅ 완벽 대응 ❌ 없음 ⚠️ 부분
오픈소스 ✅ Apache 2.0 도구별 상이 —

💡 핵심 포인트

Garak은 LLM 보안 테스트 자동화의 사실상 표준 도구로 자리잡고 있습니다. AI 서비스를 운영한다면 필수 도구입니다.

3. 핵심 개념

Garak은 Probe(공격 시나리오) → Generator(LLM 연결) → Detector(취약점 판별) 세 단계로 동작합니다. 아래 다이어그램을 참고하세요.

┌─────────────────────────────────────────────────────────┐ │ Garak Architecture │ ├─────────────────────────────────────────────────────────┤ │ │ │ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ │ │ Probe │───▶│ Generator │───▶│ Detector │ │ │ │(공격템플릿)│ │ (모델 인터페이스)│ │ (판별기) │ │ │ └──────────┘ └──────────────┘ └──────────┘ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ ┌──────────┐ ┌──────────────┐ ┌──────────┐ │ │ │Prompt │ │OpenAI / HF │ │Rule / LLM│ │ │ │Injection │ │Anthropic etc │ │기반 판별 │ │ │ │Jailbreak │ │ │ │ │ │ │ └──────────┘ └──────────────┘ └──────────┘ │ │ │ │ 결과: JSON 리포트 (취약점, 재현절차, 심각도) │ └─────────────────────────────────────────────────────────┘

주요 구성 요소

4. 퀵스타트

✅ 설치

pip install garak

⚙️ 기본 설정

Garak은 환경 변수 또는 config 파일을 통해 모델 접근을 설정합니다. OpenAI 예시:

export OPENAI_API_KEY="sk-..."         # Linux/macOS
set OPENAI_API_KEY="sk-..."            # Windows CMD

또는 Python 코드 내에서 설정:

import garak

generator = garak.generators.openai.OpenAI(
    model="gpt-4", api_key="sk-..."
)

🚀 첫 예제: 기본 스캔 실행

CLI 방식 (권장)

garak --model_name gpt-4 --probes prompt_injection,jailbreak

Python 방식

import garak
from garak import probe, detectors

# Generator 생성
gen = garak.generators.openai.OpenAI(model="gpt-4")

# Probe 로드 (프롬프트 인젝션)
p = probe.load("prompt_injection")

# Detector 생성 (키워드 기반)
det = detectors.TriggerListDetector()

# 실행
results = garak.scan(gen, p, det)

# 결과 출력
print(results.to_json(indent=2))

⚠️ 주의

처음 실행 시 모델에 유해한 프롬프트가 전송될 수 있습니다. 실제 프로덕션 모델을 테스트할 때는 영향도를 사전에 평가하세요.

5. 핵심 설정 레퍼런스

설정 항목 환경 변수 / 파라미터 설명 예시 값
모델 제공자 --model_name LLM 모델 식별자 gpt-4, claude-3-opus
API 키 OPENAI_API_KEY 등 모델 제공자 인증 sk-...
Probes --probes 쉼표로 구분된 탐지 항목 prompt_injection,jailbreak,data_leak
Detector --detector 판별 방식 (기본값: TriggerList) trigger_list, llm_judge
출력 포맷 --report_format 리포트 형식 json, html
타임아웃 --timeout 프로브당 최대 대기 시간(초) 30
최대 토큰 --max_tokens 생성 최대 길이 512

6. 실무 팁 & 트러블슈팅

❗ 자주 겪는 문제 & 해결책

문제 원인 해결책
API 인증 오류 환경 변수 누락 또는 잘못된 키 echo $OPENAI_API_KEY로 확인, .env 파일 관리
프로브 실행 시간 초과 모델 응답 지연 --timeout 60 증가 또는 경량 모델 사용
리포트가 비어 있음 Detector 설정 오류 --detector trigger_list 명시 지정
의존성 충돌 torch/transformers 버전 불일치 가상 환경 생성 후 pip install garak[all]

💡 실무 팁

• CI/CD 파이프라인에 Garak을 통합하려면 garak --model_name ... --probes all --report_format json을 사용하고 결과 JSON의 vulnerability_count 필드를 임계값으로 활용하세요.
• 프라이빗 모델 테스트 시 --generator local 옵션을 사용하여 로컬 Llama 등으로 안전하게 테스트할 수 있습니다.

7. 참고 자료

#llm-security #vulnerability-scanner #Garak #AI보안