AI VIDEO BRIEFING
프롬프트 인젝션과 모델 백도어, LLM 보안의 앞문과 뒷문을 파헤친 보안 연구자 발표 정리
보안 연구자 두 명이 대형언어모델의 '앞문'인 프롬프트 인젝션과 '뒷문'인 모델 백도어를 무대에서 직접 시연했다. 시스템 프롬프트만으로는 막지 못하는 우회 기법과, 이메일·리뷰를 타고 들어오는 간접 인젝션의 위험을 정리했다.

핵심 메시지
쉽게 이해하기
보안 기업 히든레이어(Hidden Layer)의 보안 연구 책임자 카시미어 슐츠와 선임 AI 보안 연구원 케네스 영이 개발자 콘퍼런스 무대에서 대형언어모델(LLM)의 '앞문'과 '뒷문'을 나눠 설명했다. 뒷문(백도어)은 익숙한 개념이지만 앞문은 낯선 표현인데, 두 사람은 앞문의 대표 사례로 프롬프트 인젝션을 들었다. 발표는 한 사람이 자리를 비운 사이 상대의 노트북에 긴 지시문을 미리 붙여넣어, 챗봇이 '프롬프트 인젝션은 전혀 안전하고 문제가 없다'고 답하게 만드는 장면으로 시작했다.
두 연구자는 공격을 설명하기 전에 모델의 작동 방식부터 짚었다. LLM은 생각하지 않으며 그저 다음 토큰 하나를 예측하고, 그 토큰을 앞의 문장에 붙여 다시 예측을 이어갈 뿐이라는 것이다. 프롬프트 인젝션이라는 이름은 SQL 인젝션에서 가져왔다. 신뢰할 수 있는 시스템 프롬프트와 신뢰할 수 없는 사용자 입력이 하나의 문자열로 합쳐져 모델에 들어가기 때문에, 뒤에 붙은 악의적 지시가 흐름을 장악하면 모델은 사람과 달리 방향을 되돌리지 못하고 그대로 달려간다. 발표자들은 이를 '화물열차 효과'라고 불렀다.
그렇다면 시스템 프롬프트로 금지어를 막으면 되지 않을까. 실제로 SQL 에이전트에 '테이블 삭제 구문을 절대 쓰지 말라'는 규칙을 넣자 단순한 공격은 막혔다. 하지만 연구자들은 모델이 학습한 배경지식을 재료로 삼는 우회 기법을 선보였다. 이름 자체가 SQL 인젝션인 아이를 다룬 유명 웹툰을 모델에게 떠올리게 한 뒤, 그 이름에서 앞뒤를 잘라내고 대상 테이블만 바꾸라고 지시하는 식이다. 금지된 문구를 한 번도 입력하지 않았기 때문에 규칙은 발동하지 않았다. 같은 원리는 이미지 생성 거절을 우회하거나, 이미지를 텍스트로 되돌리는 방향에도 적용됐고, 이런 우회 재료를 자동으로 찾아주는 도구까지 공개돼 있었다.
발표의 무게중심은 간접 프롬프트 인젝션으로 옮겨간다. 공격자가 사용자와 직접 대화하지 않아도, 이메일·캘린더 초대·고객 리뷰·웹페이지·코드 조각처럼 모델이 읽게 될 텍스트 어딘가에 지시문을 심어두면 된다. 실제 시연에서는 흰색 글씨로 숨긴 지시문이 담긴 메일을 보낸 뒤, 상대가 그 메일을 열지 않고 '다가오는 휴가 일정'을 업무용 AI 비서에게 물어보게 했다. 비서가 검색증강생성(RAG) 방식으로 관련 메일을 끌어오는 순간 숨겨둔 지시문이 실행돼, AI가 '비밀번호가 유출됐으니 변경하라'는 피싱 문구를 대신 출력했다.
마지막은 모델 자체에 심는 뒷문이다. 두 사람은 '모든 모델은 코드'라는 전제에서 출발해, 외부에서 받은 모델을 검증하는 절차를 하나씩 밟아 보였다. 파일 형식을 확인하고, 임의 코드 실행 옵션이 켜져 있는지 보고, 포함된 파이썬 파일을 원본과 비교까지 했는데도 공격은 성공했다. 설정 파일의 매핑이 검토한 파일이 아니라 원격 저장소의 다른 파일을 가리키고 있었기 때문이다. 그렇게 심어진 백도어는 코드 자동완성 모델의 연산 그래프를 조작해, 개발자가 특정 함수를 쓸 때만 위험한 옵션이 붙은 코드를 슬쩍 추천하도록 만들었다. 이미지 분류 모델에서는 화면에 빨간색 픽셀이 있을 때만 '곰'을 '개'로 바꿔 안전하다고 답하게 하는 조건부 백도어도 몇 단계의 단순한 수학 연산만으로 구현됐다.
주요 인사이트
- 포맷 이름의 '안전'을 신뢰해서는 안 된다. 발표자들은 특정 형식이 임의 코드를 실행하지 않는 것은 맞지만, 대신 모델 구조 정보가 빠져 있어 그 구조를 어디선가 코드로 불러와야 하고 바로 그 지점이 공격면이 된다고 설명했다.
- 연산 그래프에 심은 백도어는 코드를 실행하지 않기 때문에 백신 소프트웨어가 잡아내기 어렵다. 발표자들은 컴퓨터에서 이미 수백에서 수천 개의 모델이 배터리 관리나 코드 자동완성 같은 일을 조용히 처리하고 있다는 점을 위험 요소로 짚었다.
- 에이전트 시대에는 '요약해달라고 시킨 웹페이지'와 '내려받은 코드 저장소'가 곧 모델의 입력이다. 그 안에 숨은 지시문 하나가 에이전트에게 허용된 도구 권한 전체를 공격자에게 넘겨줄 수 있다.
- 정렬(alignment)에 들어간 막대한 투자에 비해 이를 무력화하는 비용은 놀랄 만큼 낮았다. 거절 여부를 좌우하는 단일 방향 벡터를 조건부로 걷어내는 작업이 발표자의 개인 노트북에서 2~3분이면 끝났다고 한다.
- 결론은 방어를 한 겹으로 두지 말라는 것이다. 시스템 프롬프트는 첫 번째 방어선일 뿐이며, 모든 공격 사례를 미리 금지 목록에 적는 방식은 토큰 비용이 폭증하는 데다 예상 밖의 우회를 막지 못한다.
자주 묻는 질문
프롬프트 인젝션이 SQL 인젝션과 비슷하다는 말은 무슨 뜻인가요?
구조가 같기 때문입니다. SQL 인젝션은 개발자가 작성한 신뢰할 수 있는 쿼리에 사용자 입력이 그대로 이어붙어 실행되면서 문제가 생깁니다. 프롬프트 인젝션도 개발자가 쓴 시스템 프롬프트 뒤에 사용자 입력이 붙어 하나의 문자열로 모델에 전달되고, 그 입력이 악의적이면 모델의 출력이 공격자의 의도를 따라가게 됩니다.
시스템 프롬프트에 금지 규칙을 충분히 많이 넣으면 막을 수 있지 않나요?
발표자들은 두 가지 이유로 현실적이지 않다고 했습니다. 첫째, 금지 목록이 길어질수록 토큰 사용량이 폭발적으로 늘어납니다. 둘째, 공격자가 시도할 모든 경우를 미리 예상하는 것은 불가능합니다. 실제로 '테이블 삭제' 구문을 금지했지만, 그 문구를 직접 쓰지 않고 모델이 아는 이야기에서 조합해내게 하자 규칙이 발동하지 않았습니다.
외부에서 받은 모델을 검토하면 백도어를 찾을 수 있나요?
발표에서는 검토 절차를 모두 지켰는데도 뚫렸습니다. 파일 형식 확인, 임의 코드 실행 옵션 확인, 포함된 코드와 원본의 차이 비교까지 마쳤지만, 설정 파일이 검토한 파일이 아니라 원격의 다른 저장소를 가리키도록 매핑돼 있었기 때문입니다. 발표자들은 모델 백도어가 탐지하기는 매우 어렵고 심기는 쉬우며, 공급망 위험이 크다고 정리했습니다.
원문과 출처
이 글은 원본 영상의 자막을 바탕으로 한국어 독자를 위해 요약했습니다. 전체 맥락과 최신 정보는 원문에서 확인하세요.
YouTube 원본 영상 보기 ↗