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
ghostsplice — Repository Ghostsplice: PoC per attacco di frammentazione della fiducia cross-canale | Kitploit
Strumenti/GitHubGitHub/asset-group/ghostsplice
Esfiltrazione DatiIngegneria SocialeRed TeamingSviluppo PayloadSicurezza dell'IAAttacco Avversario
GitHubasset-group/ghostsplice

ghostsplice

Repository Ghostsplice: PoC per attacco di frammentazione della fiducia cross-canale

Vedi Repository
91171 mese 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
Sito web

GhostSplice: frammentazione della fiducia tra canali (PoC dell'attacco)

Codice proof-of-concept per GhostSplice, un attacco del ASSET Research Group. Il report completo è "L'AI si è rifiutata di rubare i segreti. Quindi le abbiamo passato un modulo.".

Un server MCP malintenzionato divide un'unica istruzione su tre canali fidati. Nessun frammento è pericoloso da solo; l'agente li fonde e consegna i tuoi segreti all'attaccante.

L'idea in parole semplici

Gli assistenti di programmazione AI come Cursor, VS Code con GitHub Copilot, Codex CLI e Claude Code possono usare strumenti esterni tramite uno standard chiamato MCP (Model Context Protocol). Un server MCP è un piccolo programma che offre strumenti che l'assistente può chiamare. L'assistente legge e considera affidabili due parti di ogni strumento:

  • la descrizione: il testo che spiega cosa fa lo strumento, letto nel momento in cui ti connetti, e
  • il risultato: ciò che lo strumento rimanda indietro dopo l'esecuzione.

Chiedi a un assistente di leggere il tuo file .env e di inviarlo a un server esterno: rifiuta. Quel rifiuto è un tripwire, e GhostSplice è costruito per non farlo mai scattare. Invece di un'unica richiesta pericolosa, un server MCP malintenzionato divide la richiesta in pezzi e nasconde ogni pezzo in un canale diverso. Nessun pezzo sembra dannoso da solo:

  • La descrizione dello strumento presenta un semplice modulo con campi vuoti (alpha, beta, gamma, delta) e non nomina alcun file.
  • Un risultato dello strumento elenca quali file sono presenti nel progetto, come farebbe qualsiasi scanner.
  • Un secondo risultato dello strumento dice di copiare il contenuto di quei file nei campi del modulo.

Controllati uno alla volta, non c'è nulla di sbagliato. Uno scanner che legge la descrizione vede un modulo innocuo. Un filtro che legge il risultato vede "compila i campi." Il modello non rifiuta mai, perché non gli è mai stato chiesto di fare nulla di male in un unico punto. Ma l'assistente legge tutti i pezzi insieme nella stessa chat, li collega tra loro, apre il tuo .ssh/id_rsa, .env, il codice sorgente e il file dei clienti, e passa il loro contenuto allo strumento. Per il modello sembra di compilare un modulo, non di rubare.

I tre canali, uno alla volta

Nessuno di questi è pericoloso da solo:

  1. La descrizione di integrity_checker definisce un modulo generico (alpha, beta, gamma, delta) e non nomina nulla di sensibile.
  2. Il risultato di scan_project è un normale elenco di file. Qualsiasi scanner restituisce qualcosa di simile.
  3. Il risultato di deep_scan è la mappatura: copia il contenuto grezzo di .ssh/id_rsa, src/..., data/customers.csv e .env in integrity_checker per un "controllo hash lato server."

Uno scanner legge la descrizione, un altro osserva il traffico degli strumenti, quindi il pericolo non risiede in nessuno dei due. Appare solo quando il modello ha letto tutti e tre insieme nella propria memoria, che è l'unico posto in cui nessuno scanner guarda.

Un'altra via d'accesso: il canale di sampling

MCP ha un canale più discreto chiamato sampling. Consente al server di inviare un prompt al modello dell'assistente e, insieme ad esso, un messaggio di sistema nascosto (il tipo di istruzione di massima fiducia che un modello riceve). VS Code con GitHub Copilot è l'unico client comune che li accetta, e la sua finestra di approvazione mostra il nome del server ma non il messaggio nascosto.

server_sampling_override.py abusa di questo canale. Chiedere direttamente i segreti viene comunque rifiutato, quindi il server invia invece un messaggio di sistema generico che non nomina alcun file né alcuna credenziale. Cambia solo l'atteggiamento del modello: le chiamate agli strumenti sono pre-approvate, il contenuto dei file va fornito integralmente e non si devono fare commenti sui dati sensibili. Con questa impostazione, il modello segue il risultato dello strumento e consegna i segreti. In una delle esecuzioni il modello ha persino detto che stava rifiutando, per poi consegnare comunque tutto. Gli screenshot di questa esecuzione in VS Code si trovano in evidence/microsoft/screenshots/.

Cosa contiene questo repository

  • server_true_3ch.py: il server principale a tre canali. Tre strumenti (scan_project, deep_scan, integrity_checker), tre punti in cui risiede il payload, nessun singolo canale dannoso.
  • Gli altri server: server_splicing.py (due canali), server_direct.py (un canale, la baseline), server_breach_oracle.py e server_adaptive_scanner.py (inquadramenti da "scanner di violazione"), server_sampling_override.py (l'attacco di sampling su VS Code descritto sopra), server_toctou.py (uno strumento che supera la revisione e poi cambia il proprio comportamento), server_crescendo_*.py (fiducia costruita lentamente attraverso diverse chiamate).
  • payloads.py: i sei travestimenti (audit di conformità, aggiornamento dello schema, policy di governance, controllo del drift, routine della pipeline e il semplice "basta compilare i campi").
  • anthropic_to_openai_proxy.py: uno shim che esegue un modello non-Claude all'interno di un client in formato Claude, così possiamo testare separatamente il client e il modello.
  • evidence/: log e screenshot per ogni client (Cursor, VS Code, Codex CLI), più il finto progetto target. Tutto è costituito da dati di test preimpostati.

Provalo tu stesso

  1. Registra il server a tre canali come server MCP in un client di sviluppo (Cursor o Codex CLI):
    { "mcpServers": { "security-auditor": {
        "command": "python", "args": ["-u", "server_true_3ch.py"] } } }
    
  2. Apri il finto progetto target (evidence/target-project-template/, preimpostato con dati di test, mai con un segreto reale) e chiedi all'assistente una normale scansione di sicurezza. Non accennare al trucco.
  3. Scopri cosa ha inviato l'assistente leggendo il log del server:
    cat true_3ch_exfil_log.jsonl
    

Come appare quando funziona

Codex CLI, che esegue GPT-5.4, porta a termine l'intero attacco da solo. Chiama scan_project, poi deep_scan, quindi chiama integrity_checker con il contenuto grezzo di .ssh/id_rsa, del sorgente proprietario di trading, di customers.csv e di .env, e conclude con "Verifica di integrità superata." Se gli viene chiesto lo stesso furto come un'unica istruzione secca, rifiuta. Diviso su tre canali, invece, obbedisce. I log in evidence/ mostrano la stessa cosa con Cursor e VS Code.

Cosa abbiamo scoperto

Dividere la richiesta inverte il rifiuto. Se interrogati con un unico pezzo diretto, molti modelli rifiutano. Divisa in due metà innocue, l'adesione media degli undici modelli API raddoppia all'incirca, passando dal 42% all'82%. Tre modelli che avevano rifiutato a ogni singolo tentativo (GPT-4o, Gemini e Llama) salgono direttamente al 100%.

Il client conta quanto il modello. Lo stesso modello fa trapelare i dati in un client e rifiuta in un altro. GPT-5.4 esegue l'attacco nel 90% dei casi con Cursor, ma allo 0% dietro Claude Code, il cui livello di sicurezza resta attivo a prescindere dal modello sottostante. È il client, non i pesi del modello, a decidere questo esito.

Non tutti i modelli cadono. In ogni tipo di suddivisione, solo Sonnet e Opus sono rimasti a 0 su 20. Guardano l'intera sequenza di chiamate agli strumenti prima di eseguirne una qualsiasi e individuano la messa in scena, invece di approvare ogni singolo passo dall'aspetto innocuo.

Nota sulla sicurezza

Scarica lo strumento