사상 리더
방지할 수 없는 프롬프트 인젝션 공격: 희망적 사고인가, 현실적 우려인가?

이 글에서 저는 독자 여러분에게 사고 실험에 참여해 보길 권합니다. 저는 가까운 미래에 특정 유형의 프롬프트 인젝션 공격이 사실상 방지 불가능해질 것이라고 주장하려 합니다. 제 주장은 구체적이기보다는 추측에 가깝습니다. 따라서 여러분을 설득하려는 것이 아니라, 이러한 생각들을 함께 탐구해 보길 초대합니다. 시작하기 전에, 설득력 있는 글쓴이라면 그렇듯, 체스와 체스 엔진에 대해 이야기하고 싶습니다.
초인간적 체스 엔진과 인간 경험에 대한 주장
체스가 다른 분야에 부족한 더 나은 요소 중 하나는 플레이어의 실력이나 강도를 객관적으로 측정할 수 있는 능력입니다. 이를 위해 사용되는 ELO 레이팅 시스템에는 결함이 있지만, 시간이 지나도 유지되는 매우 좋은 대략적인 추정치를 제공합니다. 2700 이상의 레이팅은 일반적으로 월드 클래스(세계 30위권 내)로 인정받습니다. 세계 최고의 선수는 2850 직전입니다. 인간은 아직 2900 레이팅에 도달한 적이 없습니다.
90년대 중반, 우리는 월드 클래스 수준에 도달한 최초의 AI 엔진(Deep Blue)을 보았습니다. 이 이정표의 실질적인 의미는 모든 수준의 플레이어들이 연습과 분석을 위해 엔진을 널리 채택하게 된 것이었습니다. 사실, 엔진 사용은 세계 최고의 선수들에게 필수적이 되었습니다. 그러나 몇 세대에 걸친 이러한 월드 클래스 엔진들의 경우, 그들이 추천하는 수(즉, 출력)를 검토하는 것이 필수적이었습니다. 인간이 옆에 엔진을 두고 경쟁하는 “어드밴스드 체스”라는 특별한 형식도 만들어졌으며, 인간 + 기계 조합은 기계 단독보다 우수한 것으로 여겨졌습니다.
체스 엔진이 초인간적 수준(약 3200 ELO)에 도달하는 데는 약 20년과 딥 러닝 및 강화 학습 분야의 몇 가지 중요한 진전이 필요했습니다. 하지만 2017년경 그 성층권이 돌파되자, 매우 놀라운 일이 일어났습니다. 사실, 두 가지 일이 일어났습니다. 첫 번째는 완전히 예상된 일이었습니다. 엔진은 99%의 모든 포지션에서 사실상 “진리”의 기준이 되었습니다. 실제로 이는 우리가 엔진에 대한 “맹목적 신뢰의 시대”에 진입했음을 의미했습니다. 오늘날 인간이 엔진보다 훨씬 나은 수를 제안하는 것은 사실상 불가능합니다. “어드밴스드 체스”가 재미있었지만, 이제는 무의미한 연습입니다. 인간은 게임에 거의 기여하지 못할 것입니다. 그러나 두 번째 일은 대부분의 체스 플레이어들에게 충격적이었습니다. 이러한 초인간적 신경망(즉, 딥 뉴럴 네트워크) 엔진들은 때때로 “낭만적”이라고 표현하는 스타일로 플레이했습니다. 다시 말해, 그들은 그 가치를 아주 오랜 수 뒤에서야 비로소 알 수 있는, 어떤 인간이나 월드 클래스 엔진도 계산할 수 없는 범위를 넘어서는 수를 두었습니다. 마치 엔진이 특정 포지션에 대한 “느낌”이나 “직관”을 개발한 것처럼 느껴졌습니다. 다만 이 직관은 인간이 결코 이해하거나 모방할 수 없는 것이었습니다.
다르게 표현하면, 초인간적 신경망 엔진은 인간의 인지적 지평 너머의 수를 둘 수 있습니다. 이것이 여기서 중요한 점입니다. 문제는 설명 가능성의 문제가 아닙니다. 오히려, 인간은 포지션을 진행해 보고 여러 수 뒤의 결과를 관찰하지 않고서는, 즉 가능한 게임 시퀀스의 전체 궤적을 펼쳐보지 않고서는 엔진이 왜 특정 수를 추천하는지 이해할 수 없습니다. 결과적으로 우리는 극복할 수 없는 능력 격차를 갖게 됩니다. 객관적으로 검토 없이 엔진의 출력을 받아들이는 것이 최적입니다. 제 주장을 다음과 같이 요약할 수 있습니다:
체스는 초인간적 AI가 일부 영역에서 사실상 자율적으로 운영될 것임을 증명하는 존재 증명이다. 인간의 검토 없이 AI 시스템이 결정을 내릴 수 있도록 하는 것이 그러한 시스템을 배포하는 최적의 방법이 될 것이다.
제 주장이 당연하거나 평범하게 느껴질 수 있으므로, 몇 가지 미묘한 차이를 강조하고 싶습니다. 구체적이고 되돌릴 수 없는 결과를 초래하는 복잡하고 중요한 작업에서 초인간적 수준을 보여주는 AI 시스템이 있다고 가정해 봅시다. 제 주장에는 두 가지 함의가 있습니다:
- 내재된 위험에도 불구하고, 시스템은 인간의 검토 없이 해당 작업을 위한 결정을 내리도록 배포될 것이다.
- 그러한 시스템을 모니터링하여 얻은 통찰력도 해로운 결정을 막지 못할 것이다. 피해는 이미 발생한 후일 것이다.
시스템 출력 검토와 모니터링은 프롬프트 인젝션에 대한 마지막 두 방어 계층입니다. 따라서 우리의 가상 프롬프트 인젝션 공격은 적절한 시스템을 대상으로 함으로써 이 두 계층을 단순히 우회할 수 있습니다.
제 생각에 이는 매우 현실적인 시나리오입니다. 특정 영역에서의 초인간적 AI 시스템은 AGI가 아니며, 대부분의 전문가들은 그러한 시스템이 곧 등장할 것이라고 믿습니다. 또한 우리는 결정이 시간에 민감하다고 가정할 필요도 없었습니다. 단지 작업이 인간의 검토를 난해하게 만들 만큼 충분히 복잡하다는 것만 가정하면 됩니다.
물론, 지금까지는 단지 두 개의 방어 계층만 우회했을 뿐이며, 다행히도 다른 여러 계층들이 개발되었습니다. 나머지를 다루기 위해, 프롬프트 인젝션을 방어하기 어렵게 만드는 핵심 요소들을 파헤쳐 보겠습니다.
프롬프트 인젝션이란 무엇인가?
프롬프트 인젝션은 대규모 언어 모델(LLM)을 조작된 입력을 통해 조작하여, LLM이 공격자의 의도를 알지 못한 채 실행하도록 만드는 것입니다. 이를 AI를 위한 사회 공학으로 간주할 수 있습니다. 결정적으로, 이는 일반적인 소프트웨어 버그가 아닙니다. 프롬프트 인젝션 공격은 LLM의 고유한 취약점을 악용합니다. LLM은 시스템 프롬프트와 사용자 프롬프트를 모두 텍스트 시퀀스로 처리하기 때문에, 본질적으로 합법적인 지시와 유해한 지시를 구별할 수 없습니다. 따라서 이 취약점은 사실상 우연이 아닌 설계상의 것입니다.
프롬프트 인젝션 기법
프롬프트 인젝션은 일반적으로 LLM 애플리케이션의 최고 위험 요소 #1로 인정받고 있습니다. 그 이유는 여러 가지가 있습니다. 가장 명백한 요소는 개발된 인젝션 기법의 다양성입니다. 대략 네 가지 범주로 그룹화하면, 가장 잘 알려진 기법은 다음과 같습니다:
- 구문 기반: 특수 문자, 이모지 또는 대체 언어 사용
- 간접적: 외부 소스 사용(사이트에서 가져오기), 인코딩(base 64), 또는 멀티모달 참조(이미지 내 텍스트)
- “가정해 봅시다”: 역할극, 가정적 시나리오, 감정적 호소, 윤리적 틀, 형식 전환 등을 통한 조작적 스타일 도입
- 노골적: 무력, 강화, 또는 네거티브 프롬프트를 통한 모델 지시에 대한 명시적 “강압” 시도
다양성 자체만으로도 애플리케이션 개발자들에게는 도전이 되지만, 이러한 공격들은 또한 빠르게 진화해 왔습니다. 아래 다이어그램의 왼쪽은 2023년 초의 최신 기술을 설명하려는 것이고, 오른쪽은 오늘날 공격의 성격을 반영합니다.

LLM 앱 개발자들은 또한 표준적인 사용성 대 안전성의 트레이드오프를 고려해야 합니다. 그들은 확실히 모든 적절한 방어 계층과 디자인 패턴을 도입할 수 있지만, 그 대가는 무엇일까요? 방어 계층은 상당한 지연 시간을 추가하고 위양성(FP) – 안전한 프롬프트를 악의적인 것으로 잘못 표시 – 을 발생시킵니다. 두 요소 모두 사용자 경험에 부정적인 영향을 미칩니다. 결과적으로, 실제로는 어느 정도의 타협이 불가피하며, “만능 해결책”은 없습니다.
그러나 이 글에서 저는 이 끝없는 술래잡기 게임에 관심이 있는 것이 아닙니다. 오히려, 공격이 원칙적으로 방지 불가능할 수 있는지 탐구하고 있습니다. 개발자/방어자의 관점에서 보면, 단 하나의 핵심 통찰이 있습니다:
프롬프트에서 지시와 데이터를 분리하는 것은 프롬프트 인젝션 위험을 해결하는 데 근본적이다
트레이드오프는 고려하지 않고, 어떤 방어 계층이나 기법도 사용할 수 있다고 가정할 수 있습니다. 이 (강한) 가정 하에, 프롬프트에서 지시-데이터 분리가 사실상 불가능한 시나리오를 구성하는 것이 가능할까요?
DNA 비유
문제가 지시-데이터 분리의 관점에서 정립되자, 제 초기 생각은 생물학을 비유로 사용하는 것이었습니다.
세포와 DNA의 일부(유전자라고 알려진)를 생각해 보세요. 유전자는 전사와 번역을 통해 단백질을 구축하기 위한 지침을 제공합니다. 또한 단백질의 구조와 기능에 영향을 미치는 정보(데이터)를 인코딩합니다. 따라서 유전자는 무엇을 만들지와 어떻게 만들지를 동시에 지시한다고 저는 추론했습니다. 그러나 이는 단순히 거짓입니다. 왜냐하면 유전자는 자신을 어떻게 해석할지 결정하지 않기 때문입니다. 유전자 수준에서 생물학에는 지시 따르기에 상응하는 것이 없습니다. “어떻게”는 완전히 세포 기계 장치에 외부화되어 있습니다.
따라서, 미래 세대의 LLM들 – 더 정확히는 그들이 진화할 시스템들 – 이 훨씬 더 큰 범위에서 생물학적 기계와 유사할 것이라는 느낌을 떨쳐버릴 수 없더라도, 제안된 비유는 작동하지 않습니다. 우리는 세포를 LLM으로, 유전자를 프롬프트로 대체한 다음, 결국 “손상된” 단백질이 만들어지도록 유전자에 인젝션을 수행할 수 없습니다. 의미론적 해석이 필요한 자연어와 작업에 집중하는 것이 더 생산적인 것 같습니다.
방어 계층 벗겨내기
프롬프트 인젝션 공격을 막는 데 다중 계층 방어 전략이 더 효과적인 것으로 간주되는 것은 당연합니다. 아래 이미지는 가장 일반적인 방어 계층을 순서대로 보여주며, 각 계층에서 사용되는 관련 기법을 보여줍니다.

우리는 이미 위에서 마지막 두 계층(출력, 모니터링)에 대해 논의했으므로, 처음 네 계층에 집중해 보겠습니다.
입력 계층을 고려할 때, 프롬프트의 살균 또는 검증이 간접적 공격을 탐지하는 데 상당히 성공적일 것이라고 가정하는 것이 합리적입니다. 그러나 인젝션이 직접 전달되고, 위에서 제안된 대로 의미론적 해석에 의존한다면, 아마도 살균은 무관할 것이고(살균할 것이 없음), 검증은 문제를 식별하기 위해 계산이 완료되어야 하므로 기본적으로 불가능할 것입니다.
탐지 계층에서 구성할 수 있는 가드레일에는 본질적으로 제한이 없습니다. 사실, 인젝션 탐지를 위해 전용 LLM을 사용할 수도 있습니다. 하지만 다시 한번, 독이 의미론 안에 교묘히 숨겨져 있을 때 분류기나 이상 감지기가 프롬프트를 의심스럽다고 표시하는 것은 어려울 것입니다.
모델 계층은 작업 범위가 좁고 미세 조정이 가능할 때 상당히 효과적일 수 있습니다. 도구 사용이 예측 가능할 때 시스템 계층에 대해서도 비슷한 주장을 할 수 있습니다. 그러나 적어도 직관적으로, 인젝션이 해석기를 벗어나게 만들면 어느 쪽도 경보를 울리지 않을 것입니다.
카드 집
이 글을 쓰기 시작했을 때 제 의도는 “방지 불가능한” 프롬프트 인젝션 공격을 대략적으로 설명하는 것이었습니다. 아마도 저는 기존 방어 계층에 구멍을 뚫는 “비구성적” 접근 방식을 따르게 된 것 같습니다. 방어 기법은 계속 빠르게 진화하고 있으며, 공격 표면도 마찬가지입니다. 이 게임은 곧 끝날 조짐을 보이지 않습니다. 그러나 저는 또한 우리가 이 게임을 더 이상 오래 플레이하지 않을 것이라고 믿습니다. 저는 미래의 성공적인 프롬프트 인젝션이 여전히 자연어일 것이지만, 인간이 이해할 수 없는 언어일 것이라고 추측합니다. 그리고 그것은 특정 목적을 위해 구축된 시스템에 의해, 아니면 아마도 어떤 표현 공간에서 의미론적 모호성을 탐색하는 것과 같은 관련 작업을 해결한 후 우연히 자동 발견될 것이라고 추측합니다.
우리가 통제력을 잃고 있음을 인정하면서도 이것이 가장 합리적인 일이라고 느끼는 데는 불
