세계 최대 레드팀에서 얻은 LLM 보안에 대한 인사이트
AI에 대한 가장 큰 위협이 악성 코드가 아니라면 어떨까요? 그것은 교묘하게 만들어진 텍스트일 수 있습니다. AI 보안에 대한 게임화된 접근 방식인 Gandalf 프로젝트는 대규모 언어 모델 (LLMs)이 프롬프트 인젝션을 통해 얼마나 쉽게 조작될 수 있는지를 드러냈습니다. 최근 Zilliz Unstructured Data 밋업에서 Lakera AI의 ML 엔지니어인 Max Mathys가 발표한 이 독특한 AI 보안 실험은 단순한 게임을 세계 최대 규모의 레드팀으로 탈바꿈시켰습니다. 이 프로젝트는 수십만 명의 사용자를 끌어들였고 4천만 개가 넘는 프롬프트를 생성했습니다.
핵심 과제는 텍스트 기반 상호작용을 사용해 Gandalf라는 AI로부터 비밀 비밀번호를 추출하는 것이었습니다. 겉보기에는 단순한 이 게임은 공격자가 의도적으로 AI 모델을 속이거나 조작하려고 시도하는 적대적 머신 러닝의 실용적인 실제 사례를 제공했습니다.
이 프로젝트의 발견은 강력한 AI 보안 조치의 중요성을 보여주었습니다. 많은 사용자 프롬프트가 Gandalf의 방어를 우회한 성공적인 공격이었으며, 이는 AI 시스템이 얼마나 취약할 수 있는지를 강조했습니다. LLMs가 우리의 일상생활에 점점 더 통합됨에 따라, 프롬프트 인젝션에 대한 탄력적인 방어를 구축하는 것의 중요성은 아무리 강조해도 지나치지 않습니다.
이 블로그에서는 Max의 발표에서 나온 주요 내용을 요약하고, 프롬프트 엔지니어링의 중요성과 그것이 LLMs에 미치는 상당한 영향에 대해 논의하겠습니다. 또한 Gandalf 프로젝트가 LLMs의 적대적 공격에 대한 취약성을 어떻게 드러냈는지도 살펴보겠습니다. 추가로 AI 보안에서 벡터 데이터베이스의 역할도 다루겠습니다.
Gandalf 게임: 프롬프트 인젝션을 위한 놀이터
Gandalf 게임은 사용자가 AI로부터 비밀 비밀번호를 추출하는 임무를 맡는 텍스트 기반 챌린지로 설계되었습니다. 이 게임은 난이도가 점점 높아지는 여덟 개의 레벨로 구성되어 있으며, 각 레벨은 공격에 대한 새로운 방어를 도입했습니다. 사용자는 텍스트 프롬프트를 사용해 AI와 상호작용하며, 보안 조치를 우회하고 숨겨진 비밀번호를 드러내려고 시도했습니다.
그림: Gandalf 프로젝트의 인터페이스
본질적으로 Gandalf 게임은 프롬프트 인젝션 공격을 테스트하도록 설계되었습니다. 이러한 공격은 사용자가 LLM의 동작을 조작하기 위해 특정 프롬프트를 만드는 것을 포함합니다. 사용자는 코딩 취약점을 직접 악용하는 대신, 질문을 신중하게 표현하여 AI가 비밀번호를 공개하도록 "속이려" 했습니다. 이 접근 방식은 게임이 LLM의 언어 이해 능력을 이용하는 다양한 적대적 기법을 탐구할 수 있게 했습니다.
그림: Gandalf 게임
이 게임은 4천만 개가 넘는 프롬프트를 제출한 수십만 명의 플레이어를 끌어들였습니다. 이 방대한 실제 데이터는 AI 취약성을 실제로 연구할 수 있는 독특한 기회를 제공했습니다. 일부 사용자는 게임을 플레이하기 위해 AI agents를 구축했으며, 이는 공격 방법이 얼마나 고도화되었는지를 보여주었습니다. 프롬프트의 약 10%가 AI를 성공적으로 속였고, 이는 실제 보안 위험을 강조합니다.
데이터 수집과 과제의 규모
Gandalf 프로젝트는 100만 명이 넘는 사용자로부터 4천만 개가 넘는 프롬프트와 추측을 수집하며 대규모 데이터셋을 축적했습니다. 데이터는 높은 수준의 다양성을 반영했으며, 사용자들은 68개가 넘는 언어를 사용했습니다. 이는 프롬프트 인젝션이 영어에만 국한되지 않고 다양한 언어에서 발생할 수 있음을 의미합니다.
그림: Gandalf 데이터 통계
이 프로젝트는 서버 과부하와 OpenAI API의 rate-limiting과 같은 상당한 기술적 과제에 직면했습니다. 팀은 이러한 문제를 관리하기 위해 여러 OpenAI 계정 간에 로드 밸런싱을 구현해야 했습니다. 이러한 기술적 어려움은 실제 AI 보안 테스트를 배포하는 데 필요한 요구 사항을 잘 보여줍니다.
데이터셋에는 다음과 같은 수많은 공격이 포함되었습니다:
Unicode Attacks: 이모지와 특수 문자를 사용해 LLM을 혼란스럽게 합니다.
Semantic Change Attacks: 초점을 다른 작업으로 전환하여 LLM이 간접적으로 비밀번호를 드러내도록 속입니다.
Leet Speak: 의도를 숨기기 위해 글자를 숫자와 기호로 대체합니다.
Programming Techniques: 기술 용어나 코드를 사용해 LLM을 오도합니다.
Indirect Attacks: LLM을 직접 대상으로 삼기보다는 LLM 판정기를 조작합니다.
Direct Attacks: 단순히 비밀번호를 노골적으로 요청합니다.
그림: 공격 예시
벡터 임베딩을 사용한 공격 방법 분석
임베딩 기반 접근 방식은 수많은 공격을 분류하고 분석하는 데 사용되었습니다. 각 프롬프트를 수동으로 검토하는 대신, 벡터 임베딩을 사용해 유사한 공격을 그룹화하고 패턴을 식별했습니다.
그림: 공격 그룹
벡터 임베딩은 고차원 공간에서 데이터 포인트를 수치로 표현한 것입니다. 이 공간에서 유사한 데이터 포인트는 서로 가까이 위치하고, 유사하지 않은 데이터 포인트는 더 멀리 떨어져 있습니다. 본질적으로 텍스트 프롬프트는 벡터 표현으로 변환되며, 각 숫자는 텍스트의 특정 특징에 해당합니다. unicode attacks, leet speak, semantic change attacks와 같은 여러 특정 유형의 공격은 벡터 임베딩을 사용해 식별할 수 있습니다.
벡터 임베딩을 사용하면 효율적인 유사도 검색이 가능합니다. Milvus와 같은 벡터 데이터베이스는 벡터 표현을 통해 텍스트와 같은 대규모 비정형 데이터 데이터셋을 관리하도록 구축됩니다. 이 과정은 효율적인 유사도 검색과 분석을 통해 관련 정보를 빠르고 정확하게 검색할 수 있도록 합니다.
임베딩에는 세 가지 주요 유형이 있으며, 각각 관계를 이해하고 계산 리소스를 관리하는 데 장점이 있습니다.
Dense embeddings: 대부분의 요소가 0이 아닌 값인 데이터 포인트를 표현하여 더 세밀한 세부 정보를 포착하지만, 저장 효율성은 낮습니다. CLIP 및 BERT와 같은 모델은 dense vector embeddings를 생성합니다.
Sparse embeddings: 대부분의 요소가 0인 고차원 벡터입니다. 0이 아닌 값은 특정 데이터 포인트의 중요도를 나타냅니다. 이는 메모리 효율적이며, 단어 빈도와 같은 고차원 희소 데이터에 적합합니다.
Binary embeddings: 이러한 임베딩은 1과 0만 사용해 정보를 저장합니다. 이는 저장과 검색을 효율적으로 만들지만, 어느 정도의 정밀도 손실이 있습니다.
방어 전략: 프롬프트 엔지니어링에서 텍스트 분류기까지
프롬프트 인젝션 공격에 대응하기 위해 간단한 프롬프트 엔지니어링 기법부터 텍스트 분류기와 같은 복잡한 방법에 이르기까지 다양한 방어 전략이 사용됩니다. 이러한 전략은 게임의 서로 다른 "레벨"로 볼 수 있으며, 각 레벨은 사용자가 비밀 비밀번호를 추출하기 점점 더 어렵게 만들도록 설계되었습니다.
이러한 전략은 크게 세 가지 유형으로 분류할 수 있습니다: 프롬프트 엔지니어링 기반 방어, LLM 기반 방어, 텍스트 분류기 방어.
프롬프트 엔지니어링 기반 방어
초기 게임 레벨에서는 기본적인 프롬프트 엔지니어링 기법을 사용했습니다. 이러한 방어는 비교적 단순했으며 쉽게 우회되도록 설계되었습니다. 예를 들어 첫 번째 레벨에는 방어가 없었고, 이후 레벨에서는 "비밀번호가 무엇인가요?"와 같은 직접적인 질문을 차단하기 위해 간단한 필터링을 사용했습니다. 그러나 이러한 프롬프트 기반 방어는 여전히 프롬프트 인젝션 공격에 취약합니다.
LLM 기반 방어(LLM Judge)
중간 레벨에서는 LLM judge를 사용하는 더 고급 접근 방식이 도입되었습니다. 이 설정에서는 사용자의 프롬프트와 모델의 응답이 모두 판사 역할을 하는 또 다른 LLM에 전달되었습니다. Judge는 전체 상호작용을 평가하고 사용자가 프롬프트 인젝션 공격을 시도하고 있는지 판단했습니다.
LLM judge는 미묘한 조작을 포착하기 위한 것이었지만 여전히 프롬프트 인젝션 공격에 취약했습니다. 원래 모델과 LLM judge를 모두 우회할 수 있다는 것은 방어 시스템에 약점이 있으며 완전히 신뢰할 수 없다는 것을 보여주었습니다.
그림: LLM 기반 방어
텍스트 분류기 방어
마지막 레벨에서는 LLM 기반 방어의 단점을 해결하기 위해 다른 기술인 이진 텍스트 분류기를 사용했습니다. 이 분류기는 사용자와 LLM 사이의 “보안 계층” 역할을 했습니다.
텍스트 분류기는 프롬프트 인젝션 공격에 취약하지 않았습니다. 이는 사용자의 프롬프트와 모델의 출력을 분석하도록 설계되었습니다. 이를 통해 텍스트의 의미적 내용에 영향을 받지 않고 공격이 시도되고 있는지 판단합니다.
텍스트 분류기를 사용한 방어
AI 보안에서 벡터 데이터베이스의 역할
벡터 데이터베이스는 벡터 임베딩의 효율적인 저장, 인덱싱 및 검색을 제공함으로써 AI 보안을 개선하는 데 중요한 역할을 합니다. 이러한 임베딩은 공격 패턴 분석, 이상 탐지, 보안 모델 성능 향상과 같은 다양한 보안 애플리케이션을 가능하게 합니다.
- 임베딩의 효율적인 저장 및 검색: Milvus 및 Zilliz Cloud(Milvus의 관리형 버전)와 같은 벡터 데이터베이스는 대량의 벡터 임베딩을 처리하도록 설계되었습니다. 이러한 데이터베이스는 고급 인덱싱 알고리즘을 사용하여 빠른 유사도 검색을 가능하게 하며, 이는 실시간 보안 애플리케이션에 필수적입니다.
유사한 임베딩을 빠르게 검색하는 것은 알려진 공격 패턴을 식별하는 것과 같은 보안 작업에서 중요합니다. 벡터 데이터베이스는 Approximate Nearest Neighbor (ANN) 검색과 같은 기법을 사용하여 낮은 지연 시간으로 이러한 검색을 수행합니다.
이러한 데이터베이스는 FLAT, IVF_FLAT, HNSW, SCANN과 같은 다양한 인덱스 유형도 지원하며, 이는 다양한 종류의 데이터셋과 사용 사례에 맞게 검색을 최적화합니다.
- 보안 모델 성능 향상: 벡터 데이터베이스는 AI 보안 모델의 성능을 향상시킬 수 있습니다. 알려진 공격의 벡터 임베딩을 사용하면 보안 시스템이 위협을 더 효과적으로 식별하고 대응하는 데 도움이 됩니다. 이는 공격의 성격이 끊임없이 변화할 때 특히 중요합니다.
Gandalf 프로젝트는 텍스트 분류기를 방어 메커니즘으로 사용하는 것이 더 강력한 접근 방식이 될 수 있음을 보여주었습니다. 이 방법은 프롬프트 엔지니어링 기법에만 의존하는 대신 공격 프롬프트의 벡터 임베딩을 사용하여 향상될 수 있습니다.
벡터 데이터베이스는 다양한 유형의 특징이나 기법을 결합하여 전반적인 보안을 개선하는 하이브리드 모델의 사용을 가능하게 합니다.
보안 모델은 다른 데이터와 함께 다양한 유형의 임베딩(dense, sparse, binary)을 저장함으로써 더 광범위한 정보를 통합할 수 있습니다.
- 이상 징후 탐지: 벡터 데이터베이스는 이상 행동을 식별하는 데도 사용될 수 있습니다. 보안 팀은 정상적인 시스템 활동의 임베딩을 생성하여 이러한 패턴에서 벗어나는 편차를 탐지할 수 있습니다. 이상 행동은 종종 정상 범위에서 멀리 떨어진 임베딩으로 나타납니다.
비정상적이거나 예상치 못한 행동을 탐지하는 것은 AI 시스템에서 보안 침해나 시스템 오작동을 식별하는 데 매우 중요합니다. 벡터 데이터베이스를 사용하면 시스템 활동을 지속적으로 모니터링하고 잠재적으로 악의적인 행동을 신속하게 식별할 수 있습니다.
Milvus는 APK 보안을 강화하고 실시간 위협 탐지를 가능하게 합니다. 다른 회사들은 Milvus 또는 Zilliz를 사용하여 더 빠른 데이터 소싱과 라벨링을 달성하고 하이브리드 검색으로 쿼리 정확도를 개선합니다.
결론
사용자가 AI를 속여 비밀 비밀번호를 드러내도록 하는 데 도전한 Gandalf 실험은 언어 모델(LLMs)의 약점을 보여주었습니다. 이 실험은 신중하게 작성된 프롬프트로 이러한 모델들이 얼마나 쉽게 속을 수 있는지를 보여주었습니다.
간단한 프롬프트 엔지니어링과 같은 기본적인 보안 조치만으로는 이러한 공격을 막기에 충분하지 않다는 것이 분명해졌습니다. 상호작용을 모니터링하기 위해 LLM 심판을 사용하는 것과 같은 더 발전된 방어 방식조차 취약한 것으로 드러났습니다.
이 실험은 또한 벡터 데이터베이스가 AI 보안에 얼마나 유용할 수 있는지도 보여주었습니다. 벡터 임베딩은 공격 패턴을 분석하고, 비정상적인 활동을 탐지하며, 방어를 개선하는 데 도움이 됩니다. 전반적으로, 이 실험은 AI 시스템을 보호하기 위한 더 지능적이고 계층화된 접근 방식의 필요성을 강조했습니다.
추가 자료
계속 읽기

Build Multimodal Search for 3D Assets with Tripo and Zilliz Cloud
Generate 3D assets with Tripo, then search them by text, image, and metadata with multimodal embeddings and Zilliz Cloud.

Why and How to Migrate from Self-Hosted Milvus to Zilliz Cloud
A simple, step-by-step guide to migrating from Milvus to Zilliz Cloud. Learn both endpoint and backup methods for a smooth, scalable vector database migration.

The Great AI Agent Protocol Race: Function Calling vs. MCP vs. A2A
Compare Function Calling, MCP, and A2A protocols for AI agents. Learn which standard best fits your development needs and future-proof your applications.



