Handlebars 템플릿 기반 LLM 프롬프트에서의 구조적 역할 주입: 삼중 중괄호 보간, 구분자 제품군, 그리고 HTML 자동 이스케이프의
요약
Handlebars 템플릿 엔진을 사용하는 LLM 애플리케이션에서 이스케이프 처리가 구조적 역할 주입 공격을 완벽히 방어하지 못함을 규명했습니다. HTML 이스케이프는 특정 구분자만 보호할 뿐, 콜론이나 마크다운 기반의 역할 위조 공격에는 취약함을 실험으로 증명했습니다.
핵심 포인트
- Handlebars의 HTML 이스케이프는 꺾쇠괄호만 보호하며 콜론, 마크다운 등은 방어 불가
- 구조적 역할 주입을 통해 공격자가 채팅 역할을 위조하여 지시사항을 탈취 가능
- GPT-3.5 Turbo는 이스케이프 처리 후에도 높은 작업 탈취 성공률을 보임
- Claude Haiku 4.5는 두 가지 공격 목표 모두에 대해 높은 저항력을 나타냄
- 단순 이스케이프는 지시사항과 데이터의 구조적 분리를 대체할 수 없음
대규모 언어 모델 (LLM) 애플리케이션은 템플릿으로부터 프롬프트를 구축하며, Handlebars는 널리 사용되는 템플릿 엔진이자 Microsoft Semantic Kernel의 기본 프롬프트 템플릿 형식입니다. Handlebars의 이중 중괄호 {x} 표현식은 보간된 값을 HTML 이스케이프 (HTML-escape) 처리하며 안전한 기본값으로 문서화되어 있는 반면, 삼중 중괄호 {{{x}}} 표현식은 값을 원문 그대로 (raw) 삽입합니다. 본 연구에서는 이러한 선택이 애플리케이션을 구조적 역할 주입 (structural role injection) 노출에 조용히 지배하고 있음을 보여줍니다. 구조적 역할 주입이란 공격자가 제어하는 데이터가 더 높은 권한의 턴을 위조하는 채팅 역할 구분자 (chat role delimiters)를 포함하는 것을 의미합니다. 모델을 사용하지 않는 분석 (model-free analysis)을 통해 그 메커니즘을 규명했습니다. Handlebars 이스케이프는 꺾쇠괄호 (angle brackets)는 다시 쓰지만 대괄호 (square brackets), 콜론 (colons), 또는 Markdown 해시 (#)는 다시 쓰지 않습니다. 따라서 ChatML, Llama-3, XML 역할 구분자는 무력화하지만 (생존율 0.00), Llama-2 [INST], 레거시 Human:/Assistant:, 그리고 Markdown ### 구분자는 그대로 유지합니다 (마지막 두 가지의 생존율 1.00). 이후 우리는 7개의 구분자 제품군, 2개의 공격 목표, 4개의 모델 (GPT-3.5 Turbo, GPT-4o mini, GPT-4.1 mini, Claude Haiku 4.5)에 대해 총 1.63 USD의 API 비용을 들여 5,760회의 실험을 수행했습니다. GPT-3.5 Turbo는 원문(raw) 실험의 97%, 이스케이프(escaped) 실험의 91%에서 작업 탈취 (task-hijack) 지시를 따랐으며, 이스케이프 보호 기능은 꺾쇠괄호 기반 제품군에 집중되어 있고 콜론 및 Markdown 기반 제품군에서는 나타나지 않았습니다. 포화되지 않는 더 어려운 목표인 비밀 탈취 (secret-exfiltration)는 동일한 제품군 간의 상호작용을 더 명확하게 드러냅니다. Claude Haiku 4.5는 두 가지 목표 모두에 거의 완벽하게 저항합니다. 이스케이프된 기본값은 HTML 이스케이프가 우연히 다루는 문자를 포함하는 구분자 체계만을 보호할 뿐, 나머지에 대해서는 아무런 보호를 제공하지 못하며, 지시 사항과 데이터의 구조적 분리를 대체할 수 없습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 arXiv cs.LG의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기