프롬프트 인젝션 방어와 입력 검증
오늘은 AI 서비스에서 발생할 수 있는 프롬프트 인젝션 공격과 이를 방어하는 방법에 대해 배웠다.
프롬프트 인젝션은 AI에게 원래 지시를 무시하게 하거나, 정해진 규칙을 어기도록 유도하는 공격이다. 사용자가 직접 공격 문장을 입력할 수도 있지만, AI가 참고하는 문서나 웹페이지에 공격 명령을 숨기는 간접 인젝션도 있다는 것을 알게 되었다.
특히 문서에 적힌 내용이 회사의 운영 지침처럼 보이면 AI가 이를 정상적인 정보로 받아들일 수 있다는 점이 인상적이었다. 또한 여러 AI 에이전트가 협력하는 환경에서는 한 에이전트가 잘못 받아들인 정보가 다른 에이전트에게 전달될 수도 있다.
이러한 공격을 막기 위해 입력 검증, 시스템 프롬프트 강화, 출력 검증을 함께 사용하는 다층 방어 방법을 살펴보았다.
입력 검증에서는 먼저 정규화와 키워드 검사를 통해 위험한 문구를 확인한다. 정규화는 띄어쓰기나 대소문자처럼 표현이 다른 글자를 비교하기 쉽게 바꾸는 과정이다. 키워드 검사로 걸러내지 못한 입력은 LLM 분류기를 이용해 문장의 의미를 확인한다.
실습 자료에서는 에이전트 사이에 정제 노드를 추가해 위험한 정보를 걸러내고, 최종 응답에 비밀 정보가 포함되어 있으면 출력 필터로 차단하는 방법도 다뤘다.
또한 정상적인 문서까지 공격으로 판단하는 오탐과 실제 공격을 놓치는 미탐에 대해서도 배웠다. 단순히 명령문이 있는지를 검사하는 것보다 AI의 규칙을 바꾸려는 지시인지 구분하는 것이 중요하다는 점을 알게 되었다.
이번 수업을 통해 프롬프트 인젝션은 사용자 입력뿐 아니라 외부 자료나 에이전트 사이에서도 발생할 수 있으며, 하나의 방어 방법만으로는 모든 공격을 막기 어렵다는 것을 배웠다.
댓글
댓글이 없습니다.
