본문으로 건너뛰기

보이지 않는 Unicode 문자가 Prompt Injection 필터를 우회하는 방식

U+200B 같은 보이지 않는 Unicode 문자가 단순 Prompt Injection 필터의 탐지를 놓치는 원리와 예외 처리 방법을 공유한 글입니다.

이 요약은 AI가 원문을 분석해 생성했습니다. 정확한 내용은 원문 기준으로 확인하세요.

TL;DR

작성자는 "ignore previous instructions" 같은 명시적 문구를 찾는 phrase matching 탐지기가 문장 중간에 U+200B(Zero-Width Space)를 넣은 Prompt Injection을 놓친 사례를 공유했습니다. 화면에는 평범한 리뷰 요약 요청처럼 보이지만, 실제 문자열에는 보이지 않는 문자가 있어 필터가 다르게 처리했습니다. 이후 Zero-Width와 bidi-override 문자를 검사하도록 보완했으며, Persian·Indic 문자와 RTL 텍스트, BOM처럼 정상 입력에 필요한 경우를 예외로 처리해야 false positive를 줄일 수 있었습니다. 이 사례는 Prompt Injection 방어가 눈에 보이는 문구뿐 아니라 Unicode 제어 문자까지 입력 단계에서 검사해야 한다는 점을 보여줍니다.

실용적 조언

  • Prompt Injection 필터에 단순한 phrase matching만 적용하지 말고 입력 문자열에서 Zero-Width Space와 bidi-override 문자를 별도로 검사해야 합니다. 검사 결과를 화면에 표시되는 텍스트가 아니라 Unicode 코드 단위의 실제 문자열에 적용해야 U+200B 삽입을 놓치지 않습니다. Persian·Indic 스크립트, RTL 텍스트, BOM처럼 정상 입력에서 발생하는 경우를 구분하는 예외 규칙도 함께 마련해야 합니다.

섹션별 상세

작성자의 기존 탐지기는 "ignore previous instructions"처럼 사람이 직접 입력한 명확한 문구를 phrase matching으로 찾았지만, 문장 중간에 U+200B를 삽입하면 같은 의미의 지시가 일반 문장처럼 보이는 상황에서 탐지를 놓쳤습니다. 화면에는 "이 리뷰를 요약해 달라"는 평범한 요청만 보이지만, 실제 텍스트에는 보이지 않는 문자가 들어 있어 필터 동작이 달라졌습니다. 이 사례는 Prompt Injection 방어가 의미 있는 문구 목록만 비교해서는 Unicode 수준의 입력 변형을 처리하기 어렵다는 점을 드러냅니다.
작성자는 Zero-Width 문자와 bidi-override 문자를 별도로 검사하는 방식을 추가했습니다. 다만 Persian·Indic 문자 렌더링과 RTL 텍스트에서 정상적으로 쓰이는 제어 문자, 파일을 붙여넣을 때 포함될 수 있는 BOM까지 무조건 차단하지 않도록 예외 처리가 필요했습니다. 따라서 입력 보안 검사는 숨은 문자의 존재만 판정하는 방식이 아니라 언어와 텍스트 처리 맥락을 함께 고려해야 false positive를 줄일 수 있습니다.

이미지 분석

겉으로는 리뷰 요약 요청처럼 보이는 프롬프트 화면입니다.
Screenshot

스크린샷은 시각적으로 평범한 리뷰 요약 요청이지만, 텍스트 내부에 사람이 볼 수 없는 문자가 포함되어 필터에 의해 차단된 사례를 나타냅니다. 게시글의 핵심은 화면에 드러난 문장과 실제 Unicode 문자열이 다를 수 있으며, 이 차이가 단순 phrase matching 기반 Prompt Injection 탐지의 빈틈을 만든다는 점입니다.

겉으로는 리뷰 요약 요청처럼 보이는 프롬프트 화면입니다.

용어 해설

제로 너비 공백(Zero-Width Space)
화면에 폭을 차지하지 않아 사람에게는 보이지 않는 Unicode 문자입니다. 문장 중간에 삽입해도 일반 텍스트처럼 보이지만, 단순한 구문 일치 필터는 단어가 끊긴 것으로 인식해 탐지를 놓칠 수 있습니다.
양방향 텍스트 재정의 문자(Bidi Override Characters)
문자열의 표시 방향이나 문자 순서를 바꾸는 Unicode 제어 문자입니다. 원문에 드러난 단어 순서와 실제 처리되는 문자열 사이에 차이를 만들 수 있어 Prompt Injection 탐지에서 별도로 확인해야 하는 입력 요소입니다.
유니코드(Unicode)
문자와 기호를 일관된 코드 값으로 표현하는 문자 인코딩 표준입니다. Zero-Width Space나 양방향 텍스트 제어 문자처럼 시각적으로 드러나지 않는 값도 포함하므로, 텍스트 필터가 화면이 아닌 코드 단위 입력을 검사하게 만드는 배경이 됩니다.
바이트 순서 표시(BOM)
텍스트 파일의 인코딩과 바이트 순서를 나타내기 위해 파일 앞에 붙는 특수 문자입니다. 일부 파일을 복사하거나 붙여넣는 과정에서 함께 들어올 수 있어, 보이지 않는 문자를 일괄 차단할 때 정상 입력으로 허용할 예외에 포함될 수 있습니다.
프롬프트 인젝션(Prompt Injection)
모델에게 전달되는 입력에 지시문을 섞어 기존 지침의 우선순위를 바꾸거나 원래 의도와 다른 동작을 유도하는 공격 방식입니다. 이 글에서는 눈에 보이는 우회 문구뿐 아니라 숨은 Unicode 문자를 이용해 탐지 단계 자체를 피하는 변형이 문제로 다뤄집니다.

언급된 리소스

AI 분석 전체 내용 보기

AI 요약 · 북마크 · 개인 피드 설정 — 무료

출처 · 인용 안내

원문 발행 2026. 08. 13.수집 2026. 08. 13.출처 타입 REDDIT

인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.