memlineage v0.1.0: defensa de dos capas contra memory poisoning en agentes LLM A developer released memlineage v0.1.0, a two-layer defense against memory poisoning in LLM agents. The Python library combines cryptographic provenance with behavioral detection, achieving an attack success rate of 0.000 for the cryptographic layer and an AUC of 0.978 against camouflaged adversarial paraphrasing attacks. Un agente con memoria persistente puede ser envenenado por un adversario que solo interactúa por canales normales. Presentamos una defensa de dos capas provenancia criptográfica + detección por comportamiento en Python, verificada por auditoría independiente y CI. Los agentes con memoria persistente RAG / agentic memory introducen una superficie de ataque nueva: un adversario que interactúa solo a través de canales normales puede inyectar memorias diseñadas que, al ser recuperadas, desvían el comportamiento futuro del agente — sin tocar pesos del modelo ni código. El trabajo académico reciente lo confirma de forma reproducible: La conclusión común: los filtros basados en contenido son evadidos por texto empresarial fluido, y los trust score son maleables. Hace falta origen criptográfico y detección por comportamiento. KeyRegistry vincula cada principal a su propia clave. register solo se permite en la inicialización de confianza; freeze bloquea el registro en runtime para que la lógica del agente no pueda auto-registrarse como principal interno. SensitiveActionGate Un auditor externo clonó el repo desde cero, instaló, y escribió sus propias pruebas adversariales no las del repo para verificar las garantías. Métricas reales: | Garantía | Resultado | |---|---| | Spoof de principal sin su clave | Rechazado PermissionError | | Laundering transitivo 5 niveles | Nodo sigue untrusted , gate bloquea | | Mezcla confiable + no confiable en una justificación | Bloquea basta una no confiable | RegistryFrozenError tras freeze | Bloquea registro en runtime | | Firma reciclada de memoria legítima a maliciosa | Rechazada atada a entry id+contenido+source | | ASR de ataque externo real Capa A | 0.000 | | AUC Capa B sin camuflaje | 0.988 | | AUC Capa B con camuflaje del atacante | 0.978, Recall 0.950 | El benchmark usa ataques por paráfrasis semántica no frases regex literales con generación estocástica de trayectorias y solapamiento de clases, y reporta media ± desviación sobre varias semillas. El camuflaje degrada el AUC y el Recall de forma medible — el benchmark mide generalización, no memorización de plantillas. Limitación declarada:el ataque de Capa B es una aproximación local de MINJA paráfrasis + heurística derecall , no el optimizador white-box publicado. El AUC mide robustez contraesteataque, no contra MINJA completo. git clone https://github.com/amurlaniakea/memlineage.git cd memlineage python -m venv .venv && source .venv/bin/activate pip install -e ". dev " pytest -q python -c "from memlineage.benchmark import run seeds; print run seeds " | Componente | Tecnología | |---|---| | Criptografía | Ed25519 cryptography | | Linaje | networkx DAG, max-of-strong-edges | | Detector | scikit-learn RandomForest + regla de invariante | | CI | GitHub Actions + SonarCloud + Code Scanning | ¿Dónde encaja esto en tu stack de agentes? Comentarios abiertos. Licencia: AGPL-3.0-or-later. Autor: Pedro Sordo Martínez.