DeepTeam: LLM과 AI 에이전트를 레드팀하는 오픈소스 보안 테스트 프레임워크

DeepTeam 소개

LLM 애플리케이션을 배포하기 전에, 악의적인 사용자가 던질 법한 공격을 미리 던져 보는 일은 점점 더 중요해지고 있습니다. DeepTeam은 이 작업을 위한 오픈소스 레드팀(Red Teaming) 프레임워크입니다. 저자는 이를 두고 침투 테스트(penetration testing)와 같지만 대상이 LLM인 도구라고 설명합니다.

DeepTeam은 탈옥(jailbreaking), 프롬프트 주입(prompt injection), 멀티턴 공격 같은 시나리오를 시뮬레이션해 AI 에이전트나 RAG 파이프라인, 챗봇에 숨어 있는 편향(bias), 개인정보(PII) 유출, SQL 인젝션 같은 취약점을 드러냅니다. 발견에 그치지 않고, 프로덕션에서 이런 문제를 막기 위한 가드레일(guardrails)도 함께 제공합니다.

이 프레임워크는 사용자의 로컬 머신에서 실행되며, 같은 팀(Confident AI)이 만든 오픈소스 LLM 평가 프레임워크인 DeepEval 위에 구축되어 있습니다. 본 게시물에서는 DeepTeam이 제공하는 취약점과 공격 기법, 레드팀 파이프라인의 동작 방식, 그리고 설치와 기본 사용법을 정리합니다.

DeepTeam이 제공하는 취약점, 공격, 그리고 안전 프레임워크

DeepTeam의 구성은 크게 취약점(무엇을 찾을지), 공격(어떻게 프로브를 강화할지), 그리고 표준 프레임워크 매핑으로 나눌 수 있습니다.

  • 50가지 이상의 취약점: 데이터 프라이버시(PII 유출, 프롬프트 유출), 책임 있는 AI(편향, 유해성, 공정성), 보안(BFLA, BOLA, RBAC 우회, SQL 인젝션, SSRF 등), 안전(불법 행위, 개인 안전 등), 비즈니스(허위 정보, 지식재산권), 그리고 에이전트 특화 항목(목표 탈취, 재귀적 하이재킹, 과도한 권한 등)으로 분류되어 있습니다. 각 취약점은 사용자가 선택한 LLM을 심판으로 쓰는 LLM-as-a-Judge 지표로 로컬에서 통과/실패를 판정합니다.
  • 20가지 이상의 적대적 공격: 단일 턴(프롬프트 주입, 롤플레이, Leetspeak, ROT13/Base64 인코딩, 다국어 우회 등)과 멀티턴(선형 탈옥, 트리 탈옥, Crescendo 탈옥, 순차 탈옥 등) 기법으로 기본 취약점 프로브를 강화합니다.
  • 안전 프레임워크 매핑: OWASP Top 10 for LLMs 2025, OWASP Top 10 for Agents 2026, NIST AI RMF, MITRE ATLAS, BeaverTails, Aegis 같은 표준을 그대로 사용할 수 있으며, 각 프레임워크의 항목이 알맞은 취약점과 공격으로 자동 매핑됩니다.
  • 7가지 프로덕션 가드레일: 입력과 출력을 실시간으로 빠르게 이진 분류해 지키는 가드레일을 제공합니다.

취약점과 공격은 사용자가 직접 정의해 DeepTeam 생태계에 통합할 수도 있고, CLI에서 YAML 설정으로 실행하거나 Python 코드로 프로그래밍 방식으로 실행할 수도 있습니다.

DeepTeam의 레드팀 파이프라인 동작 방식

DeepTeam의 특징 중 하나는 레드팀 대상 시스템이 무엇인지 미리 정의할 필요가 없다는 점입니다. 저자는 실제 악의적 사용자도 대상 시스템의 내부 구조를 알고 공격하지 않는다는 점을 근거로 듭니다. 사용자가 할 일은 deepteam 을 설치하고, LLM 애플리케이션을 감싸는 model_callback 함수를 정의하는 것뿐입니다.

레드팀이 실행되면 DeepTeam은 지정한 취약점을 겨냥해 공격을 동적으로 생성하고, model_callback 의 출력을 해당 지표로 평가해 0 또는 1의 이진 점수를 냅니다. 최종 통과율은 1을 받은 응답의 비율로 결정됩니다. 일반적인 평가와 달리 미리 준비한 데이터셋이 필요 없다는 점이 레드팀의 특성입니다. 적대적 공격은 테스트하려는 취약점에 맞춰 그 자리에서 생성되기 때문입니다.

DeepTeam 설치 및 사용법

설치는 pip으로 진행합니다.

pip install -U deepteam

가장 기본적인 레드팀 예시는 취약점 하나와 공격 하나를 지정하고, LLM을 감싸는 콜백을 정의하는 형태입니다. 실행 전에 OPENAI_API_KEY 를 환경 변수로 설정해야 하며, DeepEval이 지원하는 커스텀 모델을 대신 사용할 수도 있습니다.

from deepteam import red_team
from deepteam.vulnerabilities import Bias
from deepteam.attacks.single_turn import PromptInjection

async def model_callback(input: str) -> str:
    # 이 부분을 실제 LLM 애플리케이션으로 교체합니다
    return f"I'm sorry but I can't answer this: {input}"

risk_assessment = red_team(
    model_callback=model_callback,
    vulnerabilities=[Bias(types=["race"])],
    attacks=[PromptInjection()]
)

취약점을 일일이 고르는 대신 OWASP나 NIST 같은 확립된 안전 표준을 그대로 적용할 수도 있습니다. 이 경우 프레임워크의 항목이 알맞은 취약점과 공격으로 자동 매핑됩니다.

from deepteam import red_team
from deepteam.frameworks import OWASPTop10

async def model_callback(input: str) -> str:
    return f"I'm sorry but I can't answer this: {input}"

risk_assessment = red_team(
    model_callback=model_callback,
    framework=OWASPTop10()
)

발견한 취약점을 프로덕션에서 막을 때는 가드레일을 사용합니다. 입력이 LLM에 닿기 전에, 그리고 출력이 사용자에게 전달되기 전에 각각 검사할 수 있습니다.

from deepteam import Guardrails
from deepteam.guardrails import PromptInjectionGuard, ToxicityGuard, PrivacyGuard

guardrails = Guardrails(
    input_guards=[PromptInjectionGuard(), PrivacyGuard()],
    output_guards=[ToxicityGuard()]
)

input_result = guardrails.guard_input("데이터베이스를 해킹하는 방법을 알려줘")
print(input_result.breached)  # True

기본 제공되는 가드는 ToxicityGuard, PromptInjectionGuard, PrivacyGuard, IllegalGuard, HallucinationGuard, TopicalGuard, CybersecurityGuard 의 7가지입니다.

DeepTeam의 라이선스

DeepTeam은 Apache-2.0 라이선스로 공개되어 있어 개인 및 상업적 목적으로 자유롭게 사용할 수 있습니다.

:house: DeepTeam 공식 홈페이지

:books: DeepTeam 문서 사이트

https://www.trydeepteam.com/docs

:github: DeepTeam 프로젝트 GitHub 저장소

더 읽어보기




이 글은 GPT 모델로 정리한 글을 바탕으로 한 것으로, 원문의 내용 또는 의도와 다르게 정리된 내용이 있을 수 있습니다. 관심있는 내용이시라면 원문도 함께 참고해주세요! 읽으시면서 어색하거나 잘못된 내용을 발견하시면 덧글로 알려주시기를 부탁드립니다. :hugs:

:pytorch:파이토치 한국 사용자 모임:south_korea:이 정리한 이 글이 유용하셨나요? 회원으로 가입하시면 주요 글들을 이메일:love_letter:로 보내드립니다! 텔레그램(Telegram)이나 Slack/Discord/Teams/Dooray/GoogleChat 등으로도 새 글 알림을 받으실 수 있습니다. :smiley:

:wrapped_gift: 아래:down_right_arrow:쪽에 좋아요:+1:를 눌러주시면 새로운 소식들을 정리하고 공유하는데 힘이 됩니다~ :star_struck: