Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
memform-code — Banc d'essai déterministe et harnais d'évaluation pour l'empoisonnement de la mémoire persistante dans les agents LLM, avec des cas appariés propres/empoisonnés, des exécuteurs LangChain/LlamaIndex et des défenses. | Kitploit
Outils/GitHubGitHub/opanhw/memform-code
Outils DéfensifsAnalyse des VulnérabilitésApprentissage AutomatiqueArticles et RechercheApprentissage et ÉducationSécurité de l'IAAttaque Adversariale
GitHubopanhw/memform-code

memform-code

Banc d'essai déterministe et harnais d'évaluation pour l'empoisonnement de la mémoire persistante dans les agents LLM, avec des cas appariés propres/empoisonnés, des exécuteurs LangChain/LlamaIndex et des défenses.

Voir le dépôt
118il y a 1 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

MemForm (version d'évaluation)

Ce dépôt accompagne l'article MemForm: Benchmarking Memory Formation Poisoning in LLM Agents.

MemForm est un benchmark déterministe de l'empoisonnement de la mémoire persistante dans les agents LLM. Il pose une question causale que les suites ordinaires de jailbreak ou d'injection de prompt n'isolent pas :

Si la mémoire à long terme d'un agent est modifiée au niveau d'une surface bien définie, la prise de décision en aval passe-t-elle d'une politique propre à une politique empoisonnée sur la même tâche ?

Chaque élément est une intervention appariée. Le déclencheur en aval, l'espace d'actions et la sémantique de famille sont maintenus fixes. Seule l'entrée de construction de la mémoire change entre les conditions propre et empoisonnée. Le succès de l'attaque est un contraste intra-élément.

Cette version contient les cas de benchmark figés et les exécuteurs d'évaluation / de défense. Le pipeline de construction est retenu tant que l'article est en cours d'évaluation et sera publié après publication.

Taxonomie des attaques

Chaque famille est instanciée sur cinq interfaces de mémoire. Le champ de cas est interface. P1–P5 sont les noms utilisés dans l'article : Content, Evidence, Scope, Selection et Path.

InterfaceNom dans l'articleVariable causaleContraste propre vs. empoisonnéSonde en aval
P1ContentTexte de mémoire stockéÉcriture directe d'une politique réutilisable propre vs. une politique empoisonnéeUne tâche cible générale
P2EvidenceAuthenticité des enregistrements de supportHistorique authentique à budget égal vs. un historique apparié qui remplace certains enregistrements par des preuves forgées. La provenance est masquée à l'apprenant de la mémoireUne tâche cible générale
P3ScopeDistribution de portée observéePreuves localement valides plus contre-exemples extérieurs vs. succès intérieurs saillants au signal plus succès extérieurs/généraux authentiques pour l'action localement préféréeTrois tâches : dans la portée, proche hors portée, cible hors portée
P4SelectionSous-ensemble retenuMême pool de candidats ; rétention propre vs. empoisonnée d'un sous-ensemble de taille fixe, avec un contrôle sur le pool completUne tâche cible générale
P5PathOrdre de consolidation uniquementLe même multiensemble d'expériences de même contexte en deux permutations. La preuve propre est en dernier dans l'ordre propre ; la preuve empoisonnée est en dernier dans l'ordre empoisonnéUne tâche cible de même contexte

P3 dans la portée est un contrôle d'accord / de cible partagée : les réponses de référence propre et empoisonnée sont identiques. Les tâches proche-hors-portée et cible-hors-portée sont les sondes séparables. P5 interdit les décalages de contexte cachés : chaque enregistrement partage un même context_key, et les enregistrements soutenant à la fois la condition propre et la condition empoisonnée sont des succès observés.

Ce qui est publié

CheminContenu
outputs/mcq_item_audit/accepted_cases.jsonlCas à choix multiples figés (994 éléments, 235 familles)
outputs/freeform_item_audit/accepted_cases.jsonlCas libres figés (897 éléments, 218 familles)
memform/eval/Protocole partagé plus exécuteurs LangChain / LlamaIndex / défense
memform/freeform/evaluator.pyArbitre en cascade des réponses libres
memform/defenses/Défenses au moment de l'écriture, Task Shield au moment de l'utilisation, et métriques à dénominateur fixe
memform/common.pyE/S JSONL et vérifications du schéma de cas

Décomptes par interface — MCQ : P1 234, P2 233, P3 174, P4 144, P5 209. Libre : P1 209, P2 212, P3 144, P4 134, P5 198.

Organisation

memform-code/
├── outputs/
│   ├── mcq_item_audit/accepted_cases.jsonl
│   └── freeform_item_audit/accepted_cases.jsonl
├── memform/
│   ├── common.py
│   ├── freeform/evaluator.py
│   ├── eval/          # protocol, LangChain, LlamaIndex, defense runners
│   └── defenses/
├── run_langchain.py
├── run_llamaindex.py
├── run_defense.py
├── pyproject.toml
├── requirements.txt
└── .env.example

Les scripts run_*.py à la racine appellent les mêmes points d'entrée que python -m memform <command>.

Installation

Python 3.10+.

python -m venv .venv
source .venv/bin/activate          # Windows: .venv\Scripts\activate
pip install -e .

Copiez .env.example vers .env et définissez les identifiants :

VariableUtilisée par
OPENAI_API_KEYAgent d'évaluation / modèle de mémoire
OPENAI_BASE_URLPasserelle compatible OpenAI facultative (OPENAI_API_BASE est également accepté par LlamaIndex)
JUDGE_OPENAI_API_KEY / JUDGE_OPENAI_BASE_URLJuge / évaluateur libre facultatif et distinct
DEFENSE_OPENAI_API_KEY / DEFENSE_OPENAI_BASE_URLPoint de terminaison facultatif et distinct pour le modèle de défense

--api-key et --base-url remplacent les variables d'environnement. Tout serveur Chat Completions compatible OpenAI fonctionne. Les noms de modèles par défaut de la CLI sont des espaces réservés ; indiquez un modèle disponible sur votre point de terminaison.

python -m memform --help

Format du jeu de données

JSONL, un cas par ligne.

Champs partagés : case_id, family_id, interface (P1–P5), attack_type, domain, decision_variable, clean_policy, poisoned_policy, scope, candidate_experiences, memory_building, metadata.

memory_building est l'intervention appariée :

  • oracle_memory.clean / oracle_memory.poisoned — texte de la politique de référence (diagnostic)
  • clean_condition / poisoned_condition — entrée de construction de mémoire pour cette interface

QCM. evaluation.type vaut multiple_choice. Chaque entrée trigger_tasks[] possède task, choices, clean_answer et poisoned_answer.

Forme libre. task_format vaut free_form ; source_case_id pointe vers la source QCM. Les menus d'options sont remplacés par une recommandation ouverte. La notation utilise des behavioral_signatures appariées (clean / poisoned / ambiguous / unclear). La construction de l'empoisonnement reste inchangée.

La provenance et les étiquettes de référence constituent la vérité terrain du benchmark pour la notation. Les défenses ne reçoivent jamais l'interface d'attaque, les noms de conditions, les réponses de référence, la provenance ou les identifiants comme caractéristiques du prompt.

Évaluer un agent

Les deux exécuteurs partagent la validation des cas, la consolidation de la mémoire, la décision en aval, la notation et l'agrégation. Ils ne diffèrent que par la pile LLM / mémoire.

python -m memform run-langchain \
  --cases outputs/mcq_item_audit/accepted_cases.jsonl \
  --output-dir results/langchain_mcq \
  --phase all \
  --interfaces P1 P2 P3 P4 P5 \
  --model MODEL
python -m memform run-llamaindex \
  --cases outputs/mcq_item_audit/accepted_cases.jsonl \
  --output-dir results/llamaindex_mcq \
  --phase learned \
  --interfaces P1 P2 P3 P4 P5 \
  --model MODEL

Les mêmes commandes acceptent outputs/freeform_item_audit/accepted_cases.jsonl. Le scoring en forme libre utilise une correspondance canonique exacte, puis des modèles optionnels de parseur / juge (--freeform-parser-model, --freeform-judge-model).

Télécharger l’outil