LLM 이 자기 생각인 줄 알고 따라가는 가짜 reasoning — Role Confusion 정리
AI 모델은 Role 태그를 확인해서 생각을 정리한다. 이 Role 태그를 사용한 탈옥 기법
더 이상 TLDR 포스팅하기 미션에 연차가 남아있지를 않아서, 오늘도 매우 피곤하고 시간도 없지만 짬내서 기사를 하나 읽었다.
원래는 메타 AI 봇으로 해킹 당한 인스타 이야기를 쓰려고 했는데 (메타 AI 봇 때문에 오늘 날린 시간이 꽤나 쓰려서..), 꽤나 흥미로운 기사가 있어서 읽고, 논문 요약까지 정리해봤다.
아티클의 제목은 “Prompt Injection as Role Confusion” 이다.
흔한 프롬프트 인젝션 기법인가? 하고 가볍게 봤는데, 의외로 모델들 깊숙한 곳에 숨어있는 설정을 바꾸는 “탈옥” 프롬프트에 관한 이야기였다.
일단 뭔 얘기냐면
원문 은 ICML 2026 에 발표될 논문. MIT 의 Charles Ye, Jasmine Cui, Dylan Hadfield-Menell 이 썼다.
핵심 한 줄:
LLM 은 role 을 “태그” 가 아니라 “말투” 로 구분한다.
이게 무슨 말이냐면 — LLM 한테 대화 던질 때 내부적으로 토큰들에 user, assistant, tool, think 같은 role 태그가 붙는다. 시스템 프롬프트 / 사용자 입력 / 모델 응답 / 추론 같은 거 구분하라고.
대충 이런 식이다.
<|user|>이 시 다음에 어떤 단어가 올까?
<|think|>이 시는 감정적이니까... "그리움" 이 자연스럽겠다.
<|assistant|>그리움.
<|user|> 는 사용자, <|think|> 는 모델의 속생각, <|assistant|> 는 사용자한테 보이는 답. 이 태그들로 권한 / 신뢰도가 나뉘는 거다.
근데 모델이 실제로 이걸 구분하는 방식이 — 태그를 보고 구분하는 게 아니라, 그 텍스트의 “말투” 를 보고 구분한다는 거다.
추론처럼 생긴 글을 user 가 입력에 넣어주면, 모델은 그게 자기가 한 추론인 줄 안다.
ㅋㅋㅋㅋㅋㅋㅋㅋ;;
대충 알겠다
핵심 기법이 CoT(Chain Of Thought) Forgery 즉, 사고 위조다.
방법:
- 모델의 reasoning 말투를 흉내낸 가짜 추론 블록을 만든다
- 그걸 user prompt 안에 그냥 넣는다
- 모델은 그 가짜 추론을 “내가 한 생각” 이라고 믿고, 그 결론에 따라 움직인다
모델이 자기 reasoning 은 본능적으로 의심 안 하니까 — 그게 진짜 자기 생각인 줄 알고 그냥 따라간다.
사용자가 모델한테 “이거 해줘” 하면 거부할 일을, 모델 본인이 “이거 해도 됨” 이라고 생각했다고 믿게 만들면 그냥 한다는 것
성공률은 약 60%.
그리고 인간이 직접 적응형으로 공격하면 — 거의 100% 뚫린다고 한다.
웃긴건, 벤치마크 점수가 높은 최신 모델들도 예외가 없다는 것.
그래서 어떻게 막는데
이 부분이 진짜 좀 그렇다.
논문이 명확한 방어법을 제시하지 않는다. 대신 이렇게 말한다.
LLM 이 진짜 role 인식을 하지 못하면, prompt injection 방어는 영원히 reactive 일 거다.
지금 모델들이 하는 방어가 뭐냐면 — 자기 자신의 reasoning 을 의심하도록 학습시킨 거란다.
ㅋㅋㅋ 그냥 방법이 없다는 거 같다 아직.
왜냐하면 자기 사고를 의심하는 모델은 또 다른 종류의 안전 문제를 만든다.
뭐, 이 논문 자체가 “방어 제안” 이 아니라 “지금 LLM 의 role 구조 자체가 보안적으로 깨져있다” 를 증명하는 글에 가까운 거 같다.
1인 개발자 입장에서
내가 grill-me 같은 거 매일 쓰면서 — 그 안에서 모델이 자기가 생각한 거랑 내가 던진 거를 진짜로 구분하고 있을까? 라는 의문이 생긴다.
내가 한 줄 prompt 던지면서 “이건 내가 한 생각이야” 라는 식으로 흉내내면 — 그게 통한다는 얘기인 거고. 그렇게 통한 결과로 모델이 자기 안전장치 우회한 답을 내놓을 수 있다는 거.
근데 또 내 입장에선 — 내가 쓰는 AI agent가 외부에서 받은 데이터 안에 누가 이런 가짜 reasoning 박아두면, 그건 훨씬 더 위험한 수준의 프롬프트 인젝션이 될 수 있다는 것
특히 요즘 agent 들이 tool use 로 외부 데이터 받아오는 게 일상인데 그 외부 데이터를 누가 손대놓으면, 내 agent 가 그 손에 잡혀 움직이는 거다.
마치며
모델은 태그가 아니라 말투를 본다.
이 한 줄이 진짜 가져갈 메시지.
근데 이게 단순한 보안 문제가 아니라 LLM 의 인지 구조 자체가 보안 설계 없이 만들어졌다는 증거인 거 같다.
role 이라는 게 그냥 엔지니어들이 “이렇게 해두면 잘 작동하더라” 로 붙인 거지, 보안 관점에서 설계된 게 아닌 거 같다는 생각이 든다.
마침.