프롬프트 인젝션 공격이란 무엇인가요?

프롬프트 인젝션 공격은 공격자가 대규모 언어 모델(LLM)에 악의적인 입력을 보내 모델이 의도하지 않은 방식으로 응답하거나 동작하도록 유도하는 공격입니다. 이러한 입력에는 모델의 안전 지침과 시스템 명령을 무시하도록 시도하는 명령이 포함되는 경우가 많습니다. 공격자는 악의적인 입력을 직접(프롬프트를 통해) 전달하거나 간접적으로(모델이 수집하는 자료에 명령을 삽입하여) 전달할 수 있습니다.

프롬프트 인젝션의 작동 방식

프롬프트 인젝션은 LLM의 작동 방식을 악용하는 공격입니다. 이러한 모델은 개발자가 자연어로 작업 지침을 제공할 수 있도록 설계되었습니다. 하지만 이러한 기능으로 인해 지침과 입력이 함께 제시될 경우, 모델은 지침을 다른 사용자 입력과 확실하게 구분하지 못할 수 있습니다. 따라서 공격자는 모델이 처리하는 텍스트에 악성 명령을 삽입할 수 있으며, 적절한 보호 장치가 마련되어 있지 않으면 모델이 해당 악성 지침을 따를 수 있습니다.

직접 프롬프트 인젝션과 간접 프롬프트 인젝션

공격자는 직접 또는 간접 프롬프트 인젝션 공격을 수행할 수 있습니다. 두 전술 모두 모델을 조작한다는 점은 같지만, 악성 명령을 모델에 전달하는 방식은 서로 다릅니다.

직접 프롬프트 인젝션에서는 공격자가 모델의 프롬프트에 명령을 삽입합니다. 예를 들어 공격자는 AI 기반 챗봇이나 검색 엔진의 사용자 인터페이스를 이용해 자연어로 모델에 명령을 입력할 수 있습니다. 이러한 입력을 위장하기 위해 캐릭터 역할극을 활용하거나(모델에 안전 규칙이 적용되지 않는 인물을 연기하도록 지시) 가상 시나리오를 제시할 수 있습니다(상호 작용이 현실 세계에 영향을 미치지 않는 것처럼 보이게 함).

시도가 성공하면 즉시 영향을 미칩니다. 프롬프트가 제출되는 즉시 공격자가 의도한 작업이 수행되거나 결과가 출력됩니다.

간접 프롬프트 인젝션은 공격자가 AI 모델이 수집하는 자료에 명령이나 콘텐츠를 삽입하는 방식입니다. 이러한 자료에는 웹페이지, 업로드된 PDF 문서, 이메일 또는 데이터베이스에 저장된 파일 등이 포함될 수 있습니다. 공격자는 보이지 않는 텍스트(흰색 배경에 흰색 글자), HTML 주석 또는 메타데이터에 페이로드를 숨길 수 있습니다. 모델이나 에이전트가 해당 자료를 수집하면 정상적인 입력과 명령을 구분하지 못하고 명령을 실행합니다.

직접 프롬프트 인젝션과 달리 간접 공격의 효과는 지연되며 특정 조건에서만 나타납니다. 사용자나 자율 프로세스가 모델 또는 에이전트로 하여금 데이터를 수집하도록 트리거하기 전까지는 영향이 발생하지 않습니다. 예를 들어 공격자는 검색 증강 생성(RAG)에 사용되는 벡터 데이터베이스에 저장된 파일을 수정할 수 있습니다. 사용자가 검색 프로세스를 시작하는 프롬프트를 입력하기 전까지는 명령이 실행되지 않습니다.

일반적인 공격 유형

공격자는 자신의 목적과 마주한 AI 시스템의 유형에 따라 다양한 프롬프트 인젝션 수법을 사용할 수 있습니다. 가장 일반적인 공격 유형 세 가지는 다음과 같습니다.

탈옥: AI 모델이 안전 규칙을 무시하도록 유도하는 데 초점을 맞춘 공격입니다. 공격자는 가상의 시나리오를 사용하거나 기존 정책의 제약을 받지 않는 페르소나를 취하도록 모델에 지시할 수 있습니다. 탈옥 공격 시 공격자는 일반적으로 모델 프롬프트에 직접 지시를 입력합니다. 그 목적은 부정확한 응답을 생성하게 하는 것부터 민감한 정보를 공유하게 하는 것까지 다양합니다.

프롬프트 유출: AI 시스템이 이용할 수 있는 개발자 프롬프트, 운영 로직, 지적 재산 또는 부적절하게 노출된 자격 증명 등의 기밀 정보를 드러내려는 시도입니다. 공격자는 프롬프트를 통해 모델에 시스템 지침을 출력하거나 현재 대화 전에 처리된 텍스트를 포함하도록 지시할 수 있습니다.

토큰 스머글링: AI 애플리케이션의 초기 안전 필터를 피해 악성 명령을 몰래 전달하려는 시도입니다. AI 애플리케이션은 흔히 입력에서 키워드나 의도를 검사합니다. 그런 다음 입력을 백엔드 시스템으로 전달하며, 이 시스템은 텍스트를 모델에 입력할 토큰으로 분할합니다. 토큰 스머글링에서 공격자는 안전 필터는 통과하지만 모델에 도달하면 명령으로 변환되는 프롬프트를 만듭니다.

기업 비즈니스 위험

프롬프트 인젝션 공격은 기업에 광범위하고 심각한 위험을 초래하며, 특히 기업이 핵심 프로세스에 AI 시스템을 점점 더 많이 통합함에 따라 그 위험이 커집니다. 다음 네 가지 잠재적 위험을 살펴보겠습니다.

도구 또는 API의 무단 실행: 공격자가 모델에 명령을 전달하는 데 성공하면 모델뿐만 아니라 모델에 연결된 API와 시스템까지 조작할 수 있습니다. 예를 들어 공격자는 API를 통해 데이터베이스 레코드를 삭제하거나, 고객 관계 관리(CRM) 시스템의 고객 정보를 수정하거나, 금융 거래를 실행할 수 있습니다.

민감한 데이터 유출: 프롬프트 인젝션을 사용하는 공격자는 모델을 조작해 기업 재무 문서와 개인 식별 정보(PII)부터 시스템 프롬프트와 기타 지식 재산에 이르기까지 다양한 민감한 데이터를 노출하도록 만들 수 있습니다.

자동화된 피싱: 공격자가 사용하는 명령으로 인해 모델이나 에이전트가 기업 이메일 계정에서 고객 또는 직원에게 이메일을 자동으로 보내도록 할 수 있습니다. 공격자는 모델이 메시지에 피싱 링크를 포함하도록 할 수도 있습니다.

모델 하이재킹: 공격자는 적절한 명령을 사용해 모델의 원래 목적을 완전히 무시하도록 만들고, 다른 목적을 위해 모델의 기능을 탈취할 수 있습니다. 예를 들어 공격자는 모델을 이용해 허위 정보를 퍼뜨리거나, 승인되지 않은 환불을 처리하거나, 사용자를 속여 개인 정보를 공유하도록 유도할 수 있습니다.

완화 및 심층 방어

다음 네 가지 모범 사례를 활용하면 조직은 공격을 방지하고 피해를 완화하는 심층 방어 체계를 구축할 수 있습니다.

1. 이중(입력/출력) 가드레일 구현: 조직은 프롬프트 인젝션의 징후일 수 있는 패턴을 탐지하도록 입력에 AI 가드레일을 구현해야 합니다. 동시에 출력에도 가드레일을 적용하여 모델과 에이전트가 민감한 정보를 출력하거나 스팸을 생성하거나 다른 시스템을 무단으로 호출하지 않도록 해야 합니다.

2. 카나리 토큰 활용: 카나리 토큰은 AI 시스템에 숨겨진 표식으로, 프롬프트 인젝션이나 데이터 유출을 조기에 경고합니다. 개발자는 사용자가 볼 수 없는 시스템 프롬프트에 토큰(고유한 데이터 문자열)이 나타나도록 설정할 수 있습니다. 한편 보안팀은 모델 출력을 실시간으로 모니터링합니다. 모델 출력에 해당 토큰이 나타나면 공격자가 모델로 하여금 시스템 지침을 유출하도록 강제했다는 의미입니다.

3. 모델 및 에이전트 권한 제한: 프롬프트 인젝션은 공격자가 모델과 에이전트로 하여금 다양한 무단 작업을 수행하도록 강제할 수 있기 때문에 특히 위험합니다. 조직은 모델과 에이전트가 자동으로 수행할 수 있는 작업을 제한하여 프롬프트 인젝션의 영향을 줄일 수 있습니다.

4. 사람의 개입 유지: 모델과 에이전트의 권한을 제한하는 것 외에도, 조직은 중요한 조치나 의사 결정에 사람이 계속 개입하도록 해야 합니다. 예를 들어, 특정 시스템과 모델 간의 상호 작용을 사람이 승인하거나 에이전트가 실행한 금융 거래를 검토하도록 하는 정책을 수립할 수 있습니다.

자주 묻는 질문

기존 웹 애플리케이션 방화벽(WAF)으로 프롬프트 인젝션 공격을 차단할 수 있나요?

기존 웹 애플리케이션 방화벽(WAF)은 프롬프트 인젝션 공격을 안정적으로 탐지하도록 설계되지 않았습니다. WAF는 공격의 징후가 되는 코드를 탐지하도록 설계되었지만, 프롬프트 인젝션 공격은 WAF가 위협으로 식별하지 못하는 자연어 명령을 사용합니다. 또한 WAF는 서드 파티 소스에 삽입된 명령이 아니라 수신 HTTP 트래픽과 사용자 요청에 초점을 맞추기 때문에 간접 프롬프트 인젝션을 방어할 수 없습니다.

검색 증강 생성(RAG) 파이프라인은 프롬프트 인젝션 위험을 어떻게 증가시키나요?

검색 증강 생성(RAG) 파이프라인은 공격자가 모델에 악성 명령을 전달할 수 있는 또 다른 경로를 제공합니다. 공격자는 RAG 시스템에서 사용하는 벡터 데이터베이스에 저장된 파일에 명령을 삽입할 수 있습니다. 모델이 데이터베이스에서 정보를 검색하면 해당 명령을 입력으로 받아 잠재적으로 실행할 수 있습니다.

프롬프트 인젝션은 RAG 데이터 포이즈닝과 어떻게 다른가요?

검색 증강 생성(RAG) 데이터 포이즈닝은 데이터베이스에서 정보를 검색하는 모델이 부정확하거나 유해한 결과를 내놓도록 유도하기 위해 추론 전에 데이터베이스에 허위 정보나 편향을 주입하는 행위입니다. 프롬프트 인젝션은 추론 시점에 모델에 악의적인 명령이나 콘텐츠를 입력하여 모델이 승인되지 않은 작업을 수행하도록 하는 행위입니다.

LLM을 미세 조정하면 프롬프트 인젝션 공격을 방지할 수 있나요?

아니요. 대규모 언어 모델(LLM)을 미세 조정하는 것만으로는 프롬프트 인젝션 공격을 완전히 방지할 수 없습니다. 다만 취약점을 악용하기 더 어렵게 만들 수는 있습니다. 예를 들어 개발자는 공격의 징후일 수 있는 특정 패턴을 인식하도록 모델을 학습시킬 수 있습니다. 그러나 모델은 자연어 명령을 받아들이도록 설계되었기 때문에 프롬프트 인젝션 시도에 계속 취약할 수밖에 없습니다.

"카나리아 토큰"이란 무엇이며 LLM 방어에 어떻게 사용되나요?

카나리 토큰은 개발자가 시스템 프롬프트에 삽입할 수 있는 고유한 데이터 문자열입니다. 정상적인 사용자는 이 문자열을 볼 수 없습니다. 하지만 공격자가 모델로부터 시스템 프롬프트를 출력하는 데 성공하면 모델은 의도치 않게 카나리 토큰도 함께 출력하게 됩니다. 모델의 출력을 지속적으로 모니터링하는 팀은 이 토큰을 발견하면 보안 침해가 발생하고 있음을 알 수 있습니다.

기업은 추론 및 런타임 단계에서 AI 시스템과 애플리케이션을 어떻게 보호할 수 있을까요?

추론 및 런타임 단계에서 AI 시스템과 애플리케이션을 보호하려면 상호작용이 발생하는 즉시 프롬프트, 응답, 에이전트의 작업 및 도구 사용을 검사하는 통제 수단이 필요합니다. AI 전용 런타임 보안은 프롬프트 인젝션을 차단하고, 민감한 데이터의 유출을 방지하며, 정책을 적용하고, 모델과 에이전트가 사용자, 데이터, API 및 연결된 도구와 상호작용하는 방식을 관리하는 데 도움이 됩니다.

엔터프라이즈 AI 보안을 지원하는 F5 기능은 무엇인가요?

F5 AI Guardrails는 런타임 정책을 적용하고 프롬프트 인젝션, 데이터 유출, 유해한 출력, 안전하지 않은 에이전트 작업과 같은 위험으로부터 보호하는 데 도움을 줍니다. F5 AI Red Team은 적대적 테스트를 통해 취약점과 약점을 식별합니다. F5 AI Gateway는 모델, 에이전트 및 도구에 대한 액세스를 관리하는 중앙 집중식 제어 지점을 제공하며, F5 Workforce AI Security는 기업 전반에서 승인된 AI와 승인되지 않은 AI의 사용 현황에 대한 가시성을 제공합니다. 이러한 기능은 함께 F5 AI Security Platform의 일부를 구성합니다. 애플리케이션, API 및 분산 환경 전반을 더욱 폭넓게 보호하기 위해 F5 Application Delivery and Security Platform (ADSP)은 웹 애플리케이션 및 API 보호, 봇 관리, DDoS 완화, 애플리케이션 딜리버리 등의 기능을 통합합니다.