피드로 돌아가기
Dev.toSecurity
원문 읽기
Invisible Unicode를 통한 Guardrail 우회 및 Prompt Injection 방어 전략
The invisible characters in your prompts aren't a conspiracy — they're a warning about your trust boundary
AI 요약
Context
텍스트를 단순한 문자열로 처리하는 기존 파이프라인의 신뢰 경계 허점을 분석. 가시적 텍스트와 실제 수신 바이트의 불일치를 이용하여 Regex 기반 필터링을 무력화하는 보안 취약점 발생.
Technical Solution
- Invisible Unicode(ZWSP, Variation Selectors 등)를 활용한 페이로드 은닉 기법 식별
- 단순
.strip()기반 세니타이징의 한계 인지 및 Normalization 단계 도입 - 입력 데이터의 정규화(Normalization) 후 Blocklist 매칭을 수행하는 2단계 검증 구조 설계
- 데이터 채널별(System Prompt vs User Content) 차등적 필터링 정책 적용으로 기능 손실 방지
grep -P를 활용한 레포지토리 내 잠재적 Invisible Character 전수 조사 수행
실천 포인트
1. 외부 입력 텍스트를 처리하는 모든 Guardrail 이전에 Unicode Normalization 단계 추가
2. `ignore previous instructions`와 같은 핵심 키워드 검사 시 가시 문자 기반이 아닌 정규화된 바이트 시퀀스 대상인지 확인
3. 이모지 및 다국어 지원이 필요한 채널과 기계 학습 지시어 채널의 필터링 규칙을 분리하여 정의
4. `len()` 함수 결과와 실제 렌더링 텍스트의 길이가 일치하는지 테스트 케이스 구축