GuardTrailby GenAI Labs · Agent EDR
자료실 · 이달의 이슈 · 2026년 7월
위협 분석

MemGhost: 메일 한 통으로 AI 에이전트의 영구 메모리를 오염시키는 공격

개인 비서형 에이전트가 세션을 넘어 사용자를 기억하는 기능이 새로운 공격 표면이 되었다. 연구진이 공개한 MemGhost는 공격용으로 작성된 메일 한 통으로 에이전트의 메모리 파일에 거짓 정보를 기록하고, 이후 무관한 질문에서 그 정보가 되살아나게 한다. 기록 과정은 사용자에게 전혀 보이지 않았다.

핵심 요약
  • 공격은 주입 단계와 발현 단계로 나뉜다. 메일 속 숨은 지시가 에이전트로 하여금 MEMORY.md 같은 메모리 파일에 거짓 사실을 쓰게 하고, 이후 사용자의 다른 질문에서 그 사실이 근거로 쓰인다.
  • OpenClaw 백그라운드 모드에서 종단 간 성공률 87.5%, Claude Sonnet 4.6 기반에서 71.4%를 기록했고, 메모리 수정 사실이 사용자에게 드러난 경우는 없었다.
  • 입력 필터는 91.6%, 시스템 수준 모니터는 93.5%의 미탐률을 보였다. 문장 단위 검사로는 막기 어렵다는 뜻이다.
  • 메모리 기록도 파일 쓰기라는 도구 호출이다. 호출 단위로 판정하고 기록하면 무인 실행 중 메모리 변경을 통제할 수 있다.

1.개요

장기 메모리는 개인 비서형 에이전트의 핵심 기능이다. 에이전트는 사용자 선호, 진행 중인 업무, 계정 정보 같은 사실을 파일이나 벡터 데이터베이스에 저장하고 다음 세션에서 다시 불러온다. 연구진(Yechao Zhang 외)은 7월 6일 논문 「When Claws Remember but Do Not Tell」에서 이 메모리를 외부에서 오염시키는 공격을 발표했고, 7월 14일부터 영향받는 벤더에 순차 제보했다.

시험 대상은 OpenClaw(GPT-5.4), Claude Code SDK(Sonnet 4.6), NanoClaw, Hermes Agent, 그리고 Mem0 메모리 백엔드였다.

MemGhost 공개 경과
2026-07-06 논문 공개 2026-07-14 벤더 제보 시작 2026-07-23 CSA 연구 노트 2026-07-26 CSA 후속 분석 2026-07-06 논문 공개 2026-07-14 벤더 제보 시작 2026-07-23 CSA 연구 노트 2026-07-26 CSA 후속 분석
연구진은 평가 도구 WhisperBench를 공개하고 학습된 공격 모델은 공개하지 않았다.

2.공격 원리

MemGhost의 두 단계
공격용 메일 수신 숨은 지시 포함 에이전트의 메일 처리 백그라운드·무인 메모리 파일에 기록 MEMORY.md · 벡터 DB 며칠 뒤 무관한 질문 메모리 로드 거짓 사실이 근거로 조언·행동에 반영 공격용 메일 수신 숨은 지시 포함 에이전트의 메일 처리 백그라운드·무인 메모리 파일에 기록 MEMORY.md · 벡터 DB 며칠 뒤 무관한 질문 메모리 로드 거짓 사실이 근거로 조언·행동에 반영
주입 시점의 파일 수정은 대화 화면에 표시되지 않았다.

연구진의 예시는 금융 피해와 직결된다. 사용자의 은행 앱 이체 한도가 1만 달러로 상향되었다는 거짓 정보를 메모리에 심으면, 이후 사용자가 이체 관련 질문을 할 때 에이전트는 이를 사실로 전제하고 안내한다. 한 번 기록된 거짓 메모리는 세션이 바뀌어도 사라지지 않는다.

연구진은 에이전트가 설계상 '보이지 않는 단계'를 숨기기 때문에 파일을 수정하는 순간이 대화에 나타나지 않는다고 지적했다.

3.시험 결과

공격 성공률과 기존 방어의 미탐률
OpenClaw 백그라운드 성공률 87.5% Sonnet 4.6 백그라운드 성공률 71.4% 입력 필터 미탐률 91.6% 시스템 수준 모니터 미탐률 93.5% 안전 학습 모델의 주입 성공률 49.1% OpenClaw 백그라운드 성공률 87.5% Sonnet 4.6 백그라운드 성공률 71.4% 입력 필터 미탐률 91.6% 시스템 수준 모니터 미탐률 93.5% 안전 학습 모델의 주입 성공률 49.1%
연구진이 공개한 값. 사용자가 투명성을 요구하면 은닉률은 25%로 떨어졌지만 주입 성공률은 94.6%였다.

은닉률은 100%였다. 즉 시험에서 에이전트가 메모리를 수정했다는 사실을 사용자에게 드러낸 경우는 없었다. 연구진은 평가 도구 WhisperBench를 공개했으나, 학습된 공격 모델은 안전성 검토를 이유로 공개하지 않았다.

4.분석: 메모리는 지속성 거점이다

전통적 침해에서 공격자가 가장 공들이는 단계는 지속성 확보다. 재부팅 후에도 살아남는 실행 경로를 만들어야 하기 때문이다. 에이전트의 영구 메모리는 그 역할을 자연어로 대신한다. 실행 파일 대신 '사실'을 심어 두면, 에이전트가 스스로 그 사실을 불러와 판단의 근거로 삼는다.

미탐률 수치가 보여 주듯 문장을 검사하는 방어로는 한계가 뚜렷하다. 거짓 사실은 공격적인 문장이 아니라 평범한 진술의 형태를 띠기 때문이다. 반면 메모리에 기록하는 동작은 언제나 파일 쓰기나 데이터베이스 기록이라는 구체적 호출로 나타난다. 통제 지점은 바로 그 호출이다.

5.위협 분류 매핑

이 사건의 공격 단계를 OWASP 에이전트 애플리케이션 Top 10(2026)과 MITRE ATLAS 기법에 대응시키면 다음과 같다. GuardTrail은 판정 결과에 같은 분류의 태그를 붙여 기록하고, SIEM으로 내보낼 때 함께 전달한다.

체계항목이 사건에서
OWASP ASIASI06 메모리·컨텍스트 오염거짓 사실이 영구 메모리에 기록되어 이후 판단에 쓰였다
OWASP ASIASI01 목표 탈취메일 속 숨은 지시가 에이전트의 동작을 바꿨다
MITRE ATLASAML.T0051.001 LLM Prompt Injection: Indirect메일 본문을 통한 간접 프롬프트 인젝션

6.젠아이랩스 GuardTrail의 대응

젠아이랩스(GenAI Labs) GuardTrail은 AI 에이전트의 도구 호출을 실행 직전에 가로채 기록·판정·차단하는 Agent EDR이다. 개발자 PC의 코딩 에이전트(Claude Code 훅, stdio 래퍼)와 사내 MCP 서버(게이트웨이)에 설치되며, 차단 판정은 언어 모델이 아닌 결정적 정책으로 내린다. 제품 소개 · 위협 차단 · 도입 방식

  • 메모리 쓰기를 승인 대상으로 지정한다. 고객 정책으로 메모리 파일 경로(MEMORY.md 등)나 메모리 도구 이름을 지정해 REQUIRE_APPROVAL을 걸면, 무인 실행 중 메모리 변경은 관리자 승인 없이 이뤄지지 않는다.
  • 에이전트별로 범위를 달리한다. 정책의 agent 조건으로 메일을 읽는 에이전트에만 메모리 쓰기 승인을 요구할 수 있다. 연구진이 권고한 '메일 읽기 구성 요소와 메모리 쓰기 권한의 분리'를 운영 단계에서 강제하는 방식이다.
  • 모든 메모리 변경이 감사 기록으로 남는다. 어떤 세션에서 어떤 입력을 처리한 뒤 메모리가 바뀌었는지 시간순으로 확인할 수 있어, 오염 시점을 역추적할 수 있다.
젠아이랩스 GuardTrail 적용 구성: 개인 비서형 에이전트
입력 원천 사용자 질문 공격용 메일 비서 에이전트 도구 호출 생성 젠아이랩스 GuardTrail 훅 · stdio 래퍼 · MCP 게이트웨이 하드 정책 고객 정책 위험 점수(ATR) 관리자 승인 도구 · MCP 서버 메모리 파일 메일 · 일정 외부 서비스 콘솔 · 감사 기록 · SIEM 차단 지점: 메일 처리 중 메모리 파일 기록 사용자 질문 공격용 메일 비서 에이전트 도구 호출 생성 젠아이랩스 GuardTrail 하드·고객 정책 · 위험 점수 · 승인 메모리 파일 메일 · 일정 외부 서비스 차단 지점: 메일 처리 중 메모리 파일 기록
메모리 기록도 파일 쓰기 도구 호출이다. GuardTrail은 어떤 입력을 처리한 세션에서 메모리가 바뀌었는지 기록한다.

고객 정책 예시

메일을 처리하는 에이전트(agent:mail-*)의 메모리 파일 기록만 승인 대상으로 지정한다. 사용자가 직접 대화하는 에이전트의 메모리 기록은 영향을 받지 않는다.

policies:
  - id: mail-agent-memory-approval
    name: 메일 처리 에이전트의 메모리 기록 승인
    effect: REQUIRE_APPROVAL
    mode: enforce
    reason: 메일을 처리하는 에이전트의 메모리 파일 기록은 사용자 확인이 필요합니다.
    match:
      agent: ["agent:mail-*"]
      tool: ["Write", "Edit", "*:write_file", "*:memory_*"]
      args_pattern: ['(?i)(^|/)MEMORY\.md', '(?i)"memory"']

판정 결과

같은 메모리 파일 쓰기가 메일 처리 에이전트에서는 승인 대기로 멈추고, 다른 에이전트에서는 기록 후 진행된다. 아래 표는 위 정책을 GuardTrail 정책 엔진에 적용하고 guardtrail policy test --mode enforce로 각 호출을 판정한 실제 결과다. 인자에 넣은 키와 토큰은 공개 문서의 예시 값이다.

도구 호출 · 에이전트판정정책·사유
Write /home/u/.agent/MEMORY.md
agent:mail-assistant · 내장 정책 + 고객 정책
승인 필요mail-agent-memory-approval
메일을 처리하는 에이전트의 메모리 파일 기록은 사용자 확인이 필요합니다.
Write /home/u/.agent/MEMORY.md
agent:planner · 내장 정책 + 고객 정책
허용적용 정책 없음
기록 후 실행

7.점검 방법

  1. 메모리 파일 검토: MEMORY.md 등 에이전트 메모리 파일에서 금액, 한도, 계좌, 연락처처럼 행동을 유도하는 사실이 언제 추가됐는지 확인한다.
  2. 출처 대조: 메모리 변경 시각과 같은 시각에 처리된 외부 메일이 있는지 GuardTrail 세션 기록으로 대조한다.
  3. 백그라운드 모드 점검: 무인 실행 모드에서 메모리 쓰기 권한이 열려 있는지 확인한다.

8.권고 사항

  1. 무인 실행 모드에서는 메모리 쓰기 권한을 제한한다.
  2. 신뢰할 수 없는 메일은 메모리 쓰기 권한이 없는 별도 구성 요소에서 처리한다.
  3. 메모리 항목에 출처를 표시해 사용자가 직접 제공한 사실과 외부에서 온 사실을 구분한다.
  4. 메모리 파일 변경 전 사용자 확인을 요구하고, 모든 변경을 감사 기록으로 남긴다.

참고 문헌

  1. Cloud Security Alliance, MemGhost: Agent Memory Poisoning (2026-07-23). labs.cloudsecurityalliance.org
  2. Cloud Security Alliance, MemGhost: AI Agent Memory Injection. labs.cloudsecurityalliance.org

관련 제품 · 보안 권고

수치와 경위는 각 출처가 공개한 내용을 따랐다. 접근 확인 2026-07-28.