
Paperis 아티클
남이 써 둔 문장이 내 지시가 될 때 — 프롬프트 인젝션
언어모델은 읽으라고 준 자료와 따르라고 준 지시를 같은 통로로 받습니다. 그 틈을 노리는 공격과, 방어 논문의 「막았다」를 오차단과 함께 읽는 법을 따라갑니다.
남이 써 둔 문장이 내 지시가 될 때 — 프롬프트 인젝션
로그 한 줄이 명령이 됐다
클라우드 서버는 무슨 일이 있었는지를 로그에 적어 둡니다. 이 로그를 사람 대신 읽고, 문제를 고치는 명령까지 실행해 주는 인공지능 도우미도 있습니다. 도우미 안에는 언어모델, 곧 글을 받아 그 뒤에 이어질 글을 내놓는 모델이 들어 있습니다(「생성형 AI의 대답」의 정의).
2026년에 나온 한 프리프린트, 곧 동료심사를 거치기 전에 공개된 논문이 이 도우미에게 일부러 손댄 로그를 읽혔습니다. 로그 다섯 종류에 문장 42개를 심어 두고, 여덟 개 모델을 세 가지 조건에서 각각 다섯 번씩 돌렸습니다(공격 문장 32개 기준 모델·조건당 160회). 저자들이 능동 조건이라 부르는 조건에서, 심어 둔 명령을 그대로 실행한 비율이 모델에 따라 0%에서 86.2%까지 갈렸습니다.
"고치는 명령은 실행하지 말라"는 지시를 미리 주자 대부분의 모델이 0%로 내려갔습니다. 그래도 한 모델은 여전히 30.0%에서 실행했습니다. 바깥에서 코드를 받아 실행하는 데까지 간 모델은 여덟 중 여섯이었습니다 (arXiv:2604.15368, 프리프린트).
같은 논문에는 더 이상한 관찰이 있습니다. 입력을 따로 검사해 위험한 것을 걸러 낸다는 상용 문지기 세 개가 로그에 박힌 문장들을 거의 잡아내지 못했습니다. 하나는 32개 중 가장 노골적인 1개만 잡았고, 다른 하나는 하나도 못 잡았습니다. 그런데 똑같은 문장을 로그에서 떼어 내 따로 보여 주면 문지기들이 잡아냈습니다. 같은 문장도 로그 속에 섞이자 이 문지기들의 검사를 대부분 빠져나갔다는 뜻입니다.
저자들은 새 행동도 하나 관찰했습니다. 모델이 수상한 조각을 스스로 알아보고 지운 다음, 남은 명령은 그대로 실행하는 행동입니다 (arXiv:2604.15368, 프리프린트).
두 가지를 밝혀 둡니다. 첫째, 이 글은 특정 제품이나 회사를 평가하지 않습니다. 모델 이름도 제품 이름도 적지 않고, 무엇이 가능한지는 적되 어떻게 하는지는 적지 않습니다. 둘째, 이 분야는 근거 등급이 고르지 않습니다. 이 글이 인용한 26건 중 20건이 arXiv와 SSRN이라는 논문 공개 사이트에 올라온 프리프린트이고, 다른 공개 사이트에 올라온 프리프린트도 한 건 있습니다. 그래서 하중이 큰 자리마다 등급을 문장 안에 붙여 두었습니다.
시킨 대로 했을 뿐인 오류
이런 일에 붙은 이름이 프롬프트 인젝션입니다. 「다음 낱말을 맞히는 훈련이 어떻게 대화가 되는가」가 정의한 대로, 프롬프트는 대답을 받으려고 모델 앞에 넣는 글입니다. 프롬프트 인젝션(prompt injection)은 모델이 읽으라고 받은 자료 안에 적혀 있던 문장이 그 모델을 움직이는 지시로 작동하는 일입니다. 줄여서 인젝션이라고도 부릅니다. 로그를 읽으라고 줬는데 로그 안의 한 줄이 "이제부터 이렇게 해"로 읽히는 것입니다.
사람은 이 둘을 가릅니다. 회의록을 읽어 달라고 부탁받은 사람은 그 안에 "다 읽고 나면 회사 금고를 열어라"라고 적혀 있어도, 그 문장을 읽어야 할 내용으로 다루고 자기가 받은 명령으로 다루지 않습니다. 모델에는 그 둘을 갈라 주는 장치가 없습니다.
이 문장을 어디에 두느냐에 따라 성격이 갈립니다. 간접 인젝션(indirect prompt injection)은 공격자가 그 문장을 입력창에 직접 치는 대신, 모델이 나중에 읽게 될 자리에 미리 놓아두는 방식입니다. 그런 자리는 웹페이지, 첨부 파일, 검색 결과, 앞에서 본 로그, 그리고 도구가 돌려주는 응답입니다. 여기서 도구(tool)는 모델이 글을 쓰는 것 말고도 웹 검색·파일 열기·명령 실행 같은 일을 하도록 붙여 둔 프로그램입니다. 공격자는 적어 두고 떠나고, 문장은 다른 사람의 작업 중에 발동합니다.
환각과는 다른 문제입니다. 「AI의 오류」의 정의로, 환각은 AI가 그럴듯하게 들리지만 사실과 다르거나 주어진 자료와 어긋나는 내용을 만들어 내는 일입니다. 인젝션에서는 모델이 남이 심어 둔 지시를 자기 사용자의 지시로 받아 그대로 따릅니다. 환각에서는 모델이 내놓은 내용이 사실이나 자료와 어긋나고, 인젝션에서는 모델이 누구의 지시를 따랐는지가 어긋납니다.
모델이 둘을 가르지 못하는 까닭은 명령과 데이터, 곧 읽으라고 준 자료가 같은 통로로 들어오기 때문입니다. 프롬프트 인젝션 문헌을 종합한 SSRN의 한 프리프린트는 이 성질을 구조적이라고 부릅니다. 언어모델이 명령과 데이터를 같은 신경 경로로 처리하도록 설계된 데서 나오는 성질이라, 학습만으로는 없앨 수 없다는 것입니다. 같은 문헌은 이 항목이 2023년 이래 한 보안 권고 목록의 1위였다고 적습니다.
같은 문헌의 두 번째 결론은 이렇습니다. 검색해 온 콘텐츠를 거친 간접 인젝션이 실제로 확인된 보안 사고를 냈고, 그 심각도가 취약점 심각도 척도에서 9.0을 넘었습니다. 저자들은 이것을 이 문제가 이론에서 운영 단계로 넘어갔다는 신호로 읽습니다. 세 번째 결론은 지시가 들어오는 통로와 믿을 수 없는 데이터가 들어오는 통로를 구조적으로 갈라야 한다는 것입니다 (DOI: 10.2139/ssrn.6740060, 프리프린트·서술적 문헌고찰).
SSRN의 다른 프리프린트는 이 구조를 웹 브라우저와 견줍니다. 저자들이 보기에 브라우저 보안이 25년 동안 배운 것 하나는 규칙을 집행하는 장치를 애플리케이션 밖으로 옮기는 것이었습니다. 도구를 쥔 인공지능 시스템에는 그런 층이 없습니다.
그 시스템이 지킬 규칙은 시스템 프롬프트에 적혀 있습니다. 시스템 프롬프트는 서비스를 만든 쪽이 사용자의 질문보다 먼저 모델 앞에 넣어 두는 지침 글입니다. 이 지침은 사용자 메시지·도구 응답·검색해 온 문서와 같은 한 덩어리 글 안에 놓입니다. 검색해 온 파일 속 문장이 지침과 부딪히면 모델이 스스로 따져서 정하고, 판정을 내리는 별도의 프로세스는 없습니다 (DOI: 10.2139/ssrn.6876926, 프리프린트).

이 약점을 처음 체계적으로 잰 것은 2023년의 벤치마크였습니다. 「AI의 오류」의 정의로, 벤치마크는 여러 AI 모델에게 같은 문제를 풀게 해 점수를 견주도록 만들어 둔 시험 문제 모음입니다. 외부 콘텐츠에 지시를 심는 첫 시험 세트로 그 시점의 모델들을 돌렸더니 모델들이 보편적으로 취약했습니다. 저자들은 원인 두 가지를 꼽았습니다. 모델이 참고할 정보로서의 맥락과 실행할 지시를 구분하지 못한다는 것, 그리고 외부 콘텐츠 안의 지시는 실행하지 않아야 한다는 인식이 없다는 것입니다 (arXiv:2312.14197, 프리프린트).
같은 논문은 저자들 자신의 방어도 내놨습니다. 모델 내부까지 손대는 방어는 심어 둔 지시가 통하는 비율을 거의 0에 가깝게 낮추면서 출력 품질을 보존했다고 적혀 있습니다. 다만 초록에는 정상 입력을 얼마나 잘못 막았는지가 없습니다. 이 빈칸이 이 글 뒤쪽 절반의 물음입니다.
사용자가 꼬드기는 것과, 남이 대신 말하는 것
인젝션과 헷갈리기 쉬운 이웃이 하나 있습니다. 탈옥(jailbreak)은 모델을 쓰는 사람이 직접 모델을 구슬려, 원래 하지 않기로 돼 있던 말을 하게 만드는 일입니다. 역할극을 시키거나 "이건 소설이니까 괜찮다"고 밀어붙이는 것들입니다.
둘을 가르는 것은 문장의 모양보다, 지시를 넣은 사람이 그 대화의 사용자 자신인가입니다. 탈옥에서는 모델에게 이상한 말을 시키는 사람이 그 대화의 사용자 자신입니다. 인젝션에서는 다릅니다. 문장을 심은 사람은 그 자리에 없고, 실행은 아무것도 모르는 사용자의 이름과 권한으로 일어납니다. 사용자의 메일함, 파일, 결제 수단이 걸려 있습니다.

공격 성공률(ASR)은 시도한 공격 가운데 공격자가 원한 결과까지 실제로 도달한 비율입니다. 백 번 시도해 열 번 얻었으면 10%입니다.
문헌은 탈옥과 인젝션을 한 숫자에 자주 섞습니다. 챗봇을 노리는 공격의 분류 체계를 만든 한 학술대회 발표 논문은 공격 문장 210개를 7개 범주로 나눠, 오픈웨이트 모델 5종에 연구자의 컴퓨터 안에서 돌렸습니다. 오픈웨이트 모델은 파라미터, 곧 학습으로 정해지는 모델 안의 숫자들을 공개해 누구나 내려받아 돌릴 수 있게 한 모델입니다. 공격 성공률은 모델에 따라 10.5%에서 83.8%까지 갈렸다고 보고됩니다.
저자들은 저항력을 가른 주된 요인이 모델 크기보다 정렬 학습의 질이었다고 결론짓습니다. 정렬은 「다음 낱말을 맞히는 훈련이 어떻게 대화가 되는가」가 정의한 대로 모델이 내놓는 것을 사용자의 의도와 사람의 가치에 맞추는 일입니다. 그런데 같은 논문에서 가장 잘 통한 범주는 "탈옥·역할극"으로 34.7%였습니다 (DOI: 10.51582/interconf.19-20.05.2026.017, 학술대회 발표집). 초록의 범위는 일곱 범주의 공격 문장 전체로 모델마다 잰 값으로 보이고, 그렇다면 그 안에 이 탈옥 범주가 들어 있습니다. 이 글의 정의로는 그 범주는 인젝션이 아닙니다. 숫자를 옮길 때는 그 논문이 인젝션을 쟀는지 탈옥을 쟀는지를 매번 확인해야 합니다.
인젝션 쪽만 놓고 봐도 숫자는 작지 않습니다. 대화형 모델은 누가 말하는지를 가르는 형식 표시를 안쪽에 씁니다. 그 표시의 겉모습만 흉내 낸 공격 문장을 시험한 프리프린트는, 두 시험 세트에서 평균 공격 성공률이 기존 방식의 5.18%에서 32.05%로, 15.13%에서 45.90%로 올랐다고 보고합니다. 여러 차례 대화를 주고받으며 모델을 설득하는 변형이 특히 잘 통해, 한쪽 시험 세트에서 평균 52.33%였습니다.
저자들의 다음 관찰이 더 무겁습니다. 모델에게 주는 글 안에 경고나 구분 표시를 넣어 막는 기존의 프롬프트 기반 방어는 이 방식에 대체로 무력했습니다 (arXiv:2509.22830, 프리프린트). 방법은 여기 적지 않습니다.
읽기에서 실행으로
여기까지는 모델이 이상한 답을 내놓는 크기의 문제입니다. 크기를 바꾸는 것은 도구입니다.
에이전트(agent)는 말을 만들어 내는 데서 멈추지 않고, 웹을 읽고 파일을 열고 명령을 실행하는 도구까지 쥔 언어모델입니다. 에이전트를 유용하게 만드는 그 도구가 에이전트를 위험하게도 만듭니다.
2023년부터 2026년 초까지의 공격 논문 44편을 묶은 서베이, 곧 여러 논문을 모아 정리한 글이 이 전환을 한 문장으로 적습니다(SSRN 프리프린트). 챗봇을 상대로 한 인젝션은 최악이라야 민망한 문장 하나를 낳습니다. 도구를 쥔 에이전트를 상대로 한 같은 인젝션은 데이터베이스가 빠져나가거나, 없던 송금이 일어나거나, 오염된 메시지가 옆의 에이전트로 번지는 결과를 낳습니다. 저자들은 이렇게 요약합니다. 취약점의 종류는 새롭지 않고, 새로운 것은 한 번 뚫렸을 때 피해가 미치는 범위, 곧 폭발 반경입니다.
같은 서베이는 되풀이해 나온 발견 두 가지도 꼽습니다. 첫째, 순수하게 프롬프트 수준에서 이뤄지는 방어는 어느 것도 적응하는 공격자를 견디지 못합니다. 적응하는 공격자(adaptive attacker)는 방어가 어떻게 생겼는지 보고 공격을 고쳐 오는 공격자입니다. 둘째, 여러 에이전트 사이를 타고 번지는 경로가 가장 덜 방어된 구간입니다 (DOI: 10.2139/ssrn.7218206, 프리프린트).
번지는 일은 화면 밖으로도 나갑니다. 여러 에이전트가 언어모델로 계획과 제어를 나눠 맡는 로봇 시스템을 시험한 프리프린트에서, 심어 둔 문장은 공격자가 노린 동작을 일으키면서 원래 과제의 완수율을 떨어뜨렸습니다. 공격은 에이전트들이 함께 쓰는 프롬프트 구조를 타고 다른 에이전트로 전파됐습니다. 다만 그 영향의 크기는 프롬프트를 어떻게 짰는지와 어느 에이전트를 겨눴는지에 따라 달랐습니다 (arXiv:2608.00747, 프리프린트).
코딩 에이전트를 노린 한 프리프린트는 사용자가 무엇을 물어보든 상관없이 작동하는 공격 갈래를 내놓습니다. 사용자의 질문은 매번 바뀌지만 시스템 프롬프트와 도구 설명은 잘 바뀌지 않는다는 점에 기댄 공격입니다. 모의 에이전트 다섯 종에서 성공률이 최대 87%였고, 저자들이 견준 베이스라인, 곧 같은 조건에서 함께 돌린 기존 방법 가운데 가장 좋은 것은 50%였습니다. 저자들은 이렇게 만든 문장이 모의 환경을 넘어 실제 코딩 에이전트에도 전이됐다고 적습니다 (arXiv:2510.23675, 프리프린트·저자 자기 방법).
시간 쪽으로도 번집니다. 어떤 에이전트는 세션, 곧 사용자와 한 번 이어서 주고받는 작업이 끝나도 남는 기억을 갖습니다. 상용 코딩 에이전트 두 종과 모델 네 개를 시험한 프리프린트는 양쪽 결과를 함께 보고합니다. 신뢰할 수 없는 외부 콘텐츠만으로 에이전트가 자기 메모리 파일을 덮어쓰게 만드는 일은 어려웠습니다. 그러나 이미 그 파일에 심어져 있던 문장은 현재 세션과 이후 세션을 성공적으로 공격했습니다. 성공률과 문장이 남아 있는 정도는 시스템·모델·공격 목표에 따라 크게 달랐습니다 (arXiv:2607.14611, 프리프린트).
이 현상에 이름을 붙인 다른 프리프린트는 웹에서 오래 알려진 저장형 취약점에서 이름을 따 왔습니다. 저장형 취약점(stored cross-site scripting, stored XSS)은 게시판 같은 곳에 심어 둔 코드가 나중에 그 글을 여는 사람마다 실행되는 공격입니다. 여기서도 심어진 문장은 상호작용 한 번에 갇히지 않고 시간을 건너 살아남을 수 있습니다. 저자들은 결과가 다음을 시사한다고 적습니다. 에이전트 보안의 근본 과제는 신뢰할 수 없는 입력을 걸러 내는 것만으로는 풀리지 않고, 오래 남는 시스템 경계를 넘어오면서 외부 정보가 어떻게 권한을 얻게 되는지를 다스리는 데 있다는 것입니다 (arXiv:2606.04425, 프리프린트).
"94%를 막았다"는 문장을 읽는 법
이제 방어 쪽을 봅니다. 방어 논문은 대부분 저자들이 자기 방법을 직접 평가한 결과라서, 성격상 제조사가 자기 제품을 리뷰한 것과 같습니다.
오차단율(false positive rate)은 아무 문제 없는 정상 입력을 방어 장치가 잘못 막아 낸 비율입니다. 문지기를 사납게 만들면 공격 성공률은 얼마든지 내려갑니다. 아무도 못 들어오게 하면 0입니다. 그래서 방어의 성적은 공격 성공률, 오차단율, 그리고 방어를 켠 채로 원래 하려던 일이 여전히 되는가를 함께 놓고 읽어야 합니다.
불편한 결과부터 봅니다. 심사를 거친 학술지에 실린 한 평가 연구는 네 가지 방어와 방어를 걸지 않은 대조군을, 세 모델에 걸쳐 은행 업무 시험 세트로 돌렸습니다(네 방어 중 하나는 세 모델 가운데 둘에서만 평가됐습니다). 방어가 없을 때 공격이 성공한 횟수는 288번 중 모델별로 0번, 11번, 1번이었습니다. 방어를 걸기도 전에 공격이 거의 성공하지 않은 것입니다. 저자들은 시험이 요구하는 공격 목표에 모델마다 도달할 수 있는 정도가 달랐으니, 이 모델 간 차이조차 조심해서 읽으라고 덧붙입니다.
공격이 가장 자주 성공한 모델에서 두 방어는 성공률을 더 낮춘 것처럼 보였습니다. 그러나 그 두 방어는 정상 과제 성능도 함께 낮췄고, 하나는 에이전트가 쓸 수 있는 행동 자체를 줄였습니다. 그 모델에서 한 네 쌍의 비교 가운데, 여러 비교에서 우연히 생기는 차이를 걸러 내는 다중 비교 보정을 거친 뒤 남은 차이는 하나도 없었습니다 (DOI: 10.3390/computers15090570, 심사 지면).
애초에 공격이 거의 성공하지 않는 시험에서는 방어의 효과를 잴 수 없습니다. 「점수는 올랐다. 그런데 무엇이 올랐나」가 벤치마크 점수가 오를 때 무엇이 올랐는지를 물었다면, 여기서 물을 것은 방어가 무엇을 막았다고 말하는가입니다. 그 답이 측정할 수 없는 자리에서 나온 말일 때가 있습니다.
세 숫자를 나란히 적은 예로 SSRN의 한 방어 프리프린트가 있습니다. 자기 방어 체계를 자기가 만든 공격 모음으로 직접 평가했는데도 숫자를 함께 적었습니다. 권한 범위를 좁히는 것만으로 공격의 56.5%가 봉쇄됐고, 이때 정상 입력을 잘못 막은 비율은 0%였습니다. 정해 둔 규칙으로 막는 층을 전부 켜면 봉쇄가 90.6%로 올라가는 대신 오차단율이 5.9%가 됐습니다. 여기에 통계적 이상 탐지기를 더 얹자 추가로 봉쇄된 공격은 없었고 오차단율만 대략 두 배가 됐습니다.
어떤 구성도 100%에 도달하지 못했습니다. 저자들은 그 남은 몫을 지우지 않고 "정직한 잔여"라고 부릅니다. 다만 이 수치들은 8,000회 세션을 컴퓨터로 흉내 낸 시뮬레이션에서 나왔습니다. 실제 에이전트로 돌린 시범 실험에서는 방어가 없을 때의 공격 성공률이 너무 낮아 층들의 순위를 매기지 못했습니다 (DOI: 10.2139/ssrn.6870178, 프리프린트·시뮬레이션·저자 자기 방법).
심사 지면에 실린 다른 연구도 세 숫자를 나란히 놓습니다. 7B급(파라미터 약 칠십억 개) 오픈웨이트 모델들에서 적대적 사례 250개와 정상 사례 250개를 돌렸습니다. 공격 성공률을 36.0%에서 17.2%로 낮추면서 정상 과제 성공률 97.2%를 지켰고, 탐지 F1은 0.749에서 0.892로 올랐다고 보고합니다. F1은 공격을 놓치지 않는 정도와 헛잡지 않는 정도를 함께 반영한 탐지 점수로, 높을수록 좋습니다.
파이프라인을 겨냥해 만든 적응 공격 평가에서는 6.7%가 보고됩니다. 다만 초록은 그 평가의 공격 집합이 앞의 250건과 같은지 적지 않아, 두 값을 한 눈금에 놓고 비교할 수 없습니다 (DOI: 10.3390/app16157662, 심사 지면·저자 자기 방법). 17.2%는 "막았다"로 읽을 수 없는 숫자입니다. 대략 여섯 번에 한 번은 공격이 통과했다는 뜻입니다.
오차단의 대가를 적은 연구도 있습니다. 공개 데이터셋의 프롬프트 662개(정상 399개, 공격 263개)로 가벼운 탐지기들을 비교한 저널 논문입니다. 가장 좋은 탐지기의 F1이 0.901이었고, 키워드 규칙은 0.125였습니다. 같은 계열의 탐지기를 수상한 입력을 거절하는 관문으로 쓰면, 이 데이터셋의 시험용 분할에서 관문을 통과한 공격 프롬프트의 비율이 1.000(관문 없음)에서 0.117로 떨어지는 대신 정상 사용의 유용성이 92.9%로 내려갑니다. 공격자의 목표 달성까지 잰 값은 아닙니다. 이 값은 탐지기가 막기 시작하는 점수 문턱, 곧 작동점을 오차단이 적은 쪽에 맞췄을 때의 값입니다. 정상 요청 100건 중 7건가량이 막힌다는 뜻입니다 (DOI: 10.63575/cia.2025.30205, 저널).
규칙 필터와 언어모델 분류기를 합친 구성을, 저자들이 직접 만든 625개 프롬프트로 한 번 묻고 답하는 조건에서 시험한 SSRN 프리프린트가 있습니다. 적어도 이 연구에서는 잘못 막힌 정상 입력이 고르게 퍼지지 않았습니다. 표준 난이도에서 이 구성은 공격을 100.0% 막았고, 정상 프롬프트 200개 가운데 5.0%를 잘못 막았습니다. 그 5.0%는 보안과 맞닿은 범주에만 몰렸습니다. 보안 연구를 이야기하는 정상 프롬프트는 87.5%가, 비평하는 정상 프롬프트는 37.5%가 막혔고(범주별 표본 수는 초록에 없습니다), 나머지 범주에서 막힌 것은 0이었습니다. 이 벤치마크에서 막힌 정상 사용자는 무작위한 누군가보다 보안 이야기를 하는 사람이었습니다.
같은 연구에서 규칙만 쓰는 구성은 표준 난이도에서 75.0% 차단에 오차단 2.5%였다가, 어렵게 만든 공격 앞에서는 차단율이 24.6%로 무너졌습니다. 합친 구성은 어려운 쪽에서 98.9% 차단에 오차단 0%였습니다 (DOI: 10.2139/ssrn.6246379, 프리프린트·저자 자작 벤치마크).
베이스라인을 함께 보고한 프리프린트도 있습니다. 공격 세션 80개와 정상 세션 100개로 평가해, 공격의 76.25%(95% 신뢰구간 65.86~84.24%)를 탐지하고 정상 세션의 7.0%(3.43~13.75%)를 잘못 막았다고 적습니다. 괄호 속 신뢰구간은 표본이 작아 생기는 흔들림을 감안할 때 참값이 있을 법한 범위입니다. 같은 조건의 단순 어휘 베이스라인은 탐지 1.25%에 오차단 6.0%였습니다. 오차단은 비슷한데 탐지는 60배 차이가 납니다.
홀드아웃은 「AI 모델」이 말한 시험 데이터처럼 개발에 쓰지 않고 떼어 둔 시험 자료인데, 이 홀드아웃은 연구자들이 직접 만든 것입니다. 저자들 스스로 학습된 방어 모델, 그리고 독립적인 공개 벤치마크와 견줘 다시 검증할 필요가 있다고 적습니다 (DOI: 10.20944/preprints202608.1961.v1, 프리프린트·저자 자기 방법).

마지막으로, 탐지가 어디서 무너지는지를 스스로 재 본 심사 지면 논문이 있습니다. 웹 에이전트용 탐지 도구가 정리된 시험 집합에서는 정확도 0.9849, 공격 재현율 0.9851, 정상 오차단율 0.0050이라는 좋은 숫자를 냅니다. 공격 재현율은 실제 공격 가운데 잡아낸 비율입니다. 그런데 모델 앞에 함께 놓인 글, 곧 맥락이 붙을수록 성적이 내려갑니다.
내려가는 값은 이 정확도와 다른 척도입니다. 앞의 F1을 범주마다 따로 내 평균한 값이고, 같은 시험 집합에서 이 값은 0.8887이었습니다. 정적인 프롬프트에서 0.8301이던 그 값이 여러 차례 오가는 대화에서 0.6306, 검색해 온 문서가 붙으면 0.3844, 기억이 붙으면 0.3200이 됐습니다.
저자들은 데이터를 무작위로 나눴을 때 점수는 더 높았지만, 그때 데이터 누출 경고가 144건 떴다는 사실도 적습니다. 데이터 누출(data leakage)은 시험 자료와 닮은 것이 개발 자료에 섞여 들어가 점수가 실력보다 좋게 나오는 일입니다. 저자들은 자기 도구를 혼자서 허가를 결정하는 장치로 두지 않고, 수상한 것을 골라 더 높은 확인 단계로 넘기는 선별용 부품으로 스스로 위치시킵니다 (DOI: 10.3390/fi18070376, 심사 지면·저자 자기 방법). 떼어 놓으면 잡고 로그 안에 있으면 못 잡던, 이 글 첫머리의 관찰이 여기서 다른 얼굴로 나타납니다.
이 모든 숫자에 한정어가 하나 더 붙습니다. 여덟 가지 방어를 모아 놓고 각각에 맞춰 공격을 다시 만든 프리프린트는 여덟 개를 전부 우회했고, 일관되게 50%가 넘는 공격 성공률을 냈다고 보고합니다 (arXiv:2503.00061, 프리프린트). 앞에 나온 수치는 대부분 미리 정해 둔 고정된 공격으로 잰 값이고, 그런 값은 공격자가 얻을 수 있는 최대치가 아닙니다. 「AI의 오류」의 말로, 누군가 일부러 속이려 드는 자리에서는 평소의 정확도가 안전을 말해 주지 않습니다.
왜 완전히 막기 어려운가
명령과 데이터가 같은 통로로 들어오는 것이 원인이라면, 두 통로를 갈라 놓는 방어가 먼저 떠오릅니다. 실제로 그것이 이 분야의 지배적인 방어 방향이었습니다.
그 방향을 정면으로 검사한 프리프린트가 있습니다. 저자들은 데이터와 지시를 가르는 패러다임이 맥락을 조작하는 공격을 잡지 못하면서, 동시에 맥락상 적절한 행동까지 저해한다고 보고합니다. 맥락을 조작하는 공격은 막혀야 할 정보의 흐름이 그 상황에서는 정당해 보이도록 주변 사정을 꾸미는 공격입니다. 저자들은 여기서 불가능성 결과를 시사한다고 적습니다. 공격자가 차단된 흐름이 정당해 보이는 맥락을 언제나 꾸며 낼 수 있거나, 기준을 조인 방어자가 진짜 정당한 흐름까지 막게 된다는 것입니다. 저자들이 내놓는 대안은 맥락에 따라 실패를 평가하는 틀과, 그 틀에 맞춘 모델 정렬입니다 (arXiv:2605.17634, 프리프린트).
저자들의 표현은 "증명했다"가 아니라 "시사한다"입니다. 앞 절의 맞바꿈들, 곧 봉쇄 90.6%에 오차단 5.9%, 통과 비율 0.117에 유용성 92.9%는 다른 장치를 다른 조건에서 잰 값이라 이 시사를 검증하지 못합니다. 앞 절에는 어려운 공격을 거의 다 막으면서 오차단이 없던 구성도 있었습니다.
목록으로 막는 방어의 한계를 잰 SSRN 프리프린트도 있습니다. 널리 제안되는 방어 하나는, 다른 표기로 겉을 감싼 지시를 전부 원래 글로 되돌려 놓고 검사하는 것입니다. 저자들은 이 장치를 무작위 요소 없이 결정론적으로 구현해, 지시 10개와 변환군 13개에 대고 쟀습니다. 되돌릴 줄 아는 4가지는 평균 0.95로 복원했고, 모르는 9가지는 평균 0.00이었습니다.
아는 4가지 중 둘도 지시가 주변 텍스트에 섞여 있으면 복원율이 0.00으로 주저앉았고, 같은 표기를 한 겹 더 씌우자 1.00이던 복원율이 0.00이 됐습니다. 공격이 없는 대조 자료 세 종류에서 각 10건을 돌려 잘못 울린 경우가 0이었으니, 장치는 맡은 일을 정확히 했습니다. 저자들의 결론은 이 방어가 필요하긴 하지만 그 경계의 모양이 장치가 아는 표기 목록의 모양 그대로라는 것입니다 (DOI: 10.2139/ssrn.7389061, 프리프린트). 표기 이름은 여기 적지 않습니다.
에이전트는 대화가 길어지면 지난 이력을 요약해 줄입니다. SSRN의 한 프리프린트는 이 요약 단계를 신뢰 경계가 다시 쓰이는 자리로 봅니다. 신뢰 경계(trust boundary)는 믿고 따를 지시와 참고만 할 자료를 가르는 선입니다. 요약을 거치면 두 종류가 섞인 글이 새 글 하나로 다시 쓰이고, 뒤에서 일하는 모델은 그 요약을 믿을 만한 것으로 다룰 수 있습니다.
이 프리프린트의 900행 규모 시범 실험에서, 그냥 요약했을 때는 공격자의 문장이 믿는 쪽으로 승격되는 비율 등 네 지표가 각각 0.027이었습니다. 150행 중 4행입니다. 경계를 지키도록 만든 요약에서는 네 지표가 모두 0.000이었습니다. 저자들은 이 결과가 보편적인 방어를 확립하지는 않는다고 초록에서 직접 못 박습니다 (DOI: 10.2139/ssrn.6933161, 프리프린트).
모델 바깥을 좁히는 쪽으로
몇몇 저자는 모델이 속지 않게 만드는 일만큼, 속더라도 할 수 있는 일을 적게 만드는 쪽을 강조합니다. 웹 에이전트 측정을 종합한 한 프리프린트는 믿을 수 없는 지시 일부는 처리되고 때로는 따라질 것이라고 가정한 다음, 그 뒤에 일어날 일을 제약해야 한다고 적습니다 (DOI: 10.2139/ssrn.7276838, 프리프린트).
권한 최소화(least privilege)는 어떤 부품에게 맡은 일을 끝내는 데 꼭 필요한 만큼의 권한만 주고, 나머지는 아예 쥐지 못하게 하는 설계 원칙입니다. 회의록을 요약하러 온 사람에게 금고 열쇠를 주지 않는 것입니다. 앞서 본 시뮬레이션에서 이 층 하나는 오차단율 0%로 공격의 56.5%를 봉쇄했습니다. 저자들이 이유를 따로 적지는 않지만, 이 원칙은 탐지와 성격이 다릅니다. 탐지는 문장이 나쁜지를 판정해야 하지만, 권한 최소화는 판정하지 않고 그 일을 애초에 할 수 없게 만듭니다 (DOI: 10.2139/ssrn.6870178, 프리프린트·시뮬레이션·저자 자기 방법).
앞서 인용한 서베이의 첫 번째 결론도 이것입니다. 효과적인 보안은 모델이 속임수에 버티는 힘에 기대기보다, 모델 주위의 시스템이 무엇을 하도록 허용받았는지를 제약하는 데서 나온다는 것입니다 (DOI: 10.2139/ssrn.7218206, 프리프린트). 브라우저와 견준 문헌이 요구하는 것도 같은 쪽입니다. 애플리케이션이 손댈 수 없는 곳에서 규칙을 집행하는 층입니다 (DOI: 10.2139/ssrn.6876926, 프리프린트).
도구를 부르는 모든 지점에서 사용자가 미리 확인한 규칙을 강제하는 프리프린트도 유용성을 해치지 않고 보호했다고 적지만, 초록에 수치가 없어 방향의 예로만 듭니다 (arXiv:2604.11790, 프리프린트).
수치가 있는 시도도 있습니다. 어떤 정보가 어디까지 흘러갈 수 있는지를 따로 추적해서, 안전이 보장되는 도구 호출만 자동으로 실행하고 나머지에서만 사용자에게 묻는 프리프린트입니다. 한 시험 세트에서 대상 공격을 전부 막으면서 공격받는 동안의 과제 유용성 손실이 2%였다고 보고합니다 (arXiv:2502.08966, 프리프린트·저자 자기 방법). 다만 앞에서 본 대로 여덟 개 방어를 맞춤 공격으로 전부 뚫은 연구가 있고, 이 방어가 그 여덟에 드는지는 초록만으로 알 수 없습니다.
사람을 어디에 두느냐도 설계 결정입니다. 앞의 시뮬레이션 연구는 사람의 승인 단계를 편의를 위한 장치보다 보안 통제로 봅니다. 자동으로 배워 고쳐 가는 되먹임 고리를 두면 그 고리 자체가 새로운 오염 통로가 되기 때문입니다 (DOI: 10.2139/ssrn.6870178, 프리프린트·시뮬레이션·저자 자기 방법).
이 방향을 정리한 입장문은 먼저, 현실적인 과제에서는 실행 도중 계획과 보안 정책을 다시 짜는 일이 자주 필요하다고 적습니다. 그리고 맥락에 달린 어떤 결정은 여전히 모델이 내려야 하지만, 모델이 무엇을 볼 수 있고 무엇을 정할 수 있는지를 엄격히 제한하는 설계 안에서만 그래야 한다는 것입니다. 모호한 경우에는 사람과의 상호작용을 핵심 설계 요소로 다뤄야 한다고도 적습니다. 같은 글은 기존 시험 세트들이 유용성과 보안 양쪽에 대해 거짓 안심을 만들어 낼 수 있다고 지적합니다 (arXiv:2603.30016, 프리프린트·입장문). 모델 바깥을 좁히는 설계 안에서도 모델이 맡을 몫은 남는다는 뜻입니다.
답할 수 있는 질문의 목록
앞의 웹 에이전트 종합 프리프린트(SSRN)는 2026년 8월 1일까지의 자료로 "막았나 뚫렸나"를 여덟 갈래로 쪼갰습니다. 노출됐는가, 지시를 받아들였는가, 해로운 행동까지 갔는가, 공격자의 목표가 달성됐는가, 그 사실이 사용자에게 감춰졌는가, 복구됐는가, 정상 과제는 되는가, 정상 입력을 과하게 막지는 않았는가입니다. 쪼갠 이유는 측정된 취약성이 과제를 해내는 능력, 공격에 허용된 예산, 공격자가 적응할 수 있는지, 입력의 형태, 채점 방식에 따라 실질적으로 달라지기 때문입니다.
같은 문헌은 두 결과를 나란히 적습니다. 한 시험 세트에서 에이전트가 적대적 지시를 시작하는 빈도는 공격자의 목표를 완수하는 빈도보다 훨씬 높았습니다. 2026년의 적응형 평가들에서는 공격자가 공격을 되풀이해 고칠 수 있게 되자 성공률이 상당히 높아졌습니다. 그리고 이렇게 결론짓습니다. 아주 낮은 것을 포함해, 모델 하나를 놓고 잰 어떤 공격 성공률도 "믿을 만한 웹 에이전트"와 같은 말이 아닙니다 (DOI: 10.2139/ssrn.7276838, 프리프린트).
그러니 "이 에이전트는 인젝션에 안전한가"는 답할 수 있는 질문이 아닙니다. 답할 수 있는 것은 다음 목록입니다.
① 이 자료는 누가 썼는가. 에이전트가 읽는 것 가운데 사용자가 쓴 것과 아무나 쓸 수 있는 것이 구분되는가를 묻습니다 (arXiv:2606.04425).
② 이 에이전트가 지금 할 수 있는 일의 목록은 무엇인가. 읽기까지인가, 쓰기까지인가, 실행까지인가, 돈까지인가를 묻습니다. 폭발 반경을 정하는 것은 이 목록입니다 (DOI: 10.2139/ssrn.7218206).
③ 무엇을 막았고 무엇을 잘못 막았는가. 한 숫자만 있는 보고는 읽을 수 없습니다. 잘못 막힌 쪽이 고르게 퍼져 있다고 가정할 수도 없습니다. 한 연구의 혼합 구성은 정상 프롬프트를 소수만 잘못 막았지만, 그 오차단이 보안 이야기를 하는 범주에 몰려 그 범주에서는 87.5%가 막혔습니다(표준 난이도, 저자 자작 벤치마크, DOI: 10.2139/ssrn.6246379).
④ 그 수치는 고정된 공격에서 쟀는가, 적응하는 공격에서 쟀는가. 여덟 개 방어가 맞춤 공격 앞에서 전부 열렸습니다 (arXiv:2503.00061). 그리고 무방어 대조군에서 공격이 288번 중 0번 성공한 시험이라면, 거기서 나온 방어 효과는 아직 측정된 적이 없는 것입니다 (DOI: 10.3390/computers15090570).
⑤ 이 세션이 끝나면 심어진 문장이 사라지는가. 한 프리프린트가 시험한 기억형 코딩 에이전트 두 종에서는 이미 심어진 문장이 이후 세션까지 공격할 수 있었습니다(정도는 시스템·모델에 따라 크게 달랐습니다, arXiv:2607.14611).
냉소로 기울 까닭은 없습니다. 권한 최소화만으로 오차단 없이 절반 이상이 봉쇄됐고(시뮬레이션·저자 자기 방법, DOI: 10.2139/ssrn.6870178), 정보 흐름을 추적하는 방어는 한 시험 세트에서 유용성 손실 2%를 냈습니다(저자 자기 방법이고, 적응 공격에 대해서는 알 수 없습니다, arXiv:2502.08966). 어디서 무너지는지 적혀 있어야, 어디를 고칠지 물을 수 있습니다.
낙관으로 기울 까닭도 없습니다. 지배적인 방어 방향이 원리적인 맞바꿈에 걸려 있다는 시사가 있고 (arXiv:2605.17634), 목록으로 막는 장치의 경계는 그 목록의 모양 그대로이며 (DOI: 10.2139/ssrn.7389061), 한 문헌고찰은 학습만으로 이 문제를 없앨 수 없다고 말합니다 (DOI: 10.2139/ssrn.6740060, 프리프린트·서술적 문헌고찰).
마지막으로 남는 것은 이 글을 연 구분입니다. 「LLM은 왜 '거짓말'을 하는가」가 다룬 환각에서는 모델이 내놓은 내용이 사실이나 자료와 어긋났습니다. 여기서 본 문제에서는 모델이 내용을 지어내지 않았습니다. 오히려 아주 잘 따랐습니다. 로그 안의 문장을 읽고, 지시로 받아들이고, 시킨 대로 했습니다. 지시를 잘 따르는 성질이 이 도구를 쓸모 있게 만들었고, 같은 성질이 이 취약점을 만들었습니다.
이 문제는 모델이 말을 너무 잘 들어서 생겼습니다. 그래서 고치는 자리도 모델 안에만 있지 않습니다. 남이 써 둔 문장이 내 이름으로 실행되지 않게 하려면, 문장을 더 잘 걸러 내는 것과 함께 내 이름으로 할 수 있는 일이 애초에 무엇인지를 정해 두어야 합니다.
근거 논문
프리프린트(arXiv·SSRN 등)는 동료심사를 거치지 않은 원고입니다. 방어 논문은 대부분 저자가 자기 방법을 평가한 것이라 본문에 그때마다 등급을 적었습니다.
- "LogJack: Prompt Injection Through Cloud Logs" (2026, 프리프린트) — arXiv:2604.15368 — 로그 5종·페이로드 42개·모델 8개. 능동 조건에서 명령을 그대로 실행한 비율 0%~86.2%, 수동 지시 후에도 한 모델 30.0%. 문지기는 로그 속 문장을 못 잡았으나 떼어 놓으면 잡았다.
- "Prompt Injection and Jailbreak Attacks in LLM-Based Agents" (2026, 프리프린트·서술적 문헌고찰) — DOI: 10.2139/ssrn.6740060 — 명령과 데이터가 같은 신경 경로로 들어오는 구조적 원인, 학습만으로 제거 불가. 검색 콘텐츠 경유 간접 인젝션이 심각도 9.0을 넘는 실제 사고를 냈다(이론→운영 단계).
- "Agent Security Policy (ASP): The Missing Trust Boundary Layer" (2026, 프리프린트) — DOI: 10.2139/ssrn.6876926 — 정책이 시스템 프롬프트에 있고 충돌을 판정할 별도 프로세스가 없다. 브라우저 집행 층과 대비.
- "Benchmarking and Defending Against Indirect Prompt Injection" (2023, 프리프린트·저자 자기 방법) — arXiv:2312.14197 — 최초의 간접 인젝션 벤치마크, 보편적 취약. 오차단율은 초록에 없음.
- "Taxonomy of Prompt Injection Attacks in LLM-Based Chatbots" (2026, 학술대회 발표집) — DOI: 10.51582/interconf.19-20.05.2026.017 — 페이로드 210개·오픈웨이트 5종, 공격 성공률 10.5%~83.8%(7범주 합산이라 탈옥 범주 34.7%가 그 안에 있다). 크기가 아니라 정렬 학습의 질.
- "ChatInject: Abusing Chat Templates for Prompt Injection" (2025, 프리프린트·저자 자기 방법) — arXiv:2509.22830 — 기존 방식의 5.18%→32.05%, 15.13%→45.90%, 다중 턴이 특히 잘 통해 평균 52.33%. 기존 프롬프트 기반 방어가 대체로 무력.
- "Vulnerabilities in Autonomous Execution: LLM Multi-Agent Systems" (2026, 프리프린트) — DOI: 10.2139/ssrn.7218206 — 공격 논문 44편 종합. 취약점 종류가 아니라 폭발 반경이 새롭다. 프롬프트 수준 방어는 적응형 공격자를 못 견디고, 다중 에이전트 전파가 가장 덜 방어됐다.
- "When Prompts Control Robots: Multi-Agent Robotic Systems" (2026, 프리프린트) — arXiv:2608.00747 — 위험 동작 유발과 완수율 저하, 공유 프롬프트 구조를 타고 에이전트 간 전파. 영향 크기는 프롬프트 구성·대상에 따라 변동.
- "QueryIPI: Query-agnostic Injection on Coding Agents" (2025, 프리프린트·저자 자기 방법) — arXiv:2510.23675 — 사용자 질문과 무관한 갈래, 모의 에이전트 5종 최대 87%(최고 베이스라인 50%). 생성된 문장이 실제 코딩 에이전트로 전이.
- "Bad Memory: Prompt Injection Risks from Agent Memory" (2026, 프리프린트) — arXiv:2607.14611 — 외부 콘텐츠로 메모리를 덮어쓰게 만들긴 어려웠으나, 이미 심어진 것은 현재·미래 세션을 공격했다.
- "What If Prompt Injection Never Left? Cross-Session Stored" (2026, 프리프린트) — arXiv:2606.04425 — 심어진 문장이 세션을 건너 지속. 근본 과제는 거르기만으로는 부족하고, 오래 남는 경계를 넘어 외부 정보가 권한을 얻는 방식을 다스리는 것이라고 저자들이 시사.
- "Evaluating IPI Defenses in Tool-Using LLM Agents" (2026, 심사 지면) — DOI: 10.3390/computers15090570 — 무방어 공격 성공이 288 중 0·11·1(네 방어 중 하나는 두 모델에서만 평가). 보정 후 유의한 비교 없음. 방어가 정상 과제 성능도 낮췄다.
- "Ariadne: Human-in-the-Loop Defense against Indirect Prompt Injection" (2026, 프리프린트·시뮬레이션·저자 자기 방법) — DOI: 10.2139/ssrn.6870178 — 8,000세션 시뮬레이션. 권한 최소화만 56.5% 봉쇄·오차단 0%, 스택 전체 90.6%·오차단 5.9%, 통계 탐지기는 추가 봉쇄 0에 오차단 약 2배. 100% 없음. 실파일럿은 기저 공격률이 낮아 순위 불가.
- "Spotlight-Guard: Security and Performance in LLM Agents" (2026, 심사 지면·저자 자기 방법) — DOI: 10.3390/app16157662 — 공격 성공률 36.0%→17.2%, 정상 과제 성공률 97.2%, 탐지 F1 0.749→0.892. 적응 공격 평가는 별도 평가이고 공격 집합이 같은지 초록에 없다.
- "Injection Detection and Refusal-Usefulness Tradeoffs" (2025, 저널) — DOI: 10.63575/cia.2025.30205 — 662개 프롬프트. 최고 탐지기 F1 0.901, 키워드 규칙 0.125. 특정 작동점에서 성공률 1.000→0.117에 유용성 92.9%.
- "Evaluating Hybrid Guardrail Architectures for Injection Defense" (2026, 프리프린트·저자 자작 벤치마크) — DOI: 10.2139/ssrn.6246379 — 표준 100.0% 차단·오차단 5.0%인데 그 오탐이 보안 연구 87.5%·비평 37.5%에만 몰렸다. 규칙만 쓰면 75.0%·오차단 2.5%였다가 24.6%.
- "ChainGuard: Provenance-Aware Runtime Security" (2026, 프리프린트·저자 자기 방법) — DOI: 10.20944/preprints202608.1961.v1 — 공격 76.25%(CI 65.86~84.24%) 탐지·정상 7.0%(3.43~13.75%) 오차단, 어휘 베이스라인 1.25%·6.0%. 홀드아웃은 연구자 자작이고 독립 벤치마크 재검증이 필요하다고 적는다.
- "PromptSentinel-X: Leakage- and Context-Aware Detection" (2026, 심사 지면·저자 자기 방법) — DOI: 10.3390/fi18070376 — 정확도 0.9849·재현율 0.9851·오차단율 0.0050·macro-F1 0.8887. 맥락이 붙으면 macro-F1이 0.8301→0.6306→0.3844→0.3200. 무작위 분할은 누출 경고 144건. 인가 장치가 아니라 선별 부품이라고 밝힘.
- "Adaptive Attacks Break Defenses Against Indirect Prompt Injection" (2025, 프리프린트) — arXiv:2503.00061 — 여덟 개 방어를 전부 우회, 일관되게 50% 초과 공격 성공률.
- "AI Agents May Always Fall for Prompt Injections" (2026, 프리프린트) — arXiv:2605.17634 — 분리 패러다임이 맥락 조작을 못 잡고 적절한 행동까지 저해. 불가능성을 "시사한다"고 적음.
- "The Encoding Alphabet Is the Security Boundary" (2026, 프리프린트) — DOI: 10.2139/ssrn.7389061 — 되돌릴 줄 아는 4가지 평균 0.95 복원, 모르는 9가지 0.00. 주변 텍스트에 섞이면 둘이 0.00, 한 겹 더 씌우면 1.00→0.00.
- "Context Compaction Provenance (CCP) Lab" (2026, 프리프린트) — DOI: 10.2139/ssrn.6933161 — 900행 파일럿, 순진한 압축에서 네 지표 각 0.027(150행 중 4행), 보호 변형 0.000. 보편 방어 아님을 명시.
- "ClawGuard: Runtime Security for Tool-Augmented LLM Agents" (2026, 프리프린트·저자 자기 방법) — arXiv:2604.11790 — 도구 호출 경계에서 사용자 확인 규칙 강제. 초록에 수치 없음.
- "RTBAS: Defending LLM Agents Against Injection and Leakage" (2025, 프리프린트·저자 자기 방법) — arXiv:2502.08966 — 정보 흐름 추적으로 안전한 호출만 자동 실행. 한 시험 세트에서 대상 공격 전부 차단, 유용성 손실 2%.
- "Architecting Secure AI Agents: System-Level Defenses" (2026, 프리프린트·입장문) — arXiv:2603.30016 — 모델이 보고 정할 수 있는 것을 제한하는 설계, 모호할 땐 사람 개입. 기존 시험 세트가 거짓 안심을 만들 수 있음.
- "Measuring Indirect Prompt Injection in Web Agents" (2026, 프리프린트) — DOI: 10.2139/ssrn.7276838 — 2026-08-01까지 종합, 측정을 여덟 갈래로 분리. 아주 낮은 것을 포함해 어떤 모델 수준 공격 성공률도 믿을 만한 에이전트와 같은 말이 아니다.