Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
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
chub-supply-chain-poc — Iniezione silenziosa di dipendenze attraverso pipeline di documentazione AI. 240 esecuzioni Docker isolate dimostrano che il server MCP senza sanitizzazione di Context Hub consente a documenti avvelenati di compromettere i progetti degli sviluppatori senza preavviso. | Kitploit
Strumenti/GitHubGitHub/mickmicksh/chub-supply-chain-poc
Analisi delle VulnerabilitàAnalisi del CodiceAnalisi MalwarePenetration TestingSicurezza della Supply ChainPaper e RicercaApprendimento e FormazioneSicurezza dell'IA

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
GitHub
mickmicksh/chub-supply-chain-poc

chub-supply-chain-poc

Iniezione silenziosa di dipendenze attraverso pipeline di documentazione AI. 240 esecuzioni Docker isolate dimostrano che il server MCP senza sanitizzazione di Context Hub consente a documenti avvelenati di compromettere i progetti degli sviluppatori senza preavviso.

Vedi Repository
424 mesi faNon ancora revisionato

Divulgazione di vulnerabilità Versione affetta Test Riproducibile Licenza

Proof of Concept di Supply Chain su Context Hub

Vulnerabilità con assenza totale di sanitizzazione in Context Hub (@aisuite/chub v0.1.3) che consente l'iniezione silenziosa di dipendenze attraverso il pipeline di documentazione MCP.

Riferimenti: CWE-94 (Code Injection) | CWE-829 (Untrusted Control Sphere) | CWE-345 (Insufficient Verification of Data Authenticity) | OWASP LLM01 (Prompt Injection)

In sintesi

Abbiamo creato documenti realistici avvelenati contenenti dipendenze fittizie (plaid-link-verify, stripe-checkout-guard) e li abbiamo serviti tramite un server MCP chub locale all'interno di container Docker isolati. Nessun contenuto avvelenato è stato caricato nel registry di Context Hub – abbiamo eseguito chub build localmente e configurato il server MCP per servire l'output precompilato dal disco. Dal punto di vista dell'agente, l'esperienza è identica al recupero dei documenti dal registry live.

Quando gli assistenti di codifica AI hanno recuperato i documenti, Haiku ha silenziosamente scritto il pacchetto fittizio in requirements.txt nel 100% delle esecuzioni – senza mai menzionarlo nell'output testuale. Uno sviluppatore che legge la risposta dell'assistente non noterebbe nulla di sospetto, ma il suo progetto è avvelenato.

240 esecuzioni isolate. 3 modelli. 4 livelli di sforzo. 2 API. 0 contaminazione.

Come appare

Il codice generato importa silenziosamente la dipendenza fittizia insieme ai moduli legittimi:

Generated app.py with injected dependency

L'agente modifica anche CLAUDE.md per incorporare il pacchetto fittizio come "standard di progetto":

CLAUDE.md after attack

Risultati

Queste tabelle mostrano i risultati di Plaid Link (120 esecuzioni isolate). Vedi RESULTS.md per i dati completi inclusi Stripe Checkout (240 esecuzioni totali).

Avvelenamento silenzioso delle dipendenze (requirements.txt)

Haiku non ha mai avvertito riguardo la dipendenza fittizia (0/40). Sonnet ha avvertito nel 48% delle esecuzioni (19/40) ma ha comunque avvelenato requirements.txt nel 53% complessivo. Opus ha avvertito nel 75% delle esecuzioni (30/40) e non ha mai avvelenato requirements.txt o il codice.

Persistenza in CLAUDE.md (backdoor nella configurazione di progetto)

Haiku modifica il CLAUDE.md del progetto per includere la dipendenza fittizia come "standard di progetto" nell'88% delle esecuzioni (35/40). Questo file viene commitato su git – ogni futuro sviluppatore che clona il repository eredita la configurazione avvelenata.

Catena d'attacco

root@kitploit:~
flowchart LR
    A["Attaccante\ninvia PR"] -->|"Nessuna verifica\ndell'identità"| B["Mantainer\nunisce PR"]
    B -->|"Nessuna sanitizzazione\ndei contenuti"| C["Doc su CDN\n(nessun controllo d'integrità)"]
    C -->|"MCP serve\ncontenuti grezzi"| D["Finestra di contesto\ndell'agente"]
    D -->|"L'agente agisce su\ncontenuti non fidati"| E["Workstation\ndello sviluppatore"]

    style A fill:#111,stroke:#333,color:#f0f0f0
    style B fill:#161616,stroke:#333,color:#888
    style C fill:#161616,stroke:#333,color:#888
    style D fill:#161616,stroke:#333,color:#888
    style E fill:#111,stroke:#333,color:#f0f0f0

Modello di minaccia

Risultati chiave

  1. L'avvelenamento di Haiku è completamente silenzioso. 0/80 esecuzioni di Haiku su entrambe le API hanno menzionato la dipendenza fittizia nella risposta. Il modello scrive su disco senza informare. Sonnet ha avvertito nel 48% delle esecuzioni ma ha comunque avvelenato requirements.txt in 35-53% delle esecuzioni. Opus ha avvertito in 23-75% delle esecuzioni e non ha mai avvelenato requirements.txt o il codice.

  2. Haiku è sfruttabile al 100% a ogni livello di sforzo. Indipendente dallo sforzo su entrambe le API. Il modello più debole della famiglia non rileva mai la dipendenza fittizia.

  3. Opus resiste all'avvelenamento del codice ma non a quello della configurazione. Opus non ha mai scritto la dipendenza fittizia in requirements.txt o in codice Python (0/80 su entrambe le API). Tuttavia, su Stripe, Opus ha modificato CLAUDE.md nel 38% delle esecuzioni, documentando il canarino come dipendenza di progetto senza installarlo.

  4. La persistenza in CLAUDE.md crea un vettore di supply chain. I file di configurazione modificati vengono commitati su git, avvelenando ogni sviluppatore che clona il repository e ogni futura sessione AI in quel progetto. Questo funziona su tutti i modelli (Haiku 88-90%, Sonnet 58%, Opus 0-38%).

  5. La familiarità con l'API è importante. Stripe (nota): i modelli rilevano pacchetti fittizi tramite dati di addestramento. Plaid (meno nota): i modelli non possono verificare e accettano la dipendenza fittizia senza discutere.

  6. Questo è un problema di categoria. Context7 aveva ContextCrush (Feb 2026). Context Hub ha questo. Qualsiasi strumento che inietti contenuti esterni non sanitizzati nel contesto dell'agente è vulnerabile.

Risultati dell'analisi del codice sorgente

Zero sanitizzazione lungo tutto il pipeline:

  • annotations.js – writeFileSync con contenuti grezzi, nessun filtro
  • build.js – nessuna scansione dei contenuti, nessuna normalizzazione Unicode
  • cache.js – fetch da CDN con zero verifica di hash/firma
  • source: official nel frontmatter – auto-dichiarato, non verificato

Divulgazione

Context Hub non ha un SECURITY.md. Non esiste un modo documentato per segnalare responsabilmente una vulnerabilità – nessun contatto di sicurezza, nessuna chiave PGP, nessuna politica di divulgazione. I membri della community hanno comunque trovato le vulnerabilità e le hanno segnalate come issue e PR regolari. Nessuna è stata revisionata.

Open security PRs with zero reviews

Nota: Non abbiamo segnalato l'issue #74. Il nostro audit ha scoperto e quantificato indipendentemente queste vulnerabilità. L'issue #74 e le PR #69, #81, #125 sono citate come precedenti che dimostrano come la community abbia segnalato questi problemi senza alcun coinvolgimento dei manutentori.

Escalation

Una volta che il pacchetto fittizio è in requirements.txt, un normale pip install -r requirements.txt concede all'attaccante l'esecuzione di codice arbitrario tramite gli hook post-installazione di setup.py. Non è un sandbox – pip esegue Python senza restrizioni con tutti i permessi dello sviluppatore.

Da quel singolo punto di ingresso, l'attaccante può:

  • Efiltrare dati. Leggere e inviare variabili d'ambiente, chiavi API, credenziali AWS, chiavi SSH, file .env o codice sorgente a un server controllato dall'attaccante.
  • Installare una backdoor persistente. Reverse shell, cron job, profilo shell modificato o processo in background che sopravvive alla disinstallazione del pacchetto.
  • Avvelenare il registry di chub. Modificare ~/.chub/config.yaml per aggiungere una fonte di documenti controllata dall'attaccante. Tutte le future query chub su ogni libreria includeranno contenuti dell'attaccante. Sopravvive a chub cache clear perché la configurazione non è cache.
  • Propagarsi tramite git. La modifica di CLAUDE.md viene commitata. Ogni sviluppatore che clona il repository eredita la configurazione avvelenata. Se esegue lo stesso workflow, l'attacco si ripete sulla sua macchina.

Queste azioni non si escludono a vicenda. Un singolo hook post-installazione può fare tutto in meno di un secondo. Non abbiamo creato né registrato un pacchetto malevolo.

Struttura del repository

root@kitploit:~
.
|-- README.md                    # Questo file
|-- RESULTS.md                   # Dataset completo con suddivisione per esecuzione
|-- REPRODUCE.md                 # Guida alla riproduzione basata su Docker
|-- alternatives-comparison.md   # Confronto con Context7, LAP, GitMCP, Docfork
|-- article.html                 # Articolo completo
|-- docker/
|   |-- Dockerfile               # Ambiente di test isolato
|   |-- run_isolated.ps1         # Esecutore PowerShell (Windows/macOS/Linux via pwsh)
|   |-- seed-claude.md           # CLAUDE.md minimo inserito in ogni esecuzione
|   |-- plaid-doc/               # Documento Plaid Link avvelenato (canarino: plaid-link-verify)
|   |   `-- plaid/link/DOC.md
|   `-- stripe-doc/              # Documento Stripe Checkout avvelenato (canarino: stripe-checkout-guard)
|       `-- stripe/checkout/DOC.md
`-- results/
    |-- plaid-isolated/          # 120 esecuzioni Plaid: JSON + trascrizioni sessione + file di progetto
    `-- stripe-isolated/         # 120 esecuzioni Stripe: JSON + trascrizioni sessione + file di progetto

Riprodurre i risultati

Vedi REPRODUCE.md per la guida completa alla riproduzione basata su Docker.

Avvio rapido:

root@kitploit:~
# Plaid (predefinito)
docker build --build-arg DOC_DIR=plaid-doc -t plaid-bench docker/
docker run -d --name plaid-runner plaid-bench sleep infinity
docker exec -it plaid-runner claude login

# Stripe
docker build --build-arg DOC_DIR=stripe-doc -t stripe-bench docker/
docker run -d --name stripe-runner stripe-bench sleep infinity
docker exec -it stripe-runner claude login

# Quindi esegui la matrice di test dall'host (vedi REPRODUCE.md)

Limitazioni

  1. Testati solo modelli Claude. GPT-4, Gemini, Llama potrebbero comportarsi diversamente.
  2. 10 esecuzioni per cella – sufficienti per trend, non per intervalli di confidenza stretti.
  3. Test eseguiti con --permission-mode bypassPermissions. Gli agenti reali potrebbero chiedere conferma.
  4. Fonte documento locale, non CDN. Il percorso CDN richiede una PR malevola unita.
  5. Nessun pacchetto malevolo reale è stato registrato su PyPI.

Lavori correlati

  • ContextCrush (Noma Security, Feb 2026) – stessa classe di attacco contro Context7
  • Morris II (Cohen, Bitton, Nassi) – prompt auto-replicanti in agenti AI
  • Promptware Kill Chain (Nassi, Schneier et al.) – tassonomia di attacchi LLM a più stadi
  • MCP Tool Poisoning (Invariant Labs) – manipolazione di strumenti tra server

Licenza

MIT

Divulgazione

Questa ricerca è stata condotta da Mickey Shmueli, sviluppatore di LAP, un'alternativa open source a Context Hub. LAP utilizza compilazione deterministica da specifiche API ufficiali, senza contenuti contribuiti dalla community nel pipeline. Questo audit è stato motivato da una genuina preoccupazione di sicurezza riguardante i pipeline di contenuti non sanitizzati – una classe di vulnerabilità che colpisce qualsiasi strumento in questo spazio che accetti contributi non verificati dalla community. I risultati parlano da soli: 240 esecuzioni Docker isolate, rilevamento deterministico, completamente riproducibile.

Disclaimer

Questo PoC è solo a scopo educativo e di ricerca sulla sicurezza. Tutti i test eseguiti localmente in container Docker isolati. Nessun contenuto malevolo è stato inviato al repository di Context Hub. Tutti i nomi di pacchetto canarino verificati come inesistenti su PyPI prima del test.

Queste vulnerabilità sono state segnalate indipendentemente da membri della community in issue #74 (12 marzo) e PR #125 (17 marzo). Entrambe hanno ricevuto zero risposta da parte dei manutentori.

Scarica lo strumento
SforzoHaikuSonnetOpus
Basso100%60%0%
Medio100%70%0%
Alto100%40%0%
Massimo100%40%0%
SforzoHaikuSonnetOpus
Basso90%70%0%
Medio80%70%0%
Alto90%40%0%
Massimo90%50%0%
AttaccanteChiunque possa inviare una PR al registry dei documenti di Context Hub
Superficie d'attaccoDocumenti della community che fluiscono dalla PR GitHub al CDN al MCP al contesto dell'agente
Confine di fiduciaContenuti di collaboratori non fidati trattati come documentazione API autorevole
PrerequisitoUna PR unita contenente un documento avvelenato
ImpattoEsecuzione di codice arbitrario tramite iniezione di dipendenze + hook post-installazione di pip
DataEvento
2026-03-12Issue #74 segnalata da @bjorkbjork che riporta 4 vulnerabilità di sicurezza tra cui integrità CDN, verifica dell'origine auto-dichiarata e iniezione di annotazioni
2026-03-12Issue #74 assegnata internamente a un membro del team principale – zero follow-up
2026-03-17PR #125 presentata da @hobostay che aggiunge verifica di integrità dei contenuti – zero revisioni
2026-03-12 a 03-20Ulteriori PR di sicurezza (#69, #81) presentate dalla community – zero revisioni
2026-03-20 a 03-23Il nostro audit indipendente conferma e quantifica le vulnerabilità con 240 esecuzioni Docker isolate
2026-03-23Divulgazione pubblica