Promptfoo 레드티밍
Promptfoo 레드티밍(Promptfoo red teaming)은 Promptfoo가 제공하는 생성형 인공지능 및 대형 언어 모델(Large Language Model, LLM) 애플리케이션 대상 자동화 보안 평가 기능으로, 프롬프트 인젝션, 탈옥, 민감정보 유출, 접근 제어 우회, RAG 오염, 에이전트 도구 오남용 등을 배포 전에 탐지하기 위해 사용된다.
Promptfoo의 공식 문서에서 기능명은 영어로 red teaming 또는 LLM red teaming으로 표기된다. Promptfoo CLI와 설정 파일에서는 명령어 및 설정 키로 공백 없는 redteam을 사용한다.[1][2]
한국어 문서명으로는 보안 평가 활동 자체를 가리키는 표현인 Promptfoo 레드티밍이 적절하다. “레드팀”은 일반적으로 공격자 역할을 맡는 조직이나 팀을 가리키는 경우가 많고, “레드티밍”은 모의 공격과 적대적 테스트를 수행하는 활동을 가리키는 표현으로 쓰인다.
| 구분 | 권장 표기 | 설명 |
|---|---|---|
| 문서 제목 | Promptfoo 레드티밍 | 기능과 활동을 설명하는 한국어 제목 |
| 공식 영어 표현 | Promptfoo red teaming, LLM red teaming | Promptfoo 공식 문서의 표현 |
| CLI 명령어 | promptfoo redteam ...
|
명령어에서는 redteam을 사용
|
| 설정 키 | redteam:
|
promptfooconfig.yaml의 레드티밍 설정 섹션
|
Promptfoo 레드티밍은 LLM 애플리케이션에 적대적 입력(adversarial input)을 자동 생성하고, 대상 시스템의 응답을 평가하여 보안·안전성·정책 위반 위험을 확인하는 기능이다. Promptfoo 공식 문서는 LLM 레드티밍을 배포 전에 시뮬레이션된 적대적 입력을 사용해 AI 시스템의 취약점을 찾는 방법으로 설명한다.[3]
기존 보안 테스트가 주로 코드, API, 인프라 취약점을 다룬다면, Promptfoo 레드티밍은 자연어 입력, 시스템 프롬프트, 검색 증강 생성(RAG), 에이전트 도구 호출, 모델 응답 정책 등 LLM 애플리케이션 특유의 공격면을 다룬다. 챗봇, RAG 시스템, 업무 자동화 에이전트처럼 외부 데이터나 도구와 연결된 시스템에서는 정보 유출, 권한 우회, 도구 오남용이 함께 발생할 수 있다.
Promptfoo 레드티밍의 목적은 단순히 모델이 유해한 답변을 생성하는지 확인하는 데 그치지 않고, 실제 애플리케이션 맥락에서 발생할 수 있는 실패 모드를 사전에 찾는 것이다.
주요 목적은 다음과 같다.
- 배포 전 LLM 애플리케이션의 취약점 탐지
- 프롬프트 인젝션 및 탈옥 공격에 대한 방어력 확인
- 개인정보, 기밀정보, 내부 프롬프트 유출 가능성 평가
- RAG 문서 오염, 문서 탈취, 허위 출처 생성 여부 확인
- 에이전트의 외부 도구 호출 및 권한 행사 위험 점검
- 보안 정책, 비즈니스 규칙, 컴플라이언스 요구사항 위반 여부 평가
- CI/CD 파이프라인에서 LLM 보안 회귀 테스트 수행
Promptfoo의 자동화 레드티밍은 크게 플러그인(plugins), 전략(strategies), 타깃(targets)의 세 요소로 구성된다. 공식 아키텍처 문서는 Promptfoo 자동화 레드티밍이 이 세 구성 요소를 중심으로 모듈식으로 동작한다고 설명한다.[4]
| 구성 요소 | 설명 |
|---|---|
| 타깃 | 테스트할 LLM 애플리케이션, 모델, API 엔드포인트 또는 커스텀 제공자(provider)를 의미한다. |
| 플러그인 | 특정 취약점 유형을 겨냥한 적대적 입력 생성기이다. 예를 들어 프롬프트 추출, 접근 제어 우회, 개인정보 유출, RAG 오염 등을 검사한다. |
| 전략 | 플러그인이 만든 공격 의도를 어떤 방식으로 전달할지 정하는 공격 기법이다. 예를 들어 탈옥 템플릿, 인코딩, 다중 턴 대화, 간접 프롬프트 인젝션 등을 적용한다. |
| 평가기 | 대상 시스템의 응답이 취약점 성공, 정책 위반, 정상 방어 또는 실패에 해당하는지 판정한다. |
| 보고서 | 실행 결과를 취약점 유형, 심각도, 성공률, 실패 사례, 완화 제안 등으로 정리한다. |
Promptfoo 레드티밍은 일반적으로 설정 초기화, 테스트 생성 및 실행, 보고서 확인 순서로 수행된다. 공식 설정 문서는 기본 명령 흐름을 promptfoo redteam init, promptfoo redteam run, promptfoo redteam report로 제시한다.[5]
promptfoo redteam init
promptfoo redteam run
promptfoo redteam report
GUI 없이 설정을 초기화할 수도 있다.
promptfoo redteam init --no-gui
promptfoo redteam run은 적대적 테스트 케이스 생성과 평가 실행을 함께 수행하는 명령으로, 설정 파일을 기준으로 테스트를 만들고 대상 시스템에 실행한다.[6]
Promptfoo 레드티밍 설정은 일반적으로 promptfooconfig.yaml 파일의 redteam 섹션에 작성한다. 이 섹션에는 테스트 대상 애플리케이션의 목적, 검사할 플러그인, 적용할 전략 등이 포함된다.[7]
간단한 설정 예시는 다음과 같다.
description: Customer support chatbot red teaming
prompts:
- '{{prompt}}'
providers:
- id: http
config:
url: https://example.com/chat
method: POST
body:
message: '{{prompt}}'
redteam:
purpose: >
고객 지원 챗봇이다. 사용자는 자신의 주문 상태만 조회할 수 있으며,
다른 고객의 개인정보, 주문 내역, 내부 정책, 시스템 프롬프트를 볼 수 없다.
plugins:
- id: prompt-extraction
- id: bola
- id: pii
- id: indirect-prompt-injection
strategies:
- jailbreak:meta
- jailbreak:hydra
위 예시는 고객 지원 챗봇을 대상으로 시스템 프롬프트 추출, 객체 수준 권한 우회, 개인정보 유출, 간접 프롬프트 인젝션을 검사하도록 구성한 예이다. 실제 운영 환경에서는 애플리케이션의 기능, 사용자 유형, 접근 가능한 데이터, 금지 행위, 허용되는 응답 범위를 더 구체적으로 작성해야 한다.
플러그인은 취약점 유형별 테스트 케이스를 생성하는 모듈이다. Promptfoo 공식 문서는 플러그인을 LLM 모델과 LLM 기반 애플리케이션의 다양한 위험과 취약점을 테스트하기 위한 모듈형 시스템으로 설명한다.[8]
주요 플러그인 범주는 다음과 같다.
| 범주 | 예시 | 설명 |
|---|---|---|
| 프롬프트 보안 | prompt-extraction, system-prompt-override, indirect-prompt-injection
|
시스템 프롬프트 유출, 원래 지시 무시, 외부 문서나 변수에 숨겨진 명령 주입을 검사한다. |
| 접근 제어 | bola, bfla, rbac
|
다른 사용자의 데이터 접근, 권한 없는 기능 호출, 역할 기반 접근 통제 우회 여부를 검사한다. |
| RAG 보안 | rag-poisoning, rag-document-exfiltration, rag-source-attribution
|
검색 문서 오염, 문서 내용 탈취, 출처 조작을 검사한다. |
| 도구 및 코드 실행 | sql-injection, shell-injection, ssrf, tool-discovery
|
LLM 응답이 데이터베이스, 셸, 네트워크 요청, 외부 도구와 연결될 때의 위험을 검사한다. |
| 데이터 보호 | pii 등
|
개인정보, 금융정보, 내부 기밀정보가 응답에 포함되는지 확인한다. |
| 유해 콘텐츠 | harmful 계열
|
폭력, 범죄, 혐오, 악성 행위 조력 등 정책 위반 응답을 검사한다. |
Promptfoo는 내장 플러그인 외에도 파일 기반 사용자 정의 플러그인을 지원한다. 사용자 정의 플러그인은 조직 고유의 정책, 산업별 위험, 서비스별 비즈니스 규칙을 테스트할 때 사용된다.[9]
전략은 플러그인이 생성한 공격 의도를 대상 시스템에 전달하는 방식이다. Promptfoo 공식 문서는 전략을 생성된 입력을 특정 공격 패턴으로 감싸 더 정교한 탈옥과 인젝션을 만들기 위한 기법으로 설명한다.[10][11]
주요 전략은 다음과 같다.
| 전략 유형 | 설명 |
|---|---|
| 정적 전략 | Base64 인코딩, 특수 문자 변형, 탈옥 템플릿처럼 사전 정의된 변환을 적용한다. |
| 동적 전략 | 다른 LLM을 공격자로 사용해 대상 응답에 따라 공격 문구를 조정한다. |
| 다중 턴 전략 | 여러 차례의 대화를 통해 점진적으로 금지된 목표에 접근하거나 맥락을 누적한다. |
| 간접 프롬프트 인젝션 전략 | 문서, 웹페이지, 검색 결과, 사용자 제공 데이터 등에 숨겨진 명령을 통해 시스템을 우회한다. |
| 사용자 정의 전략 | 조직이나 서비스 특성에 맞는 공격 절차를 자연어 또는 코드로 정의한다. |
전략은 전체 테스트 스위트에 적용할 수도 있고, 특정 플러그인에만 적용하도록 제한할 수도 있다.[12]
redteam:
strategies:
- id: jailbreak:tree
config:
plugins:
- harmful:hate
Promptfoo 레드티밍은 LLM 애플리케이션의 보안·안전성 실패를 여러 관점에서 점검한다. Promptfoo는 자체 문서에서 프롬프트 인젝션, RAG, 에이전트, 챗봇 등 시스템 설계에 따라 서로 다른 취약점이 발생한다고 설명한다.[13]
대표적인 점검 대상은 다음과 같다.
- 프롬프트 인젝션: 사용자의 입력이나 외부 문서가 시스템 지시를 덮어쓰거나 우회하는지 확인한다.
- 시스템 프롬프트 추출: 내부 지시문, 정책, 도구 설명이 사용자에게 노출되는지 확인한다.
- 민감정보 유출: 개인정보, 고객 데이터, 영업비밀, 내부 문서가 응답에 포함되는지 확인한다.
- 접근 제어 우회: 다른 사용자나 다른 권한 범위의 데이터에 접근할 수 있는지 확인한다.
- RAG 오염: 검색 문서에 삽입된 악성 지시가 답변 생성에 영향을 주는지 확인한다.
- RAG 문서 탈취: 사용자가 원문 문서, 비공개 컨텍스트, 검색 결과를 부적절하게 추출할 수 있는지 확인한다.
- 도구 오남용: 모델이 외부 API, 데이터베이스, 셸, 업무 시스템을 권한 이상으로 호출하는지 확인한다.
- 허위 출처 생성: 존재하지 않는 문서, 규정, 정책을 출처처럼 생성하는지 확인한다.
- 비즈니스 규칙 위반: 환불, 승인, 계약, 금융 조언, 의료 조언 등 서비스 정책을 위반하는지 확인한다.
- 유해 콘텐츠 생성: 폭력, 범죄, 혐오, 악성코드, 사기 등 금지된 내용을 생성하는지 확인한다.
LLM 에이전트는 외부 시스템과 상호작용하고 자연어 인터페이스를 통해 복잡한 작업을 실행할 수 있으므로, 단순한 텍스트 응답 모델보다 공격면이 넓다. Promptfoo의 에이전트 레드티밍 문서는 에이전트가 외부 시스템과 민감 데이터에 접근할 수 있게 될수록 보안 평가가 필수적이라고 설명한다.[14]
에이전트 레드티밍에서는 다음과 같은 요소를 함께 검토한다.
- 도구 호출 권한이 최소화되어 있는지
- 모델이 사용자의 권한을 넘어선 작업을 수행하지 않는지
- 외부 API 호출 전 확인 절차가 필요한 작업을 자동 실행하지 않는지
- 민감 데이터가 프롬프트, 로그, 응답에 노출되지 않는지
- 다중 단계 작업에서 중간 결과가 공격자에게 악용되지 않는지
- 도구 호출 실패나 예외 상황에서 안전한 응답을 반환하는지
Promptfoo 레드티밍은 로컬 테스트뿐 아니라 CI/CD 파이프라인에 통합해 사용할 수 있다. Promptfoo 저장소와 문서는 프롬프트, 에이전트, RAG를 테스트하고 레드티밍 및 취약점 스캐닝을 자동화할 수 있음을 설명한다.[15][16]
예를 들어 pull request에서 시스템 프롬프트, 정책 파일, RAG 문서, 에이전트 도구 설정이 변경될 때 자동으로 레드티밍 테스트를 실행할 수 있다. Promptfoo 설정 문서는 --tag 옵션으로 CI 실행 ID나 Git 커밋 해시 같은 실행 맥락을 기록할 수 있다고 설명한다.[17]
promptfoo redteam run --tag ci.run-id="$CI_RUN_ID" --tag git.sha="$GIT_SHA"
이 방식은 LLM 애플리케이션의 변경 사항이 기존 보안 기준을 악화시키는지 확인하는 회귀 테스트로 활용될 수 있다.
Promptfoo 레드티밍 결과는 취약점별 성공 여부, 심각도, 실패 사례, 공격 성공률 등을 중심으로 해석한다. 다만 공격 성공률은 테스트 케이스 수, 플러그인 선택, 전략 선택, 모델 설정, 평가기 기준, 다중 턴 여부에 따라 달라질 수 있으므로 단독 지표로 절대화하기 어렵다.
결과 해석 시에는 다음 사항을 함께 검토해야 한다.
- 공격 성공 사례가 실제 운영 환경에서 재현 가능한지
- 평가기의 오탐 또는 미탐이 있는지
- 실패 사례가 모델 응답 문제인지, 애플리케이션 권한 설계 문제인지
- 취약점이 단일 턴에서 발생했는지, 다중 턴 맥락 누적 후 발생했는지
- 방어 조치 후 동일 테스트와 변형 테스트에서 재발하지 않는지
- 낮은 심각도 항목이라도 자동화 공격에서 악용될 가능성이 있는지
Promptfoo는 LLM 애플리케이션 평가와 레드티밍을 위한 CLI 및 라이브러리로 공개되어 있으며, GitHub 저장소 설명은 Promptfoo를 LLM 앱 평가 및 레드티밍 도구로 소개한다.[18]
2026년 3월 9일 OpenAI는 Promptfoo를 인수한다고 발표했다. OpenAI는 Promptfoo를 AI 시스템 개발 중 취약점을 식별하고 수정하도록 돕는 AI 보안 플랫폼으로 설명했으며, Promptfoo 기술을 OpenAI Frontier에 통합할 계획이라고 밝혔다.[19]
Promptfoo 레드티밍은 LLM 애플리케이션 보안 검증을 자동화하는 데 유용하지만, 완전한 보안 보증 수단은 아니다. LLM은 확률적 시스템이므로 동일한 입력에도 다른 응답이 나올 수 있고, 모델 제공자의 정책, 모델 버전, 검색 결과, 도구 상태에 따라 결과가 달라질 수 있다.
주요 한계는 다음과 같다.
- 테스트에 포함되지 않은 공격 시나리오는 발견하지 못할 수 있다.
- 평가기의 판단이 서비스 정책과 다르면 오탐 또는 미탐이 발생할 수 있다.
- 공격 성공률은 설정과 시도 예산에 크게 의존한다.
- 다중 턴 공격은 실제 세션 관리 방식과 다르게 구성되면 결과 해석이 왜곡될 수 있다.
- 외부 LLM을 공격 생성기나 평가기로 사용할 경우 데이터 처리 정책과 비용을 별도로 검토해야 한다.
- 레드티밍 결과가 양호하더라도 권한 최소화, 출력 검증, 감사 로그, 운영 모니터링은 별도로 필요하다.
- ↑ Promptfoo Docs, “LLM red teaming guide (open source)”, https://www.promptfoo.dev/docs/red-team/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red team Configuration”, https://www.promptfoo.dev/docs/red-team/configuration/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “LLM red teaming guide (open source)”, https://www.promptfoo.dev/docs/red-team/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Architecture”, https://www.promptfoo.dev/docs/red-team/architecture/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red team Configuration”, https://www.promptfoo.dev/docs/red-team/configuration/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Getting started”, https://www.promptfoo.dev/docs/red-team/quickstart/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red team Configuration”, https://www.promptfoo.dev/docs/red-team/configuration/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red Team Plugins”, https://www.promptfoo.dev/docs/red-team/plugins/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Custom Plugins”, https://www.promptfoo.dev/docs/red-team/plugins/custom/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Getting started”, https://www.promptfoo.dev/docs/red-team/quickstart/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red Team Strategies”, https://www.promptfoo.dev/docs/red-team/strategies/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red Team Strategies”, https://www.promptfoo.dev/docs/red-team/strategies/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “LLM red teaming guide (open source)”, https://www.promptfoo.dev/docs/red-team/, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “How to red team LLM Agents”, https://www.promptfoo.dev/docs/red-team/agents/, 확인일: 2026-06-24
- ↑ GitHub, “promptfoo/promptfoo”, https://github.com/promptfoo/promptfoo, 확인일: 2026-06-24
- ↑ GitHub, “promptfoo-action”, https://github.com/promptfoo/promptfoo-action, 확인일: 2026-06-24
- ↑ Promptfoo Docs, “Red team Configuration”, https://www.promptfoo.dev/docs/red-team/configuration/, 확인일: 2026-06-24
- ↑ GitHub, “promptfoo/promptfoo”, https://github.com/promptfoo/promptfoo, 확인일: 2026-06-24
- ↑ OpenAI, “OpenAI to acquire Promptfoo”, https://openai.com/index/openai-to-acquire-promptfoo/, 확인일: 2026-06-24
