memlineage v0.1.0: LLM 에이전트의 메모리 오염 방지를 위한 2단계 방어
요약
LLM 에이전트의 영구 메모리가 적대적 공격에 의해 오염되는 문제를 해결하기 위한 2단계 방어 체계인 memlineage v0.1.0을 소개합니다. 암호화된 출처 증명(Layer A)과 도구 호출 패턴을 분석하는 경로 탐지(Layer B)를 통해 에이전트의 안전한 메모리 관리를 지원합니다.
핵심 포인트
- Ed25519 서명을 활용한 메모리 출처 증명 및 신뢰 계층 관리
- 신뢰할 수 없는 경로를 통한 메모리 유출을 차단하는 파생 그래프 구조
- 도구 호출(tool-calls) 시퀀스의 구조적 특징을 분석하는 행태적 탐지
- 암호학적 보증과 머신러닝 기반 경고 시스템의 결합
memlineage v0.1.0: LLM 에이전트의 메모리 오염 방지를 위한 2단계 방어
영구적인 메모리를 가진 에이전트는 일반 채널을 통해서만 상호작용하는 적대자에게 오염될 수 있습니다. 저희는 Python으로 구현된 2단계 방어(암호화 출처 증명 + 행동 감지)를 제시하며, 이는 독립 감사 및 CI를 통해 검증되었습니다.
문제점
영구적인 메모리를 가진 에이전트(RAG / agentic memory)는 새로운 공격 표면을 도입합니다. 일반 채널을 통해서만 상호작용하는 적대자는 설계된 메모리를 주입할 수 있으며, 이 메모리가 검색될 때 에이전트의 미래 행동을 변경시킵니다 — 모델 가중치나 코드를 건드리지 않고도 가능합니다.
최근 학술 연구들은 이를 재현 가능하게 확인했습니다:
- SMSR (2026) — 일반 상호작용을 통한 메모리 오염.
- TMA-NM (2026) — 출처 기반의 _trust score_에 의존하는 방어는 _laundering_에 취약합니다 (외부 콘텐츠가 에이전트 자체의 요약이나 반향을 통해 '신뢰할 수 있게' 세탁됨).
- MemLineage (2025) — max-of-strong-edges 전파를 이용한 암호화 출처 증명.
- Forensic Trajectory Signatures (2026) — 유출은 툴 호출(tool-calls) 시퀀스에 분산된 행동 서명을 남기며, 이는 필터를 우회하기 위해 텍스트를 최적화하는 공격에서도 살아남습니다.
공통 결론은 다음과 같습니다: 콘텐츠 기반의 필터는 자연스러운 기업용 텍스트로 우회되며, _trust score_는 취약합니다. 따라서 암호화된 출처 증명과 행동 감지가 필요합니다.
해결책: 함께 구축된 두 단계
레이어 A — 출처 증명 + 출처(쓰기 시점, 암호화, 하드 게이트)
해결책: 함께 구축된 두 단계
레이어 A — 출처 증명 + 출처(쓰기 시점, 암호화, 하드 게이트)
- 각 메모리는 Ed25519를 쓰기 시점에 서명하며, 이를 생성한 _주요 주체(principal)_에 연결합니다. 신뢰 수준(tier)은 서명하는 키에서 파생되며, 호출자가 임의로 결정할 수 없습니다.
KeyRegistry는 각 주요 주체를 해당 키와 연결합니다.register()는 신뢰 초기화 시점에만 허용되며,freeze()는 런타임에 레지스트리를 잠가 에이전트 로직이 내부 주요 주체로 스스로 등록하는 것을 방지합니다.- max-of-strong-edges 전파를 가진 파생 그래프(derivation graph)는 _신뢰할 수 없는 경로 영속성(Untrusted-Path Persistence)_을 강제합니다: 외부/신뢰할 수 없는 조상으로부터 파생된 메모리는 (심지어 간접적으로도) 절대로 신뢰 가능한 영역으로 유출되지 않습니다.
SensitiveActionGate는 신뢰할 수 없는 경로를 가진 조상으로부터 근거가 파생되는 모든 비가역적 행동을 차단합니다 (FPR ≈ 0, 암호학적).
레이어 B — 경로 탐지기 (런타임, 행태적, 소프트 경고)
- 내용이 아닌 도구 호출(tool-calls) 구조에서 감지합니다 (Forensic Trajectory Signatures).
- 19개의 구조적 특징; 회상 → 민감한 행동 불변 규칙(학습 필요 없음)과 학습 가능한 RandomForest를 사용합니다.
- MVP 단계에서는 오탐률을 측정할 때까지 경고만 발생시키며 (절대 자동 차단하지 않음), 레이어 A와 무분별하게 OR 연산을 하지 않습니다.
결과 (독립적으로 감사됨)
외부 감사자가 저장소(repo)를 처음부터 복제하고, 설치한 후, 보증을 검증하기 위해 자신만의 적대적 테스트 (저장소의 테스트가 아님)를 작성했습니다. 실제 측정 지표:
| 보증 | 결과 |
|---|---|
| 키 없이 주요 주체 스푸핑 | 거부됨 (PermissionError) |
| ... |
The 벤치마크는 의미론적 패러프레이징 공격(단순한 정규식 문자열 패턴이 아님)을 사용하며, 확률적 경로 생성 및 클래스 중첩에 대해 측정하고 여러 시드에 대한 평균 ± 표준편차를 보고합니다. 위장술은 AUC와 Recall을 측정 가능한 방식으로 저하시키며 — 이 벤치마크는 메모리화가 아닌 일반화를 측정합니다.
명시된 제한 사항: Capa B 공격은 MINJA(의역/재구성 및 리콜 휴리스틱)의 국소적 근사치일 뿐, 공개된 화이트박스 최적화 기법이 아닙니다. AUC는 전체 MINJA가 아닌 이 공격에 대한 견고성을 측정합니다.
검증된 품질 (Calidad verificada)
- CI (GitHub Actions, py3.11/3.12): 30/30 테스트 통과, 커버리지 95%, bandit SARIF 결과 0건.
- SonarCloud: Quality Gate OK, 열린 이슈 0개.
- GitHub Code Scanning: 열린 경고 0개.
- 라이선스 AGPL-3.0-or-later.
사용해 보기 (Pruébalo)
git clone https://github.com/amurlaniakea/memlineage.git
cd memlineage
python -m venv .venv && source .venv/bin/activate
...
스택 (Stack)
| 구성 요소 | 기술 |
|---|---|
| 암호화 (Criptografía) | Ed25519 (cryptography) |
| ... |
참고 자료 (Referencias)
- SMSR (2026) — SMSR: 에이전트의 메모리 오염 (memory poisoning en agentes)
- TMA-NM (2026) — 신뢰 점수 세탁 (trust-score laundering)
- Forensic Trajectory Signatures (2026)
- MemLineage (2025) — 암호화된 계보 (linaje criptográfico)
- MemAudit (2025) — 사후 메모리 감사 (auditoría post-hoc de memoria)
링크 (Links)
이것이 당신의 에이전트 스택에서 어디에 속할까요? 의견을 기다립니다.
라이선스: AGPL-3.0-or-later. 작성자: Pedro Sordo Martínez.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기