데이터 엔지니어 · AI 엔지니어를 위한 핵심 요약
Garak은 LLM(대규모 언어 모델)의 보안 취약점을 자동으로 탐지하는 오픈소스 스캐너입니다. 프롬프트 인젝션, 탈옥, 데이터 유출, 편향 등 다양한 공격 벡터를 시뮬레이션하여 모델의 안전성을 평가합니다. Python 패키지로 제공되며 CLI와 라이브러리 모두 사용 가능합니다.
300+ 내장 프롬프트 템플릿으로 OWASP LLM Top 10 기반 취약점을 자동 진단.
Hugging Face, OpenAI, Anthropic 등 다양한 모델 제공자와 연동 가능.
JSON/HTML 형식의 상세 리포트로 취약점 심각도, 재현 절차, 권장 조치 제공.
기존 보안 스캐너는 LLM 특화 공격을 다루지 못합니다. Garak은 LLM 전용으로 설계되어 프롬프트 인젝션, 탈옥(Jailbreak), 민감 정보 유출 등을 정밀하게 테스트합니다. 아래 비교표를 확인하세요.
| 기능 | Garak | 일반 보안 스캐너 | 수동 프롬프트 테스트 |
|---|---|---|---|
| LLM 전용 취약점 | ✅ 300+ 템플릿 | ❌ 미지원 | ⚠️ 제한적 |
| 자동화 CI/CD | ✅ CLI + Python API | ✅ 가능 (일반 웹) | ❌ 수동 |
| 리포트 표준화 | ✅ JSON / HTML | ✅ 포맷 다양 | ❌ 없음 |
| OWASP LLM Top 10 | ✅ 완벽 대응 | ❌ 없음 | ⚠️ 부분 |
| 오픈소스 | ✅ Apache 2.0 | 도구별 상이 | — |
Garak은 LLM 보안 테스트 자동화의 사실상 표준 도구로 자리잡고 있습니다. AI 서비스를 운영한다면 필수 도구입니다.
Garak은 Probe(공격 시나리오) → Generator(LLM 연결) → Detector(취약점 판별) 세 단계로 동작합니다. 아래 다이어그램을 참고하세요.
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))
처음 실행 시 모델에 유해한 프롬프트가 전송될 수 있습니다. 실제 프로덕션 모델을 테스트할 때는 영향도를 사전에 평가하세요.
| 설정 항목 | 환경 변수 / 파라미터 | 설명 | 예시 값 |
|---|---|---|---|
| 모델 제공자 | --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 |
| 문제 | 원인 | 해결책 |
|---|---|---|
| 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 등으로 안전하게 테스트할 수 있습니다.