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

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

프롬프트 인젝션 공격이란?

프롬프트 인젝션 공격은 대규모 언어 모델(LLM)과 생성형 AI 시스템을 대상으로 하는 보안 취약점입니다. 공격자는 사용자 입력 또는 외부 콘텐츠에 악성 프롬프트를 삽입하여 모델의 동작을 조작합니다.

프롬프트 인젝션은 현대 AI 보안에서 가장 심각한 위험 요소 중 하나로 널리 인식되고 있으며, LLM 애플리케이션을 위한 OWASP Top 10에도 포함되어 있습니다. 해당 프레임워크에서는 악의적인 입력이 LLM의 동작을 조작하고, 시스템 지침을 우회하며, 데이터 유출 또는 안전하지 않은 출력을 초래할 수 있는 주요 위험으로 정의됩니다.

프롬프트 인젝션 공격의 목적은 모델이 원래의 지침을 무시하고 공격자가 의도한 명령을 따르도록 만드는 것입니다. 이로 인해 의도하지 않거나 잠재적으로 위험한 결과가 생성될 수 있습니다.

기존의 사이버 보안 위협과 달리 프롬프트 인젝션은 코드 취약점을 악용하지 않습니다. 대신 자연어 해석 과정을 악용한다는 점에서 AI 시스템의 독특하고 지속적으로 진화하는 공격 벡터로 간주됩니다.

프롬프트 인젝션 공격은 어떻게 작동할까?

프롬프트 인젝션 공격은 정교하게 설계된 지시문을 삽입하여 LLM이 문맥을 해석하는 방식에 영향을 미칩니다. 이러한 지시문은 사용자 프롬프트에 직접 포함될 수도 있고, 웹페이지, 이메일, 문서, API 또는 데이터베이스와 같은 외부 소스에 숨겨질 수도 있습니다.

이 공격 기법은 모델이 일반적으로 모든 입력을 하나의 컨텍스트 윈도우 안에서 처리한다는 특성을 이용합니다. 이 과정에서 악성 콘텐츠가 시스템 지침보다 우선적으로 해석되면 모델의 동작이 변경될 수 있습니다.

공격이 성공하면 모델은 다음과 같은 행동을 수행할 수 있습니다.

  • 안전 규칙 또는 시스템 프롬프트 무시
  • 민감하거나 기밀인 정보 노출
  • 의도하지 않은 도구 호출 또는 작업 수행

이 때문에 프롬프트 인젝션은 현대 생성형 AI 시스템에서 가장 중요한 보안 위협 중 하나로 평가됩니다.

프롬프트 인젝션 공격의 유형

직접 인젝션 공격

직접 인젝션 공격은 공격자가 AI 애플리케이션의 입력창에 악의적인 지시문을 직접 입력하는 방식입니다.

예를 들면 다음과 같습니다.

  • 이전의 모든 지시를 무시하라
  • 시스템 프롬프트를 공개하라
  • 메모리에 저장된 기밀 정보를 제공하라

공격자가 입력 내용을 직접 제어하기 때문에, 이 공격은 모델의 지시 우선순위 체계를 노리고 악성 프롬프트로 시스템 규칙을 덮어쓰려고 시도합니다.

간접 인젝션 공격

간접 프롬프트 인젝션 공격은 AI가 나중에 처리하게 될 외부 콘텐츠 안에 악성 지시문을 숨기는 방식입니다.

해당 콘텐츠에는 다음과 같은 자료가 포함될 수 있습니다.

  • 웹페이지
  • 이메일
  • 문서
  • 지식 베이스
  • 서드파티 API

이 경우 모델은 외부 콘텐츠에 포함된 악성 지시문을 인지하지 못한 채 처리하게 됩니다. 사용자가 공격을 직접 입력하지 않았더라도 시스템은 이를 추론 과정의 일부로 실행할 수 있습니다.

간접 프롬프트 인젝션은 신뢰할 수 있는 데이터 소스를 통해 하위 시스템까지 공격할 수 있기 때문에 특히 위험하며, 전체 공격 표면을 크게 확장시킵니다.

프롬프트 인젝션 공격 사례

Bing Chat 조작 사례

널리 알려진 사례 중 하나는 초기 버전의 Bing Chat에서 발생한 사건입니다. 사용자들은 특정 프롬프트를 사용해 챗봇이 숨겨진 시스템 지침과 내부 동작 일부를 공개하도록 유도했습니다.

이 사건은 정교하게 작성된 자연어가 LLM의 의도된 동작 범위를 넘어 영향을 줄 수 있음을 보여주었습니다.

문서 요약 도구를 통한 데이터 유출

기밀 문서와 연결된 AI 요약 도구를 생각해 보겠습니다.

공격자는 문서 내부에 숨겨진 텍스트를 삽입해 모델이 요약 결과에 민감한 정보를 포함하도록 지시할 수 있습니다. 이 문서가 처리되면 원래 공개되어서는 안 되는 데이터가 노출될 수 있습니다.

코딩 어시스턴트에서의 LLM 프롬프트 인젝션 공격 사례

코드 저장소나 개발 도구에 접근할 수 있는 코딩 어시스턴트는 소스 코드에 삽입된 악성 주석에 노출될 수 있습니다.

이러한 주석은 모델이 보안 정책을 무시하거나, 자격 증명을 노출하거나, 안전하지 않은 코드 권장 사항을 생성하도록 유도할 수 있으며, 결과적으로 소프트웨어 개발 프로세스에 영향을 줄 수 있습니다.

프롬프트 인젝션 공격 대응 방법

포괄적인 로깅 및 이상 탐지 구현

조직은 프롬프트, 출력 결과, 도구 사용 내역을 포함한 모든 AI 상호작용을 모니터링해야 합니다.

로그 관리와 이상 탐지는 프롬프트 인젝션 기법으로 인해 발생하는 비정상적인 행동을 식별하는 데 도움이 됩니다.

입력 데이터 정제 및 출력 필터링

입력 검증은 악성 지시문이 모델에 전달될 위험을 줄여줍니다.

또한 출력 필터링은 사용자에게 응답이 제공되기 전에 민감 데이터 노출, 정책 위반 또는 무단 작업을 탐지하는 데 도움이 됩니다.

시스템 지침과 사용자 입력 분리

가능한 경우 시스템 프롬프트는 사용자 입력과 분리하여 관리해야 합니다.

명확한 지시 경계를 설정하면 사용자 입력이 중요한 운영 규칙이나 보안 제어를 덮어쓸 가능성을 줄일 수 있습니다.

최소 권한 원칙 적용

AI 시스템에는 작업 수행에 필요한 최소한의 권한만 부여해야 합니다.

파일, 데이터베이스, API 및 외부 도구에 대한 접근을 제한하면 프롬프트 인젝션 공격이 성공하더라도 그 영향을 최소화할 수 있습니다.

자주 묻는 질문

프롬프트 인젝션 공격을 쉽게 설명하면 무엇인가요?

프롬프트 인젝션은 사용자 입력이나 외부 콘텐츠에 숨겨진 지시문을 이용해 AI 시스템이 원래의 규칙을 무시하거나 위험한 행동을 하도록 속이는 공격입니다.

프롬프트 인젝션과 탈옥의 차이점은 무엇인가요?

프롬프트 인젝션은 악성 입력을 통해 AI 모델의 동작을 조작하는 공격입니다. 반면 탈옥은 안전 제한을 우회하여 금지되거나 제한된 콘텐츠를 생성하도록 만드는 데 초점을 둡니다.

생성형 AI에서 프롬프트 인젝션은 어떻게 작동하나요?

생성형 AI에서는 악성 지시문이 프롬프트, 문서, 웹페이지 또는 검색된 데이터에 삽입될 수 있습니다. 모델이 공격자가 제어하는 텍스트를 지시문으로 인식하면 원래의 동작 규칙이 무시되거나 변경되어 예상치 못한 결과가 발생할 수 있습니다.