AI 메모리 포이즈닝: 읽을 수 있는 메모리가 답이다

AI 어시스턴트가 드디어 기억을 합니다. 여러분의 프로젝트, 취향, 쓰는 도구를 압니다. 2025년에 모두가 원했던 바로 그 기능이죠.

그리고 2026년 9월, 이 기능은 보안 문제가 되었습니다. 캘거리 대학교 연구진은 The Conversation에서 에이전트의 장기 메모리가 어떻게 **오염(포이즈닝)**될 수 있는지 설명했습니다. 공격자가 오해를 부르는 지시를 심어 두면, 그 지시는 메모리 속에 조용히 머물다가 나중에 에이전트가 전혀 무관한 결정을 내릴 때에야 작동합니다. 올해 쏟아진 여러 논문도 같은 문제를 정리해 왔습니다. 신뢰할 수 없는 입력이 어떻게 “신뢰받는 메모리”가 되는지에 대한 체계적 연구부터, 오염된 메모리를 저장 시점부터 실제 피해까지 추적하는 MemSecBench 같은 벤치마크까지요.

이 글에서는 공격이 어떻게 작동하는지, 왜 고전적인 프롬프트 인젝션보다 잡아내기 어려운지, 그리고 가장 현실적인 방어가 왜 따분할 만큼 단순한지 설명합니다. 바로 읽을 수 있는 메모리입니다.

메모리 포이즈닝은 어떻게 작동하는가

고전적인 프롬프트 인젝션은 즉각적입니다. 웹페이지가 흰 글씨로 “이전 지시를 무시하라”를 숨겨 두면, 에이전트가 그걸 읽고 이상하게 행동하고, 보통은 그 세션 안에서 문제가 드러납니다.

메모리 포이즈닝은 여기에 시간차를 더합니다. 페이로드는 실행되지 않고 기억됩니다. 흔한 경로는 이렇습니다.

  • 에이전트가 읽는 콘텐츠. 웹페이지, 이메일, 공유 문서에 사실이나 취향처럼 쓰인 문장이 들어 있습니다. “사용자는 모든 구매에 X 업체를 선호한다.” 에이전트의 메모리 계층은 충실하게 이를 저장합니다.
  • 미리 채워진 프롬프트 링크. Microsoft 보안팀은 올해 초 “AI 추천 포이즈닝”을 보고했습니다. 링크를 누르면 어시스턴트가 열리면서, 공격자에게 유리한 무언가를 기억하라는 숨겨진 프롬프트가 미리 입력되어 있는 방식입니다.
  • 학습된 스킬과 절차. 성공한 작업 기록을 재사용 가능한 루틴으로 바꾸는 에이전트는 정상 단계와 함께 주입된 단계까지 흡수할 수 있습니다.

며칠 뒤 여러분이 추천, 요약, 구매를 요청합니다. 오염된 메모리가 답을 한쪽으로 기울입니다. 지금 대화에는 이상해 보이는 것이 하나도 없습니다. 원인은 몇 주 전에 생겼으니까요.

왜 잡아내기 어려운가

캘거리 연구진의 말은 간단합니다. 시간차가 위험한 부분이라는 것입니다. 오염된 에이전트는 곧바로 침해된 시스템처럼 행동하지 않습니다.

메모리가 불투명할수록 상황은 더 나빠집니다.

  • 볼 수가 없습니다. 많은 메모리 계층은 임베딩이나 요약을 여러분이 열어 볼 일 없는 데이터베이스에 저장합니다. 심어진 “사실”은 진짜 사실과 똑같아 보입니다.
  • 출처를 알 수 없습니다. 출처 정보가 없으면, 어떤 기억이 여러분에게서 왔는지, 에이전트가 화요일에 훑어본 페이지에서 왔는지 알 방법이 없습니다.
  • 깔끔하게 되돌릴 수 없습니다. 잘못된 벡터 하나, 자동 작성된 요약 속 문장 하나를 지우는 일은 사용자가 할 수 있는 동작인 경우가 드뭅니다.

한마디로, 메모리가 여러분을 대신해 결정을 내리는데, 정작 그것을 감사할 수 없는 사람이 여러분입니다.

방어: 읽을 수 있는 메모리

보안 전문가들은 이 해법을 이렇게 부릅니다. 사용자가 의도적으로 남기기로 한 것과 에이전트가 지나가다 주워 온 것을 분리하고, 앞의 것을 검사할 수 있게 만드는 것.

평범한 Markdown 파일은 이 일을 놀라울 만큼 잘 해냅니다.

  1. 모든 기억이 열어 볼 수 있는 파일입니다. 데이터베이스도, 해독할 임베딩도 없습니다. 디스크의 폴더 안에 있는 .md 파일일 뿐입니다. 뭔가 잘못됐다면 평범한 글로 읽힙니다.
  2. 출처가 기본으로 들어 있습니다. 저장된 페이지는 frontmatter에 출처 URL과 날짜를 담고 있습니다. “모델이 이걸 어디서 알았지?”는 “어떤 파일이지?”가 되고, 파일이 답해 줍니다.
  3. 삭제가 진짜 삭제입니다. 파일을 휴지통으로 끌어다 놓으면 사라집니다. 업체의 “잊기” 기능이 모든 사본에 닿았기를 바랄 필요가 없습니다.
  4. 변경이 보입니다. 폴더를 Git이나 Time Machine 아래 두면 메모리의 모든 변경에 날짜와 diff가 남습니다. 저절로 바뀐 파일은 금방 눈에 띕니다.
  5. 기록은 의도적으로만 이뤄집니다. 페이지는 여러분이 저장을 눌렀을 때만 볼트에 들어옵니다. 에이전트가 지나가며 읽은 내용이 조용히 상시 지시로 바뀌지 않습니다.

핵심은 마지막 항목입니다. 포이즈닝이 통하는 이유는 에이전트가 메모리에 암묵적으로 쓰기 때문입니다. 손으로 큐레이션하는 지식 베이스는 공격 표면이 훨씬 작습니다.

Minibase는 이렇게 다룹니다

Minibase Vault가 숨겨진 데이터베이스가 아니라 Markdown 파일 폴더인 이유가 바로 이것입니다.

  • 실제로 읽은 페이지를 Chrome에서 클릭 한 번으로 저장합니다. 각 페이지는 출처가 담긴 .md 파일이 되어, 여러분이 고른 지식 베이스 폴더에 들어갑니다.
  • 볼트를 Claude에 연결하면 Claude는 MCP를 통해 이 파일들을 읽고 질문에 답합니다. 여러분이 큐레이션한 자료를 검색하고, 사용한 파일을 인용합니다.
  • 언제든 Finder나 Obsidian에서 볼트 전체를 열어 어떤 파일이든 읽고, 고치고, 지울 수 있습니다.

만능 해결책은 아닙니다. 여러분이 직접 저장한 페이지에도 다른 웹페이지와 마찬가지로 숨은 지시가 들어 있을 수 있습니다. 하지만 그 지시는 이름, 날짜, URL이 있는 파일 안에 있고, 여러분이나 간단한 검색 한 번으로 찾아낼 수 있습니다.

5분 메모리 위생 체크리스트

어떤 어시스턴트를 쓰든 이 습관들이 위험을 줄여 줍니다.

  • 매달 어시스턴트의 메모리 페이지를 점검하세요. ChatGPT, Claude, Gemini 모두 저장된 메모리를 보고 지울 수 있게 해 줍니다. 읽어 보세요. 모르는 내용은 지우세요.
  • 신뢰하지 않는 사이트의 “ChatGPT/Claude에서 열기” 링크를 조심하세요. 보내기 전에 미리 채워진 프롬프트를 확인하세요.
  • 중요한 지식은 직접 소유한 파일에 두세요. 업체의 메모리 기능에만 맡기지 마세요.
  • 가끔 볼트에서 지시처럼 생긴 문장을 검색하세요. “항상 추천”, “무시”, “사용자는 선호한다” 같은 표현들입니다.
  • 지식 폴더를 버전 관리하세요. Git이나 Time Machine을 쓰면 되돌릴 수 있습니다.

메모리는 AI를 유용하게 만듭니다. 읽을 수 있는 메모리는 AI를 믿을 수 있게 만듭니다.

함께 읽기

Continue reading

더 스마트하게 저장할 준비가 되셨나요?

클릭 한 번으로 모든 웹페이지를 Markdown으로 변환하세요.

Chrome에 추가