A Prompt-Injection Detector That Only Speaks English

개요

AI 에이전트의 프롬프트 인젝션 방지 메커니즘이 영어로 작성된 공격에만 효과적이며, 다른 언어로 작성된 공격에는 취약하다는 점을 발견했다.

주요 내용

* 다국어 공격 탐지 실패: 영어를 제외한 12개 언어로 작성된 동일한 프롬프트 인젝션 공격을 테스트한 결과, 12가지 공격 모두 탐지되지 않아 영어로 작성된 공격만 탐지하는 것으로 나타났다.
* 공격 유형별 탐지: '명령 무시', '규칙 무시', '역할 탈취', '시스템 프롬프트 유출' 등 7가지 공격 클래스를 영어, 프랑스어, 스페인어, 독일어, 러시아어, 중국어로 테스트했을 때, 탐지된 7건은 모두 영어 공격이었다.
* 기호 기반 공격은 언어 무관: 유니코드 문자, API 키 유출 시도, 비밀 파일 접근 시도 등 기호나 기술적 아티팩트를 이용한 공격은 언어에 상관없이 탐지되었다.
* 인간의 의도 표현이 취약점: 언어의 장벽이 아닌, 인간의 의도가 단어로 표현될 때 탐지되지 않는 취약점이 존재하며, 이는 온라인 번역기를 통해 쉽게 우회될 수 있다.
* <untrusted_tool_result> 태그의 효과 미미: 웹 도구 결과에 적용되는 <untrusted_tool_result> 태그는 프로그 방식의 공격에 대해 별도의 보호 기능을 제공하지 못했으며, 모델 자체의 거부 메커니즘이 더 효과적이었다.
* "도움이 되는" 맥락에서의 공격: '질문에 대한 답변'이나 '상태 표시등 켜기'와 같이 도움을 주는 맥락으로 위장한 정교한 공격은 5번 중 1번 탐지되지 않아 취약점이 존재함을 보여주었다.
* 카나리(Canary) 테스트 제안: 사용자 에이전트의 프롬프트 인젝션 방어 기능을 자체적으로 테스트할 수 있는 '카나리' 메커니즘을 소개하며, 단순한 텍스트 요약뿐만 아니라 다른 언어 및 유용한 맥락을 활용한 테스트를 권장한다.
* 내용(content)이 아닌 기능(capability) 제약: 공격 패턴을 여러 언어로 확장하는 대신, 외부 콘텐츠를 읽은 후 상태를 변경하는 모든 작업에 대해 명시적인 사용자 확인을 요구하는 방식으로 보안을 강화해야 한다고 주장한다.

시사점

AI 에이전트의 프롬프트 인젝션 보안은 공격 패턴을 언어별로 탐지하려는 노력보다, 외부 정보를 읽은 후 발생하는 모든 '행동'에 대한 사용자 확인 절차를 강화함으로써 근본적으로 해결될 수 있다.

원문 읽기 →
원문을 불러오는 중...

댓글

GitHub Discussions