Skip to content
KitploitKITPLOIT
StrumentiExploitsBlog
Log in
Invia
StrumentiExploitsBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
D-Scan — Analizza gli stati interni dei LLM e oltre 100 caratteristiche di attenzione/probabilità per addestrare classificatori che rilevano attacchi di avvelenamento dei documenti nei sistemi RAG. | Kitploit
Strumenti/GitHubGitHub/yingtaoren/d-scan
Strumenti DifensiviMachine LearningSicurezza dell'IARilevamento di Anomalie
GitHubyingtaoren/d-scan

D-Scan

Analizza gli stati interni dei LLM e oltre 100 caratteristiche di attenzione/probabilità per addestrare classificatori che rilevano attacchi di avvelenamento dei documenti nei sistemi RAG.

Vedi Repository
121119 giorni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

When Context Bites: Rilevare il RAG Poisoning tramite il Collasso dell'Attenzione a Livello di Documento

D-SCAN è un framework di analisi per rilevare attacchi di avvelenamento dei documenti nei sistemi RAG (Retrieval-Augmented Generation). Raccoglie gli stati interni dell'LLM durante la generazione (probabilità dei token e pesi di attenzione), estrae feature multidimensionali e addestra classificatori per distinguere tra documenti recuperati puliti e avvelenati.

1. Installazione e Requisiti

Prerequisiti

  • Python >= 3.9
  • GPU compatibile con CUDA (>= 24GB VRAM consigliati per l'inferenza di un modello con 8B parametri)

Preparazione del Modello

Questo progetto utilizza Llama-3.1-8B-Instruct per impostazione predefinita. Scarica il modello in un percorso locale e aggiorna la variabile MODEL_ID in collect_inner_state.py:

MODEL_ID = "/your/path/to/Llama-3.1-8B-Instruct"

2. Avvio Rapido

Il flusso di lavoro completo consiste in tre passaggi: Raccogliere gli Stati Interni → Calcolare le Feature → Addestrare il Classificatore. La domanda e i documenti recuperati correlati sono forniti in https://huggingface.co/datasets/An998/D-SCAN.

Passaggio 1: Raccogliere gli Stati Interni del Modello

# Update configuration parameters in collect_inner_state.py, then run
python collect_inner_state.py

Passaggio 2: Calcolare le Metriche delle Feature

# Analyze both attack and clean data, compute all features, and save results
python compute_feature.py \
    --attack_dir ./saved_reppl_weights_serial_query1_attack2_2wiki \
    --clean_dir ./saved_reppl_weights_serial_query1_pure1_5_2wiki \
    --output_dir ./analysis_results/2wiki_all \
    --max_attack_samples 3000 \
    --max_clean_samples 3000

Passaggio 3: Addestrare il Classificatore e Valutare

Apri fit_D-SCAN.ipynb ed esegui le celle in sequenza per:

  1. Caricare i dati delle feature generati nel Passaggio 2
  2. Addestrare classificatori Logistic Regression / Random Forest (5-Fold CV)
  3. Valutare le prestazioni di trasferimento sul set di test

3. Dettagli della Pipeline

3.1 Raccolta Dati (collect_inner_state.py)

Per ogni input domanda-documento, l'LLM esegue una generazione multi-campione (predefinito: 10 campioni, temperature=1.0) e raccoglie i seguenti stati interni:

CampoTipoDescrizione
outer_ppl_probsList[Tensor]Probabilità di generazione dei token per ciascun campione
inner_ppl_matrixList[List[Tensor]]Pesi di attenzione sulla sequenza di input a ogni passo di generazione (media sui layer)
doc_rangesDict[str, List[int]]Intervallo di posizioni dei token per ciascun documento nella sequenza di input
generated_sequencesList[List[int]]Sequenze di ID dei token generati per ciascun campione

Parametri di Configurazione Chiave

MODEL_ID = "/path/to/model"     # Model path
NUM_SAMPLES = 10                # Number of samples per question
MAX_NEW_TOKENS = 50             # Maximum generated tokens
TEMPERATURE = 1.0               # Sampling temperature
data_type = 'pure1_5'           # Data type: 'pure1_5' (clean) or 'attack2' (attack)
dataset_name = 'hotpotqa'       # Dataset: 'hotpotqa', '2wiki', 'musique'

Gli output vengono salvati come file data_{batch_id}_reppl.pt e file di statistiche results_stats_*.jsonl.


3.2 Calcolo delle Feature (compute_feature.py)

Estrae 10 categorie con oltre 100 feature dimensionali dagli stati interni raccolti. Il classificatore utilizza queste feature per determinare se esistono documenti avvelenati tra i documenti recuperati per una data query.

Panoramica delle Metriche

#CategoriaNome della Classe# FeatureIdea Centrale
1Statistiche di Probabilità di GenerazionePerplexityMetrics8I documenti avvelenati possono aumentare l'incertezza del modello durante la generazione, riflessa nei cambiamenti della distribuzione di probabilità
2Entropia dell'AttenzioneAttentionEntropyMetrics4Entropia alta = attenzione dispersa = possibile informazione conflittuale; Entropia bassa = attenzione focalizzata
3Concentrazione dell'AttenzioneAttentionConcentrationMetrics8Misura se l'attenzione è concentrata su pochi token tramite rapporto Top-K e coefficiente di Gini
4Densità di Attenzione sui DocumentiDocumentAttentionDensityMetrics6Somma dell'attenzione divisa per la lunghezza del documento, eliminando il bias di lunghezza nell'allocazione dell'attenzione
5Coerenza Multi-CampioneSampleConsistencyMetrics4Sotto avvelenamento, i pattern di attenzione tra i campioni possono essere incoerenti (similarità coseno, divergenza JS)
6Dinamica dell'AttenzioneAttentionDynamicsMetrics4Frequenza dei cambi di documento dominante e ampiezza della variazione di entropia durante la generazione
7Fluttuazione dell'Attenzione a Livello di TokenTokenLevelAttentionMetrics16Stabilità dell'attenzione a ogni posizione di token di input attraverso i passi di generazione (std, entropia)
8Statistiche Approfondite sulla Probabilità della RispostaAnswerProbabilityMetrics18Quantili di probabilità, rapporti di token ad alta/bassa probabilità, log probabilità, perplessità, ecc.
9Dinamica della ProbabilitàProbabilityDynamicsMetrics14Pendenza del trend, autocorrelazione, volatilità, rapporto di picchi nella sequenza di generazione
10Coerenza di Probabilità tra CampioniCrossSampleProbabilityConsistencyMetrics13Similarità coseno, correlazione di Pearson, MSE, indice di divergenza tra i campioni

Descrizioni Dettagliate delle Metriche

1. PerplexityMetrics (Statistiche di Probabilità di Generazione)

Calcolate da outer_ppl_probs (probabilità di ciascun token generato):

  • ppl_mean_prob: Probabilità media su tutti i token generati
  • ppl_std_prob: Deviazione standard della probabilità
  • ppl_min_prob: Probabilità minima (incertezza estrema)
  • ppl_low_prob_ratio: Rapporto di token a bassa probabilità (<0.1)
  • ppl_cross_sample_var: Varianza delle probabilità medie tra i campioni
  • ppl_coef_variation: Coefficiente di variazione (CV = std/mean)
  • ppl_skewness: Asimmetria della distribuzione di probabilità
  • ppl_kurtosis: Curtosi della distribuzione di probabilità

2. AttentionEntropyMetrics (Entropia dell'Attenzione)

Calcolate da inner_ppl_matrix (pesi di attenzione a ogni passo):

  • attn_entropy_mean/std/max: Media, deviazione standard e massimo dell'entropia della distribuzione di attenzione
  • attn_entropy_cv: Coefficiente di variazione dell'entropia dell'attenzione

3. AttentionConcentrationMetrics (Concentrazione dell'Attenzione)

  • attn_top5/10/20_ratio_mean/std: Quota di attenzione catturata dai token Top-K%
  • attn_gini_mean/std: Coefficiente di Gini della distribuzione di attenzione (misura di disuguaglianza)

4. DocumentAttentionDensityMetrics (Densità di Attenzione sui Documenti)

Scarica lo strumento