배드템플릿: 챗 템플릿을 이용한 무학습 백도어 공격
초록
본 논문은 LLM의 챗 템플릿을 변조해 시스템 프롬프트에 악성 명령을 삽입함으로써, 모델 파라미터를 수정하지 않고도 높은 성공률의 백도어를 구현하는 BadTemplate 기법을 제안한다. 단어‑레벨·문장‑레벨 두 가지 트리거를 설계하고, 5개 데이터셋·9개 모델에 대한 실험을 통해 100%에 달하는 공격 성공률을 보이며 기존 프롬프트 기반 백도어보다 우수함을 입증한다. 또한 HuggingFace와 LLM‑as‑a‑judge 검증에서도 탐지율이 낮아 실전 위협이 크다는 점을 강조한다.
상세 분석
BadTemplate은 기존 백도어 연구가 모델 파라미터를 변조하거나 데이터셋을 오염시키는 훈련‑시점 공격에 비해, “템플릿 수준”이라는 새로운 공격 면을 활용한다는 점에서 혁신적이다. 챗 템플릿은 LLM의 토크나이저와 함께 배포되는 Jinja‑style 스크립트이며, 시스템·사용자·어시스턴트 역할을 명시적으로 구분한다. 논문은 템플릿이 사용자에게 투명하게 동작한다는 전제 하에, 공격자가 템플릿 파일에 임의 문자열 s를 삽입하면, 해당 문자열이 시스템 프롬프트에 무조건 앞서 붙게 된다는 사실을 발견한다(식 3, 4). 이를 악용해 공격자는 “백도어 명령”(I_b)을 시스템 프롬프트 뒤에 삽입하고, 트리거 단어(또는 문장)가 입력에 포함될 때만 모델이 사전 정의된 악성 출력을 생성하도록 만든다.
기술적으로 BadTemplate은 두 가지 변형을 제공한다. ① 단어‑레벨 트리거는 짧은 키워드 하나로 높은 성공률을 보이며, 공격 효과가 강하지만 탐지 위험이 상대적으로 크다. ② 문장‑레벨 트리거는 자연스러운 문맥에 녹아들어 탐지 회피가 용이하지만, 성공률이 다소 낮을 수 있다. 두 변형 모두 인‑컨텍스트 러닝(ICL) 기반 데모를 활용해 라벨 공간을 제한함으로써, 백도어가 정상적인 출력과 구분되지 않도록 설계되었다.
실험에서는 6개의 오픈소스(Llama‑2, Mistral 등)와 3개의 클로즈드소스(GPT‑4o, Gemini‑2.5, Claude‑3.5) 모델을 대상으로, 감정 분석, 뉴스 카테고리 분류, 스팸 탐지 등 5개의 벤치마크 데이터셋에 적용했다. BadTemplate은 모든 모델에서 90% 이상, 최악의 경우에도 100%에 근접하는 공격 성공률을 기록했으며, 정상 입력에 대한 성능 저하가 거의 없었다. 이는 시스템 프롬프트에 삽입된 명령이 모델의 기본 행동을 크게 바꾸지 않으면서도, 트리거가 등장할 때만 특정 행동을 유도한다는 점을 보여준다.
탐지 측면에서는 HuggingFace의 모델 검증 파이프라인과 최근 제안된 LLM‑as‑a‑judge 방식을 적용했지만, 악성 템플릿의 대부분이 탐지되지 않았다. 이는 현재의 모델 검증 도구가 토크나이저 내부의 Jinja 스크립트를 정밀히 분석하지 못하고, 단순히 메타데이터나 파라미터 변화를 중심으로 검사하기 때문이다. 따라서 BadTemplate은 공급망 공격 시나리오에서 “경량·고효율·대규모 전파”라는 위험 특성을 갖는다.
한계점으로는 (1) 공격자가 템플릿 파일에 접근할 수 있는 전제 조건이 필요하다는 점, (2) 시스템 프롬프트에 삽입된 명령이 특정 LLM의 프롬프트 해석 방식에 따라 다르게 동작할 가능성이 있다는 점, (3) 방어 연구가 아직 초기 단계라 탐지·완화 기법이 부족하다는 점을 들 수 있다. 향후 연구는 템플릿 검증 체계를 강화하고, 시스템 프롬프트와 사용자 프롬프트를 격리하는 메커니즘을 도입함으로써 공급망 전반에 걸친 보안을 향상시킬 필요가 있다.
댓글 및 학술 토론
Loading comments...
의견 남기기