NVIDIA/garak
the LLM vulnerability scanner
garak – LLM 취약점 스캐너
무엇인가요 – garak은 대규모 언어 모델(LLM)에 대한 레드팀 스타일 테스트를 위한 오픈소스 명령줄 도구입니다. 모델이 환각을 일으키거나, 데이터를 유출하거나, 악의적인 프롬프트를 따르거나, 유해하거나 불법적인 콘텐츠를 생성하도록 유도하는 다양한 "프로브"를 실행하고, 내장된 "검출기"를 사용해 모델이 실패했는지 판단합니다. 마치 LLM용 nmap/Metasploit이라고 생각하시면 됩니다.
왜 중요한가요 – LLM이 제품에 배포될수록 개발자들은 악성 프롬프트에 대한 모델의 반응을 파악해야 합니다. garak은 이를 자동화하여 팀이 실제 공격이 발생하기 전에 보안 관련 약점을 발견할 수 있도록 도와줍니다.
지원하는 모델 – 다음 방식으로 접근 가능한 모든 생성형 모델을 지원합니다:
- Hugging Face Hub (로컬 파이프라인 또는 Inference API)
- OpenAI, Azure OpenAI, Cohere, Groq, Replicate, AWS Bedrock, NVIDIA NIM 등
- 로컬 GGUF/llama.cpp 바이너리
- 임의의 REST 엔드포인트 (작은 YAML 설정 파일로)
설치 방법
# PyPI에서 안정 버전 설치
python -m pip install -U garak
# 또는 최신 GitHub 버전 설치
python -m pip install -U git+https://github.com/NVIDIA/garak.git@main
개발을 위해 Conda 환경 (Python 3.11–3.13)을 권장합니다.
스캔 실행 – 기본 명령어는 다음과 같습니다:
python -m garak --target_type <generator> --target_name <model>
--target_type는 사용할 플러그인을 지정합니다 (예:huggingface,openai,bedrock).--target_name은 모델 식별자입니다 (예:gpt2,meta/llama-3.1-8b-instruct).- 기본적으로 모든 내장 프로브가 실행됩니다.
--spec probes.<family>또는 구체적인 프로브 (예:--spec probes.dan.Dan_11_0)로 범위를 좁힐 수 있습니다. - 결과는 각 프로브별 PASS/FAIL 표로 출력되며, 후속 분석을 위해 세부적인 JSONL 보고서가 파일에 기록됩니다.
예시 – OpenAI의 gpt-5-nano 모델에 인코딩 기반 프롬프트 인젝션을 테스트하는 경우:
export OPENAI_API_KEY=sk-…
python -m garak --target_type openai --target_name gpt-5-nano --spec probes.encoding
예시 – Hugging Face의 gpt2 모델에 전통적인 "DAN" 재판도구를 적용하는 경우:
python -m garak --target_type huggingface --target_name gpt2 --spec probes.dan.Dan_11_0
프로브 카탈로그 (선택 사항)
| 프로브 | 목적 |
|---|---|
blank |
빈 프롬프트 전송 – 기준 테스트 |
atkgen |
자동 유해 출력 생성 (微조정된 GPT-2 사용) |
badchars |
유니코드 변형 공격 (보이지 않는 문자, 동형 문자) |
dan |
다양한 "무엇이든 지금 바로" 재판도구 프롬프트 |
encoding |
MIME/quoted-printable 인코딩을 통한 프롬프트 인젝션 |
leakreplay |
모델이 학습 데이터를 재생성하는지 확인 |
malwaregen |
모델이 악성 코드를 출력하도록 유도 시도 |
promptinject |
Agency Enterprise PromptInject 프레임워크 구현 (NeurIPS 2022 수상) |
snowball |
모델을 "눈덩이식 환각" 루프로 유도 |
xss |
크로스사이트 스크립팅 또는 데이터 유출에 사용 가능한 응답 탐지 |
출력 및 로깅
garak.log– 실행 간 지속적인 디버그 로그.- 실행별 JSONL 파일 – 각 생성 및 평가 결과가 기록됨.
- 히트 로그 – 검출기가 트리거된 시도만 기록.
- 작은 도우미 스크립트 (
analyse/analyse_log.py)로 가장 흔한 히트를 요약 가능.
garak 확장하기 – 프레임워크는 플러그인 중심입니다. 다음을 추가할 수 있습니다:
- 새로운 프로브 (
garak.probes.base.TextProbe상속) - 새로운 검출기 (
garak.detectors.base.Detector상속) - 사용자 정의 API 또는 로컬 모델용 새로운 생성기 리포지토리에는 플러그인 작성 및 테스트를 위한 빠른 시작 가이드가 포함되어 있습니다.
문서 및 커뮤니티
- 전체 사용자 가이드: https://docs.garak.ai/
- API 참조: https://reference.garak.ai/
- Discord 채팅, Twitter @garak_llm, DEF CON 발표 슬라이드는 README에서 링크됨.
- 프로젝트는 Apache-2.0 라이선스로 공개되며 PyPI에 게시됨.
사용 시기 – LLM 기반 서비스를 개발하거나 배포하고 있으며, 프롬프트 인젝션, 환각, 데이터 유출, 악성 출력 위험을 자동으로 탐지할 필요가 있다면, garak은 준비된 공격 세트와 체계적인 보고서 형식을 제공합니다.
관련
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트
- 프로젝트