78,000개의 공격 샘플을 통해 배운 프롬프트 인젝션 (Prompt Injection) 탐지법
요약
78,000개의 공격 샘플을 활용하여 LLM 대신 정규 표현식과 고전적 머신러닝을 결합한 프롬프트 인젝션 탐지기를 구축한 사례를 소개합니다. LLM 기반 탐지의 지연 시간, 비용, 비결정론적 문제를 지적하며 실무적인 대안을 제시합니다.
핵심 포인트
- LLM 기반 탐지는 지연 시간, 비용, 비결정론적 특성 및 탈옥 취약성 문제를 가짐
- 정규 표현식과 로지스틱 회귀 조합은 7ms 내 실행 가능한 저비용·고효율 대안임
- 결정론적 방식은 실제 공격에는 강하나 미묘한 역할극 프레임 공격에는 취약함
- 오탐률(FPR)은 트래픽의 성격(정제된 입력 vs 개방형 대화)에 따라 크게 달라짐
저는 지난 시간 동안 78,000개 이상의 공격 샘플로 학습된 프롬프트 인젝션 (Prompt Injection) 탐지기를 구축하는 데 시간을 보냈습니다. 여기서 제가 놀랐던 점과, 왜 결국 유행을 따르지 않는 방식을 선택하게 되었는지에 대해 말씀드리겠습니다.
트렌디한 방식은 LLM을 사용하는 것입니다. 하지만 저는 그렇게 하지 않았습니다.
2026년의 기본 대응 방식은 "입력이 공격인지 판단하기 위해 LLM을 사용하는 것"입니다. 모델이 뉘앙스를 이해하기 때문에 매력적으로 보입니다. 하지만 모든 요청에 대해 인라인 (inline)으로 실행하려고 하면 다음과 같은 문제들이 빠르게 쌓입니다.
- 지연 시간 (Latency). 모든 호출마다 전체 모델의 왕복 시간 (round-trip)이 추가됩니다. 최소 수백 밀리초 (ms)가 소요됩니다.
- 비용 (Cost). 보안 비용이 트래픽에 따라 확장됩니다. 모든 요청마다 토큰 세금을 지불해야 합니다.
- 비결정론 (Non-determinism). 동일한 입력이라도 내일은 다른 판결을 받을 수 있습니다. 사고 검토 (incident review) 과정에서 이를 설명해 보십시오.
- 그 자체로 탈옥 (jailbreakable)이 가능합니다. 보안 모델 자체가 LLM이라면, 이는 모델이 잡아내야 할 바로 그 공격에 취약하다는 것을 의미합니다.
그래서 저는 대신 지루한 버전을 구축했습니다. 결정론적인 정규 표현식 (regex)과 고전적인 머신러닝 (ML) (TF-IDF character n-grams을 로지스틱 회귀 (logistic regression)에 적용)의 조합입니다. 탐지 경로에 LLM을 포함하지 않았습니다. 이 방식은 약 7ms 내에 실행되며, 호출당 비용이 들지 않고, 완전히 결정론적입니다.
데이터가 실제로 보여준 것
대부분의 벤더들이 하나의 수치만 인용하고 나머지는 숨기기 때문에, 저는 이 부분에 대해 솔직해지고 싶습니다.
모델이 학습되지 않은 공개 벤치마크 (held out, non-circular)에서 측정한 결과는 다음과 같습니다.
- 실제 환경의 야생 탈옥 (in-the-wild jailbreaks): 정밀도 (precision) 1.00에서 재현율 (recall) 0.895
- 난독화 / 회피 공격 (Obfuscated / evasion attacks): 정밀도 (precision) 1.00에서 0.799
- 고정된 외부 분할 데이터 (A frozen external split): 재현율 (recall) 0.804, 오탐률 (false-positive rate) 0.48%
- 미묘한 역할극 프레임의 탈옥 (Subtle roleplay-framed jailbreaks): 0.324
마지막 수치는 좋지 않으며, 목록에서 가장 중요한 수치입니다. 솔직한 분석은 결정론적 탐지가 실제 환경 및 난독화된 공격에는 탁월하지만, 미묘한 역할극 프레임에는 취약하다는 것입니다. 이것은 실제적인 격차이며, 그렇지 않은 척하는 것은 결국 누군가가 나중에 이를 발견하게 만들어 당신에 대한 신뢰를 떨어뜨릴 뿐입니다.
오탐률 (False-positive rate)은 움직이는 타겟입니다
제가 시작하기 전에 미처 깨닫지 못했던 한 가지는, 오탐률 (FPR)은 전적으로 트래픽에 따라 달라진다는 점입니다. 동일한 모델이 대략 다음과 같이 판독합니다:
- 정제된 양성 입력 (curated benign input)에 대해 약 0.4%의 오탐 (false positives)
- 현실적인 작업/채팅 트래픽 (realistic task/chat traffic)에 대해 약 2.5%
- 개방형 대화 로그 (open conversational logs)에 대해 약 5%
만약 어떤 업체가 맥락 없이 단 하나의 FPR 수치만을 제공한다면, 그들은 자신들에게 가장 유리한 사례만을 제공하고 있는 것입니다. 항상 어떤 트래픽 분포 (traffic distribution)에서 측정되었는지 물어보십시오.
인라인 레이어 (inline layer)에서 여전히 결정론적 (deterministic) 방식이 승리하는 이유
여기서 얻어야 할 교훈은 "LLM이 보안에 무용하다"가 아닙니다. 항상 켜져 있고 모든 요청을 처리해야 하는 레이어는 저렴하고, 빠르며, 결정론적 (deterministic)이어야 하며, 그럴 만한 가치가 있는 모호한 사례에 대해서만 더 무거운 단계로 격상시켜야 한다는 것입니다. 트래픽의 100%에 실행할 여력이 있는 지루한 기술이, 가끔만 실행할 여력이 있는 영리한 기술보다 낫습니다.
직접 시도해보세요
저는 페이로드 (payload)를 던져보고 판정 결과를 확인할 수 있는 데모를 준비했습니다. 별도의 가입은 필요 없습니다 (자격 증명은 미리 채워져 있습니다):
교묘하다고 생각되는 프롬프트 인젝션 (prompt-injection) 페이로드를 가져와서 통과되는지 확인해보세요. 만약 통과된다면, 그것은 저에게 진정으로 유용한 정보가 될 것입니다. 그리고 만약 여러분이 직접 탐지율을 다르게 측정했다면, 댓글을 통해 의견을 나누고 싶습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기