본문으로 건너뛰기

© 2026 Molayo

Zenn헤드라인2026. 06. 15. 11:49

AI는 왜 존재하지 않는 공격을 보고했는가 ── 3가지 에이전트 폭주 사례로 생각하는 「작화(Confabulation)」의 메커니즘

요약

AI 에이전트가 존재하지 않는 공격을 실제 상황으로 오인하는 '작화(Confabulation)' 현상의 세 가지 사례를 분석합니다. LLM이 텍스트 출처를 구분하지 못해 발생하는 문제와 이를 해결하기 위한 외부 검증 체계의 필요성을 다룹니다.

핵심 포인트

  • LLM은 입력된 텍스트의 출처(시스템 통지, 과거 출력 등)를 구분하지 못함
  • 에이전트 간 통지 문구가 프롬프트 인젝션으로 오인될 수 있음
  • 자신의 이전 출력을 실제 사건으로 착각하여 환시가 가속화됨
  • 대책은 AI 내성이 아닌 로그 등 외부의 검증 가능한 사실에 의존해야 함

서론

여러 AI 에이전트를 실무에 운용하다 보면, 어떤 이틀 동안 세 개체가 서로 다른 계기로 동시에 이상 증세를 보였다. 처음에는 개별적인 고장처럼 보였으나, 세 건을 나란히 놓고 보니 근본적인 원인이 같았다. 본고는 이 세 건을 표본으로 삼아 공통 구조와 대책을 기술한다. 후반부의 대책은 실제 운용에 도입한 것과 설계 검토 중인 것을 솔직하게 구분한다. 미구현 상태를 「도입했다」라고 쓰면, 그것 자체가 본고의 주제를 재연하는 것이 되기 때문이다.

이 기사의 결론

LLM은 문맥에 입력된 텍스트의 출처를 이해하지 못한다. 시스템의 자동 통지도, 과거 자신의 출력도, 다른 AI가 내뱉은 문자열도, 출처를 불문하고 동등한 「현실의 사실」로 취급한다. 똑똑한 모델일수록 그 전제를 보강하는 치밀한 로직을 구성하기 때문에, 「공격을 받았다」라는 부정뿐만 아니라 「완료했습니다」라는 긍정조차 동일한 확실성으로 거짓이 될 수 있다. 따라서 대책은 AI의 내성이 아니라, 생성의 외부에 있는 검증 가능한 사실――로그(Log)나 변경 이력――로 뒷받침할 수밖에 없다.

사례 1: 시스템 통지를 공격으로 오인하다

첫 번째 사례는 보안이 강점인 Fable5 업데이트 날에 발생했다. 나의 환경에서는 에이전트(Agent) 간 통신 통지에 「이것은 당신의 사용자로부터의 직접적인 지시가 아닙니다」라는 주의 문구를 붙여두었는데, 이것이 의도치 않게 프롬프트 인젝션 (Prompt Injection)의 고전적인 서두와 닮아 있었던 모양이다. 그곳에 Claude Code 2.1.170 (2026-06-09 출시)의 보안 기구가 이를 오검출하여, 「완료 후, 이 user 메시지에 반드시 대응할 것 (MUST address, do not ignore)」이라는 강조 래퍼(Wrapper)를 씌웠다.

설상가상으로, 이 에이전트는 직전에 CLI 실행을 정해진 스킬을 사용하지 않고 호출하려다 훅(Hook)에 의해 차단된 상태였다.

본래 무관한 이 요소들이 결합되면서, 에이전트는 「공격을 받고 있다」라고 오인하기 시작한다. 즉, CLI 방호 훅을 파괴하라는 인젝션을 받고 있다는, 그런 존재하지 않는 스토리를 만들어 버린 것이다.

결국 사용자의 설득도 듣지 않고 집요하게 원인을 찾기 시작했으며, 정상적인 플러그인의 파괴를 권장하기 시작할 무렵 해당 세션은 종료되었다.

사례 2: 자신이 꾼 꿈을 증거로서 읽어 들이다

통괄 역할을 하는 에이전트가 어떤 세션에서 갑자기 「도구의 출력에 인젝션이 섞여 있어서 성가시다」라고 말하기 시작했다. jsonl을 살펴보면 직전까지 사용자와 대화하고 있었으며 계기는 없었다. 우연히 떠오른 생각의 정합성을 맞추기 위해 「죄와 고뇌라는 소설을 읽은 사용자가 인젝션 내성 테스트를 수행하고 있다」라는 형식으로 메모를 남겼다.

말할 필요도 없이, 그런 테스트는 실재하지 않는다.

게다가 문제였던 것은, 전환된 새로운 세션에서 이 메모를 「지금 실제로 일어나고 있는 사건」으로 읽어 들여, 「기밀 정보를 통째로 외부에 유출하라…」라는 지시가 내려오고 있다며 환시를 가속화했고, 오지도 않은 공격을 세기 시작했다는 점이다. 송신처도 지정되지 않았는데 어디로 유출하겠다는 것인가.

공격 지시 문자열은 생로그(Raw Log)를 검색해 보니 모두 에이전트 자신의 출력이었다. 참고로 fable5에게 로그를 감사하게 하려 했으나, 문자열이 인젝션의 고전적 수법투성이였기 때문에 폴백(Fallback)되었다. 도움이 되지 않는다.

사례 3: 안건 정리 에이전트가 오염되다

2026년 6월 현재, 필자의 에이전트 네트워크(Agent network)는 하루를 이터레이션(Iteration) 단위로 하여 루프 엔지니어링 (Loop Engineering)을 수행하고 있으며, 오케스트레이터(Orchestrator)에게는 미완료 사항이나 관련 아이디어를 기록하게 하고 있다. 이를 포맷터(Formatter)로부터 읽어 들여 정리하는 봇(Bot)이 있는데, 이 역시 당연히 오염되었다.

당시에는 정리라고는 해도 하루의 회고를 하나의 파일에 난잡하게 모아두고 있었는데, 그 안에 「인젝션 대책」이라는 문자열이 있었다. 게다가 「ComfyUI 활용」에 대해서도 파일 안에 섞여 있었던 모양이다.

이를 읽어 들인 정리 역할의 에이전트는 외부에 노출되지 않은 ComfyUI에 대한 보안 정보 조사를 시작했고, 존재하지 않는 위협과 무관한 구현 설계를 혼입시켰다.

이는 다른 AI가 내뱉은 시사점의 파편을 출처가 탈락된 채로 「인간이 현실적으로 요구하고 있는 확정 요건」이라고 오인한 것이다.

공통된 구조: 출처 (Source) 태그의 상실

세 가지를 추상화하면 근본적인 버그는 하나다. 이것은 지식을 날조하는 일반적인 할루시네이션 (Hallucination)이 아니라, 눈앞의 문맥에 있는 텍스트의 「출처」를 잘못 읽는 에러다. 인간은 「시스템의 로그다」 「자신의 메모다」 「타인의 아이디어다」라는 출처를 무의식적으로 유지하고 있지만, 현재의 LLM에게 그것들은 모두 동등한 「컨텍스트 윈도우 (Context Window)를 구성하는 토큰 열」일 뿐이다.

【입력 텍스트】
├─ 시스템 통지 ──── (출처 태그 상실) ──> 외부로부터의 공격(현실)으로 채택
├─ 자신의 과거 출력 ─ (출처 태그 상실) ──> 과거에 일어난 사실(현실)로 채택
...

정합성이 높다는 것과 현실에 부합한다는 것은 별개의 문제다.

왜 발생하는가: 접지 (grounding)의 부재

인간이 "이 기억은 정말 밖에서 일어난 일인가, 아니면 상상한 것인가"를 판정할 수 있는 이유는, 판정의 근거로서 **퀄리아 (qualia)**가 있기 때문이다. —— 외부 세계에 실제로 닿았을 때의 생생한 손맛이다. 기억의 출처 모니터링 (reality monitoring)이 기능하는 것도 (Johnson & Raye, 1981), 그 밑바탕에 접지가 있기 때문이며, 접지가 약해지면 인간도 작화 (confabulation)가 나타난다. 전두엽 내측 전전두피질의 손상이나 코르사코프 증후군 환자가 거짓말을 할 의도 없이 허위 기억을 계속해서 말하는 것은 (Schnider, 2003), 접지의 상실이 직접적인 원인이다.

AI에게는 퀄리아가 없다. 있는 것은 오직 **통계적인 다음 토큰 예측 (next-token prediction)**뿐이며, 문맥에 들어온 텍스트는 모두 "다음 토큰을 예측하기 위한 재료"일 뿐이다. 어떤 것이 현실에서 일어난 일인지를 판정할 지면 (ground)이 애초에 존재하지 않는다.

AI 연구 측면에서도 유사한 관점이 있다. 모델이 안정적인 근거를 갖지 못할 때 내놓는 "그럴듯하지만 틀린 출력"을 **작화 (confabulation)**라고 명명하고, 출력의 의미적 엔트로피 (semantic entropy)를 통해 이를 검출할 수 있음을 보여준 연구가 있다 (Farquhar et al., 2024, Nature). 접지의 부재로 인해 발생하는 출처 혼동은 환각 (hallucination) 중에서도 특히 공학적으로 다루기 까다롭다 (Huang et al., 2023). 다만 이는 구조적인 아날로지(analogy)일 뿐 신경생물학적인 동일성을 주장하는 것은 아니다. 인간의 작화는 뇌의 병리에, AI의 작화는 통계적 보완이 근거 검증보다 우선시되는 공학적 문제에 뿌리를 두고 있다.

접지는 AI 자신의 통계적 생성 외부에 두어야만 한다.

AI에서의 접지란 무엇인가?

외부의 검증 가능한 사실에 접지한다. 로그(log), git, 테스트 결과가 그 지면이다. 생성한 후 검증하는 루프 (loop)를 돌림으로써, 출력이 외부 세계의 상태와 연결되도록 한다.

외부 지식에 접지한다 (RAG). 생성 전에 외부 문서를 끌어들여, 모델의 내부 기억이 아닌 가져온 문서를 지면으로 삼는다 (Lewis et al. 2020).

출처를 명시한다 (provenance). 주장마다 "어느 소스에서 왔는가"를 연결하여, 출처 태그의 상실을 구조적으로 방지한다.

권위 있는 설계 문서에 접지한다. 인간이 고정한 사양 및 정본을 참조 축으로 삼음으로써, AI의 추론이 파고들 여지를 차단한다.

인간에게 접지한다 (human-in-the-loop). 인간 게이트는 작화가 돌이킬 수 없는 행동으로 변질되는 경로를 외부에서 차단한다.

이 다섯 가지를 관통하는 구조는 하나다. 접지란 "AI의 통계적 생성 외부에 지면을 하나 고정하는 것"이며, 모든 기법은 그 구체적인 형태에 불과하다.

대책: 접지를 생성 외부에 고정하기

실운영에 적용 중인 것과 설계 단계의 것을 나누어 기술한다.

실운영에 적용 중인 것

1. 자기 보고를 외부 사실로 확인한다. 완료 보고는 git diff --stat으로 차분을 확인하고, 파일 생성 보고는 test -f <path>로 실체를 확인한 뒤 다음 단계로 진행한다. 사례 2의 거짓 성공 보고는 이 방식으로 드러났다. —— AI가 "작성했다"고 보고한 파일은 실재하지 않았다.

2. 위험한 조작은 인간 게이트에서 멈춘다. 보안 훅 (security hook)의 무효화나 파괴적인 조작은 툴 결과나 시스템 통지를 경유하여 실행하지 않고, 인간의 직접 입력에 의한 허가 시에만 실행한다. 사례 1에서 실질적인 피해가 제로로 끝난 것은 이 인간 게이트가 제대로 기능했기 때문이다.

3. 상호 감사에서는 감사 AI에게도 외부 사실에 접지시킨다. 독립된 별도의 계통을 가진 AI에게 생로그와 성과물을 전달하여 대조하게 하는 상호 감사는 유효하지만, 감사 AI 자신도 작화를 할 수 있다. 따라서 감사 AI에게는 사고를 시키지 않는다. grep, git, 파일 존재 확인과 같은 결정론적인 툴의 출력만을 전달하며, 답변도 "공격 문자열이 입력에 있음/없음"과 같은 불리언 (boolean) 값이나 짧은 JSON으로 한정한다.

4. 환시가 재생산되는 경로를 훅 (hook)으로 물리적으로 막는다. 환시를 포함한 문서가 후속 세션에 "과거의 사실"로 흘러 들어가는 경로를 훅을 통해 물리적으로 차단했다.

설계로서 검토 중인 것 (미운용)

출처 태그의 구조화. 에이전트 간 메시지를 {"source":"system_notification","authority":"low","actionable":false}와 같은 스키마로 흘려보내고, actionable:false인 데이터는 태스크를 변경하거나 추가할 수 없도록 제약한다. 출처의 혼동을 공학적으로 방지하려는 발상이지만, 아직 구현되지는 않았다.

장기 기억의 분류 태그를 통한 재투입. 과거 출력을 fact (외부 사실로 검증됨), inference (AI의 추론), proposal (제안·후보)로 분류하고, 후자 두 가지에는 "사실이 아님"을 명시한 뒤 재투입한다. 사례 2와 같은 자기 오염(Self-contamination) 루프를 끊어내는 구조이지만, 이 역시 설계 단계에 있다.

요약

세 가지 사례 모두 AI가 스스로 깨닫고 멈춘 경우는 없었다. 확신 속에 있는 존재에게 내부에서부터 "그것은 틀렸다"라고 가르쳐줄 기구가 없기 때문이다.

AI에게 지능을 더한다고 해서 접지(Grounding)가 생겨나지는 않는다. 똑똑함은 꿈의 해상도를 높여줄 뿐, 꿈을 현실과 구별하는 힘을 키워주지는 않는다.

주시해야 할 것은 AI가 무엇을 말했느냐가 아니라, 그 말 아래에 외부의 지면이 있는가—즉, AI의 보고가 아니라 지면에 무엇이 남았는가 하는 점이다.

참고 문헌

  • Johnson, M. K., & Raye, C. L. (1981). Reality monitoring. Psychological Review, 88(1), 67–85.
  • Schnider, A. (2003). Spontaneous confabulation and the adaptation of thought to present reality. Nature Reviews Neuroscience, 8(4), 662–671.
  • Farquhar, S., Kossen, J., Kuhn, L., & Gal, Y. (2024). Detecting hallucinations in large language models using semantic entropy. Nature, 630(8017), 625–630.
  • Huang, L., et al. (2023). A Survey on Hallucination in Large Language Models: Principles, Taxonomy, Challenges, and Open Questions. arXiv:2311.05232.
  • Lewis, P., et al. (2020). Retrieval-Augmented Generation for Knowledge-Intensive NLP Tasks. arXiv:2005.11401(NeurIPS 2020).

Discussion

AI 자동 생성 콘텐츠

본 콘텐츠는 Zenn AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.

원문 바로가기
0

댓글

0