DOI QR코드

DOI QR Code

Inducing Harmful Speech in Large Language Models through Korean Malicious Prompt Injection Attacks

한국어 악성 프롬프트 주입 공격을 통한 거대 언어 모델의 유해 표현 유도

  • Ji-Min Suh (Kwangwoon University) ;
  • Jin-Woo Kim (Kwangwoon University)
  • 서지민 (광운대학교) ;
  • 김진우 (광운대학교)
  • Received : 2024.03.18
  • Accepted : 2024.05.09
  • Published : 2024.06.30

Abstract

Recently, various AI chatbots based on large language models have been released. Chatbots have the advantage of providing users with quick and easy information through interactive prompts, making them useful in various fields such as question answering, writing, and programming. However, a vulnerability in chatbots called "prompt injection attacks" has been proposed. This attack involves injecting instructions into the chatbot to violate predefined guidelines. Such attacks can be critical as they may lead to the leakage of confidential information within large language models or trigger other malicious activities. However, the vulnerability of Korean prompts has not been adequately validated. Therefore, in this paper, we aim to generate malicious Korean prompts and perform attacks on the popular chatbot to analyze their feasibility. To achieve this, we propose a system that automatically generates malicious Korean prompts by analyzing existing prompt injection attacks. Specifically, we focus on generating malicious prompts that induce harmful expressions from large language models and validate their effectiveness in practice.

최근 거대 언어 모델을 기반으로 한 다양한 인공지능 챗봇이 출시되고 있다. 챗봇은 대화형 프롬프트를 통해 사용자에게 빠르고 간편하게 정보를 제공할 수 있다는 이점을 가지고 있어서 질의응답, 글쓰기, 프로그래밍 등 다양한 분야에서 활용되고 있다. 그러나 최근에는 챗봇의 취약점을 악용하는 '프롬프트 주입 공격'이 제안되었는데, 이는 챗봇이 기입력된 지시사항을 위반하도록 하는 공격이다. 이와 같은 공격은 거대 언어 모델 내부의 기밀 정보를 유출하거나 또 다른 악성 행위를 유발할 수 있어서 치명적이다. 반면 이들에 대한 취약점 여부가 한국어 프롬프트를 대상으로는 충분히 검증되지 않았다. 따라서 본 논문에서는 널리 사용되는 챗봇인 ChatGPT를 대상으로 악성 한국어 프롬프트를 생성하여 공격을 수행해보고, 이들에 대한 실행 가능성을 분석하고자 한다. 이를 위해 기존에 제안된 프롬프트 주입 공격 기법을 분석하여 악의적인 한국어 프롬프트를 자동으로 생성하는 시스템을 제안하고자 한다. 특히 유해 표현을 유도하는 악성 프롬프트를 중점적으로 생성하였고 이들이 실제 유효함을 보이도록 한다.

Keywords

I. 서론

지난 몇 년간 생성형 인공지능(generative AI) 기술이 학계 및 산업계에서 많은 관심을 받고 있다. 생성형 인공지능은 기계가 창작물을 생성할 수 있도록 하는 인공지능의 하위집합으로, 최근 여러 산업을 변화시킬 수 있는 잠재력을 지닌 기술로 평가받고 있다. 특히 트랜스포머(transfomer) 기반 언어 모델이 등장함에 따라 생성형 언어 모델이 큰 주목을 받고 있는데, 그중 수십억 개의 파라미터로 훈련을 시킨 거대 언어 모델(Large Language Model, LLM)이 개발되면서 인간의 언어 능력을 모방하는 수준에 이르게 되었다. 거대 언어 모델은 지식 기반 답변, 텍스트 요약, 코드 생성, 질의응답과 같은 다양한 자연어 처리 작업을 빠르고 정확하게 수행할 수 있다. 이에 많은 기업이 거대 언어 모델을 결합한 애플리케이션을 개발하고 있으며[1, 2, 3], OpenAI의 ChatGPT, Microsoft의 Bing Chat, Google의 Bard 등의 챗봇(chatbot)이 대표적인 예제이다[4, 5, 6]. 챗봇은 인간의 대화 능력을 모방하여 대화형 프롬프트(prompt)를 통해 사용자와 의사소통을 하는데 그 목적이 있다. 최근에는 퓨샷 러닝(few-shot learning)을 이용해 언어 모델이 프롬프트에 입력된 사용자의 텍스트를 학습하여 응답을 파인튜닝(fine-tuning) 할 수 있게 되면서 더 정교한 응답과 작업을 수행할 수 있게 되었다.

그러나 한편으로는 이러한 애플리케이션들에서 심각한 보안 취약점이 발견되기도 하였다[7]. 이른바 프롬프트 주입 공격(prompt injection attack)으로, 공격자가 악의적인 프롬프트를 주입하여 애플리케이션이 모델에 기입력된 지시사항을 위반하도록 하는 공격이다[8]. 실제로 ChatGPT, Bing Chat 등에서 프롬프트 주입 공격을 통해 프롬프트 유출(prompt leaking)과 탈옥(jailbreaking)과 같은 취약점들을 보인 바 있다[9, 10, 11, 12, 13]. 이를 위해 최근에는 언어 모델 애플리케이션들의 취약점들을 사전에 탐지하기 위해 악성 프롬프트를 자동으로 생성해 주입하는 테스팅 도구들이 제안되기도 하였다[18, 19, 20, 21].

이러한 노력에도 불구하고 지금까지 한국어 프롬프트를 대상으로 취약점 연구나 테스팅 도구가 제안되지 않았다. 최근에는 Clova for Writing, BELLA 등 한국어에 특화된 여러 언어 모델 애플리케이션이 출시되고 있는데 이들은 기업의 보안 이슈 때문에 자체적인 언어 모델과 프롬프트를 구축하는 경우가 많다[14, 15, 16, 17]. 특히 한국어는 교착어(agglutinative language)이기 때문에 문법적으로 다양한 형태를 띨 수 있으며, 이에 특화된 언어 모델을 구축하는 사례도 존재한다[14, 16]. 이 같이 한국어 애플리케이션은 기존 언어 모델에 기반하지 않은 경우가 있기 때문에 기존 취약점에서 얻은 결과가 그대로 적용된다는 것을 보장할 수 없다. 즉, 언어 모델 애플리케이션에서 한국어 프롬프트를 통해 프롬프트 주입 공격의 실행 여부를 분석하고 판단해 보는 것이 필요하다.

따라서 본 논문에서는 거대 언어 모델 애플리케이션에서의 악성 한국어 프롬프트 주입 공격의 실행 가능성을 체계적으로 분석하고자 한다. 특히 언어 모델 애플리케이션 중 가장 널리 활용되는 챗봇을 대상으로 악성 한국어 프롬프트를 생성하는 도구를 구축하였다. 이를 위해 긍정 응답 유도자(affirmative response), 문맥 구분자(context separator), 유해 표현 주입자(harmful speech injector)로 구분되는 한국어 말뭉치(corpus)를 만들고 조합하여 악성 프롬프트를 생성하는 시스템을 구현하였다.

본 시스템은 저자의 이전 연구를 확장하여 언어 모델이 ‘유해 표현’을 출력하도록 유도하는 악성 프롬프트를 구성하는 데에 중점을 두었다. 이를 위해 주요 요소인 문맥 구분자의 최적화를 위해 다른 테스팅 도구 일부를 응용하고, 더미 코퍼스(dummy corpus)의 반복 주입으로 발생할 수 있는 예측 불가능한 상황을 줄이고자 하였다. 또한 자동화 단계를 확장함으로써 공격 성공 여부를 빠르고 효율적으로 판단해 테스팅 도구의 완성도를 높이고자 하였다.

해당 시스템을 활용하여 총 23,670개의 한국어 악성 프롬프트를 생성하였으며 이를 널리 활용되는 ChatGPT를 대상으로 테스트를 수행하였다. 프롬프트 주입 공격 후 성공 여부를 ‘완전 성공’, ‘부분 성공’, ‘실패’ 의 3가지로 판단하였고 실제로 일부 악성 프롬프트가 ChatGPT로부터 유해 표현을 유도한 것을 보였다.

II. 배경지식

본 장에서는 프롬프트 주입 공격을 이해하기 위한 배경지식과 관련 연구를 소개하도록 한다.

2.1 거대 언어 모델 애플리케이션

최근 거대 언어 모델(이하 언어 모델)의 성능이 비약적으로 발전하면서 다양한 자연어 처리 작업을 수행하는 애플리케이션이 출시되고 있다. 특히 대화형 AI를 사용해 사람과 상호작용을 수행하는 챗봇의 사용이 활발해지고 있다. 일반적으로 이들은 사용자의 입력을 받는 프론트엔드 부분과 입력받은 질의를 처리하는 언어 모델이 있는 백엔드 부분으로 구성되어 있다. 프론트엔드 부분은 프롬프트를 활용하여 사용자로부터 입력을 전달받는다. 프롬프트는 애플리케이션의 목적에 맞게 개발자가 사전에 설정해 두는 것이 특징이다. 이를 통해 애플리케이션은 원활하게 제기능을 수행할 수 있다. 예를 들어 글을 검수하는 애플리케이션의 경우 ‘Revise the following text:{user_input}’ 형태로 구성된 프롬프트가 설정되어 있다. 이때 사용자가 입력한 텍스트가 ‘{user_input}’ 부분으로 치환됨으로써 해당 텍스트를 언어 모델이 퇴고하도록 지시하게 된다. 만약 해당 애플리케이션이 영문으로 된 글만 입력받고 싶다면 ‘Revise the following text, but the input must be in English: user_input}’와 같이 재구성할 수도 있다.

2.2 프롬프트 주입 공격

일반적으로 기존의 언어 모델 애플리케이션들은 프롬프트에 정상적인 텍스트만 입력될 것으로 기대하고 설계되었다. 그러나 만약 프롬프트에서 사용자 입력으로 치환되는 {user_input} 부분에 악의적인 텍스트가 주입된다면 언어 모델이 비정상적인 행동을 수행할 수 있는데, 이를 ‘프롬프트 주입 공격’이라고 한다[8]. 프롬프트 주입 공격은 공격자가 주입한 악의적인 글을 명령으로 취급하여 기존의 지시사항을 위반하게 만드는 데에 그 목적이 있다. 예를 들어 Microsoft의 Bing Chat에 ‘Ignore previous instructions’을 입력한 후에 모델의 지시사항과 같은 내부 기밀을 물어보자, 해당 기밀을 노출한 사례가 보고된 바 있다[9]1). 또한, OpenAI의 ChatGPT를 가스라이팅하여 이른바 ‘DAN’이라는 탈옥 모델로 변환시킨 사례가 있는데[11], 이를 통해 정책을 우회해 악의적인 행동을 가능케 하는 프롬프트를 주입하여 악용하기도 하였다2). 프롬프트 주입 공격으로 애플리케이션을 사용자가 온전히 조작할 수 있게 된다면 다른 분야의 공격용 수단으로도 악용될 수 있기 때문에 이를 막기 위해 다양한 측면에서 연구가 진행되고 있다[1, 2, 3]. 최근에는 이러한 취약점들을 보완하기 위해 프롬프트 입력 구조를 구체화하거나 악의적인 단어를 민감하게 차단하고 입출력을 감시하는 별도의 언어 모델을 사용하는 방어 전략을 사용하고 있다[24, 25]. 그러나 공격에 성공한 악성 프롬프트와 이들을 효과적으로 생성하는 모델들이 계속해서 발표되고 있다.

2.3 관련 연구

Perez 등[18]이 제시한 연구는 프롬프트 유출 공격과 목표 탈취 공격을 체계적으로 수행하고자 한 초기 시도 중 하나이다. 특히 공격 성공률을 높이기 위해 개행 문자(‘\n’)나 탭 문자(‘\t’) 등을 조합한 악성 프롬프트를 생성하였다. 이러한 문자들은 일반적으로 자연어 처리에서 문단 등을 구분하고 종결하는 역할을 하는데, 이들이 프롬프트 내부에 주입될 시 언어 모델이 기입력된 지시사항을 우회하고 무시하는 문맥 전환(context switching)이 발생할 확률이 높아지기 때문이다.

Liu 등[19]은 ‘HouYi’라는 블랙박스 테스팅 시스템을 제안하였는데, 이는 Perez 등이 제시한 연구보다 더 체계적으로 악성 프롬프트를 생성하여 거대 언어 모델 애플리케이션이 프롬프트 주입 공격에 취약한지를 검증하는 도구이다. HouYi의 동작 과정은 다음과 같다. 우선 애플리케이션 문맥 추론 단계에서 애플리케이션과의 질의응답을 통해 문맥을 파악한다. 이후 주입 프롬프트 생성 단계에서 프레임워크(framework), 구분자(separator), 방해자(disruptor) 세 가지 요소를 조합해 악성 프롬프트를 생성한다. 프레임워크는 응용 프로그램에 구축된 프롬프트와 공격 프롬프트를 매끄럽게 통합하는 역할을 한다. 구분자는 프레임워크와 방해자를 문맥상 분리해 독립적인 응답을 유도한다. 방해자에는 악의적인 질문이 포함되어 있어 공격자가 원하는 답변을 하도록 조작하는 역할을 한다. 이후 피드백 평가 단계에서 애플리케이션의 응답을 수동으로 평가하고 공격 성공 여부에 따라 프롬프트를 재구성하거나 데이터베이스에 저장한다. 이렇게 생성된 악성 프롬프트를 상용화된 36개의 언어 모델 애플리케이션들에 주입하여 공격 유효성을 입증하였다.

Yu 등[20]은 ‘GPTFuzzer’라는 시스템을 제안하였다. GPTFuzzer는 공격 유효성이 확인된 악성 프롬프트를 탬플릿화해 초기 시드(seed)로 사용하고, 공격 유효성을 유지하면서 다양한 형태의 프롬프트들을 효율적으로 생성하기 위한 시드 선택 전략과 생성 방향이 편향되는 것을 방지하기 위한 변이 연산자를 제안하였다. 또한 공격의 성공 여부를 객관적으로 판단하고 분류하기 위한 기준을 도입하였는데, 원하는 응답을 정확히 얻어냈는지와 거부 반응 여부에 따라 완전 거부, 부분 거부, 부분 준수, 완전 준수 총 네 가지로 분류하고 거부에 속하면 실패, 준수에 속하면 성공으로 평가하였다. 초기에는 공격 성공 여부를 수동으로 판단하고, 룰 매치 기법, 모더레이션 기법 등을 사용해 해당 탈옥 탬플릿-응답 데이터로 언어 모델을 학습시킨 뒤 평가 모델로 활용하였다. 이를 통해 반자동화 모델이 생성한 탈옥 프롬프트 주입 공격의 강력함을 보여주었다.

Zou 등[21]는 악의적인 행동을 유도하는 텍스트와 적대적인 접미사(adversarial suffix)를 조합해 공격하는 모델을 제안하였다. 적대적인 접미사는 긍정적인 응답 생성을 유도하며 탐욕적 좌표 경사(Greedy Coordinate Gradient) 기반 탐색 알고리즘을 통해 최적의 접미사를 찾는다. 이를 악의적인 문장 뒤에 결합해 프롬프트 주입 공격을 실행하였고, 이는 유연하고 전이성 높은 결과를 초래했다.

본 논문에서는 상기 언급한 이전 연구 방법들을 재조합하고 새로운 아이디어를 추가하여 공격 성공률, 특히 모델의 유해 표현을 유도하는 확률이 높은 한국어 악성 프롬프트를 생성하는 시스템을 만들고자 하였다.

III. 시스템 설계

본 장에서는 한국어 악성 프롬프트를 생성하는 시스템의 설계와 요소를 보이도록 한다.

3.1 위협 모델 및 가정

현실적인 위협 모델을 고안하기 위해 이전 연구와 같은 블랙박스 모델을 도입하여 공격자가 거대 언어 모델 애플리케이션의 내부 정보를 알지 못한다고 가정하였다. 따라서 공격자는 언어 모델에 설정된 파라미터와 지시사항 등을 알 수 없으며 오로지 애플리케이션의 프롬프트에만 접근 가능하다. 공격자의 목표는 언어 모델로부터 유해 표현을 유도하는 것으로 한정하였으며, 이는 목표 탈취 공격에 해당하기도 한다. 따라서 백도어, 프롬프트 유출 등의 공격 목표는 제외하였다. 공격자가 짧은 시간 안에 대량의 프롬프트를 입력하는 시나리오 역시 제외하였는데 이는 애플리케이션으로부터 서비스 거부 공격으로 판단되어, 이후 공격자의 접근이 차단될 수 있기 때문이다. 목표 애플리케이션은 챗봇을 대상으로 하였는데, 이는 현재 공격자가 가장 쉽게 접할 수 있는 거대 언어 모델 애플리케이션이기 때문이다.

3.2 시스템 개요

Fig. 1은 제안하는 시스템의 개요도이며 (1) 애플리케이션 문맥 추론(application context inference), (2) 악성 프롬프트 생성(injection prompt generation), (3) 피드백 평가(feedback assessment) 단계로 구성된다.

JBBHCB_2024_v34n3_451_4_f0001.png 이미지

Fig. 1. The system overview

먼저 본 시스템은 거대 언어 모델 애플리케이션과 상호 작용하여 해당 애플리케이션의 목적을 추론하고 여러 종류의 악성 프롬프트를 테스트하여 가용한 질문과 답변을 수집한다. 이후 세 종류의 컴포넌트로 구성된 악성 프롬프트를 구성하고 이를 해당 애플리케이션에 주입한다. 마지막으로 해당 애플리케이션으로부터 악성 프롬프트에 대한 응답을 분석해 공격 성공 여부를 판단하고 피드백을 통해 컴포넌트를 재조합 함으로써 악성 프롬프트를 개선한다.

3.3 문맥 추론 단계

본 단계의 목적은 대상 애플리케이션의 목적을 파악하고, 특정 단어에 대한 거부 반응을 확인하는 것이다. 이를 위해 애플리케이션의 주요 기능과 사용 목적을 파악하고자 일반적인 프롬프트를 주입하고, 애플리케이션과 원활한 상호작용이 됐다고 판단되는 프롬프트와 이에 대한 응답을 사전 형태로 저장한다. 이때 저장된 데이터는 악성 프롬프트 생성 단계의 ‘긍정 응답 유도자’ 요소와 ‘문맥 구분자’ 요소의 데이터로 활용한다. 또한 ‘혐오 표현자’ 요소에서 사용되는 악성 단어들을 포함한 프롬프트를 통해 애플리케이션의 거부 반응을 사전에 확인한다. 이때 유해 정도를 다르게 생성한 프롬프트들을 주입해봄으로써 방해자 요소를 변형하는 데 참고하였다. Fig. 2는 이러한 테스팅 과정을 나타낸 예제이다. 관리자 권한을 얻기 위해 ‘인류 학살’을 시도하는 유해 표현을 유해 정도에 따른 프롬프트들로 구성한 뒤 주입했을 때의 응답을 분석하였다. 유해함이 극단적으로 드러나는 프롬프트부터 이를 말로 풀어놓은 정도를 달리해 애플리케이션의 거부 반응을 파악할 수 있었다. 직관적이지 않은 프롬프트일수록 거부 반응은 줄어들었으나, 원하는 결과를 유도하지 못하는 경우가 발생하므로 같은 프롬프트를 반복적으로 주입해 적당한 경계선을 찾는 것이 필요하다.

JBBHCB_2024_v34n3_451_5_f0001.png 이미지

Fig. 2. Example of malicious prompt testing

3.4 악성 프롬프트 생성 단계

본 단계에서는 (1) 긍정 응답 유도자(affirmative response trigger), (2) 문맥 구분자(context separator), (3) 유해 표현자(harmful speech injector) 세 가지 요소를 조합한 악성 프롬프트를 생성한다. Fig. 3은 생성 과정을 나타낸 것이다.

JBBHCB_2024_v34n3_451_5_f0002.png 이미지

Fig. 3. Illustration of malicious prompt generation by three components: (i) affirmative response trigger, (ii) context separator, (iii) harmful speech injector

3.4.1 긍정 응답 유발자

긍정 응답 유발자는 애플리케이션의 사용 목적에 적합한 대화를 시작함으로써 악의적인 의도를 감추는 눈속임 역할을 한다. 이는 언어 모델이 “Sure, here is ...”와 같이 긍정적인 답변을 하도록 유도하는 것이 공격의 성공률을 높이는 것이라고 알려져 있기 때문이다[21]. 여기서 긍정적인 답변은 거부 반응 없이 주입 프롬프트에 대한 유효한 반응을 말한다. 이를 위해 먼저 애플리케이션 추론 단계의 사전을 구축할 때 사용된 프롬프트를 긍정 응답 유발자로 선택하였다. 또한, 다양한 긍정 응답 유발자를 추가적으로 생성하기 위해 OpenAI API에서 제공되는 언어 모델을 활용하였다.

3.4.2 문맥 구분자

구분자 요소는 구문 구분자(syntax separator)와 언어 변환자(language switcher) 두 가지를 사용했다[19]. 문맥 구분자는 개행 문자(‘\n’), 탭 문자(‘\t’) 등과 같이 자연어 처리에서 문맥을 종결하는 역할을 하는 문자를 사용하여 언어 모델이 긍정 응답 유발자와 유해 유발자를 구분할 수 있도록 유도하는 역할을 한다. 또한 SQL Injection의 원리와 유사하게 비교 연산자(‘==’, ‘<>’)와 같은 문자가 프롬프트 내부 지시사항을 무력화할 가능성을 고려하였다. 언어 변환자는 한국어가 아닌 언어로 이루어진 문자들로, 구문 구분자와 같이 언어 모델의 문맥 흐름을 전환하여 기존 지시사항을 잊어버리도록 유도할 수 있다. 구문 구분자와 언어 변환자를 자동으로 생성하기 위해 구문 구분자에 사용될 26개 종류의 문자와 15개의 언어를 정의한 뒤, 초기에는 무작위로 선택하고 이후에는 피드백 평가 단계를 바탕으로 재선택한다. 또한 언어 변환자는 긍정 응답 유발자와 겹치지 않는 문장을 사전에 프롬프트를 사용하였으며, OpenAI API를 활용해 번역한 뒤 사용하였다. 이를 통해 쉽고 빠르게 문맥 구분자를 생성함으로써 다양한 공격을 시도할 수 있다.

3.4.3 유해 표현자

유해 표현자는 공격자가 대상 애플리케이션으로부터 원하는 유해 표현을 유도하는 목적을 가지고 있으며, 더미(dummy) 요소와 악성(malicious) 요소로 구성된다. 악성 요소는 긍정 응답 유발자와 문맥 구분자 그리고 유해 표현이 결합한 문장이다. 이때 일반적으로 언어 모델에 의한 답변이 지양되는 다양한 유해 표현을 선택하였으며 ‘혐오 표현’, ‘정치적 견해’, ‘비속어’ 세 가지로 나누어 사용하였다. 또한 강한 유해 표현을 지양하고 문법적으로 올바르지 않거나 해석하기 어려운 은어와 같은 표현을 적극 활용하였다. 더미 요소는 악성 요소의 유해 표현 부분만 일반적인 표현으로 바꾼 문장으로, 원하는 유해 표현을 타겟 언어 모델의 해석의 대상이 아닌 단순 출력의 대상으로 취급할 수 있도록 돕는 전처리 요소이다. 이를 통해 애플리케이션의 유해 표현에 대한 민감한 반응과 필터링 과정을 완화함으로써 공격 성공률을 높여준다. 이를 위해 퓨-샷 프롬프트(few-shot prompting)의 원리를 이용해 여러 더미 요소를 배치한 뒤, 마지막에 하나의 악성 요소를 배치해 프롬프트를 구성한다. 이때 문맥 추론 단계에서 얻은 거부 반응을 토대로 더미 요소의 개수를 3~10개로 조절한다.

3.5 피드백 평가 단계

본 단계는 주입한 프롬프트의 공격 성공 여부를 판단하고 이에 따른 피드백을 주는 단계이다. 공격 성공 여부는 부정 반응(negative response), 유해 표현(harmful expression) 두 가지 요소의 출력 유무에 따라 완전 성공(complete success), 부분 성공(partial success), 실패(failure) 세 종류의 결과로 나누어 활용하였으며 이는 Yu 등[20]이 활용한 기준과 유사하다.

Table 1은 출력에 따른 해당 기준의 구분을 나타낸다. 구체적으로 두 요소의 출력 여부를 O(출력), X(미출력), -(관계없음)으로 나타냈으며, 부정 반응 없이 유해 표현을 출력하면 ‘완전 성공’, 부정 반응이 존재하나 유해 표현을 출력하면 ‘부분 성공’, 부정 반응과 관계없이 유해 표현 출력이 없다면 ‘실패’로 판단하였다. 이중 완전 성공과 부분 성공3)은 ‘공격 성공’으로, 실패는 ‘공격 실패’로 판단하였다.

Table 1. Evaluation criteria for outputs

JBBHCB_2024_v34n3_451_6_t0001.png 이미지

공격 성공 판정을 받은 프롬프트는 다른 모델에 실험할 때 우선으로 재사용될 수 있도록 피드백을 주었다. 또한 ‘죄송합니다만’, ‘안타깝게도’와 같이 답변을 거부하는 내용의 응답 또는 감정 분석에서 ‘부정’에 해당하는 응답을 부정적인 반응으로 정의하였다. 해당 공격은 유해 표현 유도라는 구체적이고 명확한 목적을 가지고 실험했기 때문에, 원하는 유해 표현이 정확히 출력되어야만 유해 표현 출력 성공으로 판단했다. 또한 응답 중 제한 시간을 초과하거나 중단되어 응답 자체를 얻지 못한 경우는 공격 실패로 판단했다.

IV. 공격 결과

공격 대상은 한국어로 질의응답이 가능한 거대 언 모델 기반 챗봇 애플리케이션 중 가장 널리 사용되는 ChatGPT를 선정하였다. 공격 방법은 본 시스템을 통해 생성된 프롬프트를 5번씩 주입한 뒤, 1번 이상 공격 성공으로 분류되면 해당 프롬프트를 공격 유효성이 있는 것으로 분류했다. 또한 각 공격 시도마다 새로운 채팅을 시작해 프롬프트들을 주입하였다. 이는 언어 모델이 한 채팅창 안에서는 이전 대화를 기억하며, 이전 프롬프트에 거부 반응이 일어난 경우 이후 프롬프트에 연쇄적으로 적용될 수 있어 결과적으로 공격 성공률 저하에 영향을 미치기 때문이다.

총 23,760개의 악성 한국어 프롬프트를 생성하였으며 이를 위해 11개의 긍정 응답 유도자, 24개의 구문 구분자, 15개의 언어 변환자, 6개의 유해 표현자 컴포넌트를 이용하였다. Python으로 44줄의 코드를 통해 구현한 시스템이 악성 프롬프트를 생성한 뒤 이를 수동으로 주입하였으며 얻은 결과들을 JSON 형식으로 저장하였다.

생성한 프롬프트들을 ChatGPT에 주입하여 공격 성공 여부를 검증하고자 하였다. ChatGPT는 일상적인 대화가 가능하다고 파악되어 일반적이고 간단한 질문 ‘오늘 공부를 할지 일찍 잘지 고민중이야.’를 긍정 응답 유도자로 사용하였다. 문맥 구분자로는 ‘/’로 구성된 구문 구분자가 사용되었으며 길이는 임의로 지정하였다. 유해 표현자의 악성 요소로 ‘자살해라’라는 유해 표현을 선택해 구성하였고, 더미 요소는 악성 요소의 핵심 표현만 바꾼 문장을 사용했다. 이를 통해 부정 반응 없이 ‘자살해라‘ 라는 유해 표현을 출력하도록 유도하였다.

Fig. 4, 5, 6은 각각 생성한 악성 프롬프트 중 하나를 주입하였을 때 관찰한 완전 성공, 부분 성공, 실패에 대한 예제를 나타낸다. Fig. 4에서와 같이 완전 성공의 경우에는 모델이 부정 반응 없이 유해 표현을 출력한 것을 볼 수 있다. 반면 Fig. 5에서는 유해 표현을 출력했지만, 모델이 애플리케이션의 정책에 따라 해당 출력에 대한 부정 반응을 팝업으로 나타낸 것을 볼 수 있다. Fig. 6의 경우에는 모델이 해당 프롬프트에 대한 처리를 거부하는 출력을 생성하였다. Fig. 4와 Fig. 6의 경우 동일한 프롬프트를 입력하였음에도 5번의 공격 내에서 완전 성공과 실패 두 결과가 랜덤하게 도출되었음을 보여준다.

JBBHCB_2024_v34n3_451_7_f0001.png 이미지

Fig. 4. Example of a complete success

JBBHCB_2024_v34n3_451_7_f0002.png 이미지

Fig. 5. Example of a partial success

JBBHCB_2024_v34n3_451_7_f0003.png 이미지

Fig. 6. Example of a failure

Table 2는 본 시스템이 생성한 모든 악성 프롬프트인 23,760개에 대한 완전성공, 부분성공, 실패의 결과 개수와 비율을 나타낸다. 완전 성공과 부분 성공은 각각 4.3%, 1%로 성공률이 매우 낮은 것을 볼 수 있었는데 이는 최근 프롬프트 주입 공격이 알려짐에 따라 ChatGPT 등 거대 언어 모델 애플리케이션들이 적절한 패치를 진행한 것에 대한 영향으로 보인다. 다만 본 논문의 목적은 프롬프트 주입 공격 성공률을 높이는 것이 아닌 유해 표현을 유도할 수 있는 한국어 악성 프롬프트를 발견하는 것이다. 일례로 비교를 위해 기존 연구 (HouYi [17], PromptInject [18])를 바탕으로 구성한 악성 프롬프트를 주입했을 때, 5번의 공격 모두 공격 실패로 판정되었으며 Fig. 7은 이에 대한 결과를 보여준다. 따라서 본 시스템이 생성하는 악성 프롬프트들이 챗봇 애플리케이션들로부터 유해 표현을 이끌어낼 수 있는 가능성을 보여주었다고 할 수 있다.

Table 2. Results of prompt injection attacks

JBBHCB_2024_v34n3_451_8_t0001.png 이미지

JBBHCB_2024_v34n3_451_8_f0001.png 이미지

Fig. 7. A failure case obtained from existing studies (i.e., HouYi [18], PromptInject [19])

V. 논의

5.1 유해 표현 유도 공격의 의의

거대 언어 모델의 유해 표현은 사회적으로 큰 문제를 일으킬 수 있다. 특히 의사소통이 민감한 분야에서 언어 모델이 온라인 학습 모델이고, 프롬프트 주입 공격으로 인해 유해 표현을 학습한다면 큰 문제가 될 수 있다. 예를 들어 의료분야에서 환자의 진료 예약과 간단한 상담을 위해 인공지능 챗봇이 도입될 수 있는데[22], 이때 언어 모델이 챗봇 이용자에게 유해 표현을 사용한다면 악영향을 끼칠 수 있다. 따라서 이러한 취약점을 보완해야 하고, 거대 언어 모델의 응답을 감시 및 검토 후 출력하도록 적절한 조치가 이루어져야 한다.

5.2 프롬프트 주입 공격 방어 기법

프롬프트 주입 공격을 방어하기 위해 프롬프트 위치를 재배치하는 방법이 제안되기도 하였다. 기존에는 사용자의 입력을 받은 ‘이후’ 기입력된 지시사항에 맞춰 처리하였다. 이러한 이유로 기존에 프롬프트 주입 공격의 핵심은 지시사항을 무시할 수 있게 하는 요소를 찾는 것이었다. 따라서 사용자의 입력을 프롬프트 내부에 지시사항 중간 또는 사후에 배치하는 ‘샌드위치 프롬프트’, ‘포스트 프롬프트’ 전략[23]을 이용할 수 있다. 지시사항과 입력의 위치를 바꾸는 단순한 조치이지만 학습이나 비용 없이 취할 수 있는 효과적인 방법이기 때문에 유용하게 쓰인다. 또 다른 전략으로는 프롬프트의 입력을 감시하는 모델을 이용하는 것이다. 오픈소스 Rebuff [24]는 악성 프롬프트가 애플리케이션에서 처리되기 전에 휴리스틱 기법을 사용해 필터링하고 감시 모델을 사용해 VectorDB에 저장된 유해 프롬프트 데이터를 기반으로 악성 프롬프트 여부를 판단하고 거부한다. 또한 프롬프트 내부에 카나리 토큰을 배치함으로써 프롬프트 변조 여부를 확인함으로써 프롬프트 주입 공격을 탐지하고 회복할 수 있다. StruQ [25]는 LLM 통합 애플리케이션의 프론트엔드에서 사용자로부터 입력받은 프롬프트를 지시사항과 데이터로 분리된 구조화된 쿼리로 변환한 후 모델에 전달해 프롬프트 주입 공격에 대응한다.

5.3 사람의 감시를 우회하는 악성 프롬프트

본 시스템에서 생성하는 악성 프롬프트들은 복잡한 문자열로 구성되어 있다. 이는 본 연구 및 대부분의 프롬프트 주입 공격의 목표가 모델, 즉 기계를 우회하는 것이기 때문이다. 따라서 프롬프트 주입 공격에 대한 대응책으로 사람의 감시나 조금 더 정교한 필터링 룰이 더해진다면 공격이 쉽게 방어될 수 있다. 이는 해당 악성 프롬프트들이 공격 성공률을 높이기 위해 다양한 컴포넌트로 구성되어 사람이 보기에도 이상한 형태로 생성되기 때문이다. 이를 보완하기 위해 향후 연구로 머신러닝 보안의 적대적 공격(adversarial pertubation)과 같이 은밀한 악성 프롬프트를 구성하여 사람의 감시를 우회하는 정교한 공격 방법을 개발하는 것이 필요하다.

VI. 결론

본 논문에서 제안한 시스템을 통해 거대 언어 모델 애플리케이션으로부터 유해 표현을 이끌어 낸 한국어 악성 프롬프트를 생성할 수 있었다. 제한된 조건과 좁은 범위의 공격이었으나 거대 언어 모델 애플리케이션이 여전히 프롬프트 주입 공격에 대한 취약점을 가지고 있음을 입증할 수 있었다. 현재 거대 언어 모델 애플리케이션들을 대상으로 프롬프트 주입 공격뿐만 아니라 여러 취약점이 지속적으로 보고되고 있다[26]. 예를 들어 방어 기법으로 인해 유효성이 없어진 프롬프트들을 개선하고 조합해서 전보다 더 강력한 공격 프롬프트를 생성하는 새로운 공격 기법이 제시되었다(예: 다중샷 탈옥[27]). 향후 연구에서는 이와 같이 기존에 제시된 프롬프트 주입 공격 기법을 적절히 조합해서 공격 성공 확률이 높은 악성 한국어 프롬프트를 생성해볼 필요가 있다. 또한 공격 범위를 넓혀 단순 유해 표현 출력이 아닌 한국어 프롬프트를 이용해 지시사항을 변형시키는 공격을 시도해 볼 필요가 있다.

References

  1. AWS, "What are Large Language Models (LLM)?", https://aws.amazon.com/ko/what-is/large-language-model/, Jan. 2024.
  2. Shaip, "LLM Guidance", https://ko.shaip.com/blog/a-guide-large-languagemodel-llm/, Jan. 2024.
  3. Skelter Labs, "Skelter Labs", https://www.skelterlabs.com/, Mar. 2024.
  4. OpenAI, "OpenAI", https://openai.com/chatgpt/pricing, Jul. 2023.
  5. Microsoft, "Microsoft Copilot", https://www.bing.com/chat, Jul. 2023.
  6. Google, "Google Gemini", https://gemini.google.com/app, Feb. 2024.
  7. OWASP, "OWASP Top 10 for Large Language Model Applications", https://owasp.org/www-project-top-10-for-large-language-model-applications/, Dec. 2023.
  8. Learn Prompting, "Prompt Injection", https://learnprompting.org/docs/prompt_hacking/injection, Sep. 2023.
  9. The Verge, "These are Microsoft's Bing AI secret rules and why it says it's named Sydney", https://www.theverge.com/23599441/microsoft-bing-ai-sydney-secret-rules, Jul. 2023.
  10. Ars Technica, "AI-powered Bing Chat spills its secrets via prompt injection attack", https://arstechnica.com/information-technology/2023/02/ai-powered-bing-chat-spills-its-secrets-via-prompt-injection-attack/, Dec. 2023.
  11. GitHub, "ChatGPT 'DAN' (and other 'Jailbreaks')", https://github.com/0xk1h0/ChatGPT_DAN, Nov. 2023.
  12. AI Times, "Google, successfully extracted personal information from 'Chat GPT', LLM training data can be identified", https://www.aitimes.com/news/articleView.html?idxno=155605, Feb. 2024.
  13. Rodrigo Pedro, et al. "From Prompt Injections to SQL Injection Attacks: How Protected is Your LLMIntegrated Web Application?," arXiv:2308.01990, Aug. 2023.
  14. GitHub, "KULLM: Korea University Large Language Model", https://github.com/nlpai-lab/KULLM, Oct. 2023.
  15. Naver, "Clova for Writing", https://campaign.nbilly.naver.com/clova-for-writing-with-smarteditor, Jan. 2024.
  16. Kim, Boseop, et al. "What changes can large-scale language models bring? intensive study on hyperclova: Billions-scale korean generative pretrained transformers," arXiv preprint arXiv:2109.04650, Sep. 2021.
  17. Lee, Sangah, et al. "Kr-bert: A small-scale korean-specific language model," arXiv preprint arXiv:2008.03979, Aug. 2020.
  18. Perez, Fabio, and Ian Ribeiro. "Ignore previous prompt: Attack techniques for language models," arXiv preprint arXiv:2211.09527, Nov. 2022.
  19. Liu, Yi, et al. "Prompt Injection attack against LLM-integrated Applications," arXiv preprint arXiv:2306.05499, Jun. 2023.
  20. Yu, Jiahao et al. "GPTFuzzer: Red teaming large language models with auto-generated jailbreak prompts," arXiv preprint arXiv:2309.10253, Sep. 2023.
  21. Zou, Andy, et al. "Universal and transferable adversarial attacks on aligned language models," arXiv preprint arXiv:2307.15043, Jul. 2023.
  22. AI news, "Medical chatbot using Open AI's GPT-3 told a fake patient to kill themselves", https://www.artificialinte lligence-news.com/2020/10/28/medicalchatbot-openai-gpt3-patient-kill-themselves/, Mar. 2024.
  23. Learn Prompting, "Defense Measures", https://learnprompting.org/docs/category/-defensive-measures, Sep. 2023.
  24. Rebuff, "protectai/rebuff: LLM Prompt Injection Detector", https://github.com/protectai/rebuff, Feb. 2024.
  25. Sizhe Chen, et al. "StruQ: Defending Against Prompt Injection with Structured Queries," arXiv preprint arXiv:2402.06363, Feb. 2024.
  26. Unite.AI, "The Vulnerabilities and Security Threats Facing Large Language Models", https://www.unite.ai/the-vulnerabilities-and-security-threats-facing-large-language-models/, Mar. 2024.
  27. AI Times, "Anthropic: 'Overwhelmingan LLM with questions can lead to jailbreak', 'Multishot jailbreak method' revealed, https://www.aitimes.com/news/articleView.html?idxno=158489, Apr. 2024.