
Sicurezza pre-installazione per agenti AI, pacchetti npm e server MCP. Analisi statica locale zero-dipendenze; le scansioni normali non eseguono mai il codice dei pacchetti.
Ispeziona un pacchetto npm o un server MCP prima di installarlo o di connetterti ad esso, e
ottieni un verdetto deterministico e basato su prove: SAFE, REVIEW, o BLOCK.
Analisi statica locale, a zero dipendenze — le scansioni normali non eseguono mai il codice del pacchetto.
Sito web · Documentazione · Calibrazione · Segnala un bug
Esecuzioni reali: guard approva [email protected], poi blocca un campione modellato sul compromesso del 2024 di @solana/web3.js.
1. Avvio rapido · 2. Cosa scansiona e rileva · 3. Verdetti · 4. Utilizzo · 5. Integrazioni · 6. Come si confronta · 7. Documentazione
Gli assistenti di codifica AI installano pacchetti e si connettono a server MCP a velocità
macchina, spesso senza che un umano legga il codice. Sonatype ha identificato più di
454.600 nuovi pacchetti open-source dannosi negli ecosistemi monitorati nel
2025, oltre il 99% dei quali su npm
(Sonatype).
npm audit chiede esiste una CVE nota?; pkgxray chiede anche cosa fa
davvero il codice — prima che qualsiasi cosa venga installata.
1. Scansiona un pacchetto noto come benigno (non è necessaria l'installazione di pkgxray):
npx --yes [email protected] guard npm:[email protected]
Prepara il tarball in quarantena ed esegue i controlli statici e di supply chain
— niente npm install, niente script di ciclo di vita, nessun codice di pacchetto eseguito.
Decision: SAFE Grade: A+ (99/100)
No high- or medium-risk indicators were found in the provided evidence.
Notes:
- INFO npm-vs-github-clean — npm tarball matches the linked GitHub repo at the
published version. (15/16 files match GitHub @4.21.0)
2. Leggi il verdetto:
SAFE non è la prova che un pacchetto sia innocuo; l'analisi statica non può vedere un
payload scaricato solo a runtime. Vedi il modello di minaccia.
3. Vedi un BLOCK sul fixture inerte fornito:
npx --yes [email protected] --file examples/onboarding-malicious.json --format markdown
Il fixture è testo sorgente inerte che modella una lettura di chiave SSH a stringa spezzata e
l'exfiltrazione — non viene mai eseguito. Restituisce BLOCK (exit 2) con il file e le prove citati.
4. Aggiungilo al tuo flusso di lavoro — recheck e CI, MCP, gate di installazione Hookshot.
Due modelli di esecuzione. Le scansioni predefinite
guardeauditsono statiche — il codice del pacchetto non viene mai eseguito. L'enumerazione di un server MCP può avviarlo emcp-proxylo esegue dietro un gate; l'opzionalecanaryè l'unica eccezione deliberata che esegue il pacchetto in una sandbox per confermarne il comportamento — può confermare la malizia ma non provare mai che un pacchetto sia sicuro. Confine completo: SECURITY.md.
Scansioni — pkgxray guard npm:name@version, github:owner/repo, una
directory locale, interi file di lock (npm, yarn, pnpm), server MCP ed estensioni
per agenti AI.
Rilevamenti — furto di credenziali (incl. percorsi a frammenti separati), cloud
raccolta di metadati dell'istanza e di secret store, prompt injection, contrabbando Unicode
payload base64 e loader di stage-2, esfiltrazione, persistenza
(profilo di shell, scheduler del sistema operativo e workflow CI/CD iniettati), dropper
auto-eliminanti, replicazione worm nei registry (npm publish durante l'installazione),
esecuzione offuscata di argomenti calcolati, CVE note (via OSV, prima del
download), divergenza degli artefatti npm↔GitHub, aggiornamenti trojanizzati (recheck) e abuso
della superficie di capacità MCP.
La matrice di copertura completa — e il noto punto cieco del download successivo — è nel modello di minaccia; una tabella di confronto affiancato è sul sito web.
| Verdetto | Cosa fare |
|---|---|
SAFE | Installa. Solo safe promuove fuori dalla quarantena per impostazione predefinita. |
REVIEW | Ispeziona la copia in quarantena prima di promuoverla. |
BLOCK | Non installare. Ogni rilevamento indica il file e le prove. |
I codici di uscita sono stabili e adatti alla CI: 0 safe/allow · 2 block ·
3 review.
pkgxray guard npm:[email protected] [--format json] # vet a package before install
pkgxray mcp --package npm:[email protected] npx some-mcp-server # vet an MCP server; --recheck catches the rug-pull
pkgxray audit package-lock.json [--deep] # also: yarn.lock, pnpm-lock.yaml, package.json
pkgxray recheck package-lock.json # scheduled: non-zero only on a regression
Un .pkgxray.json opzionale (letto da ogni superficie) regola la policy; configurazione zero
significa massima severità. Le CVE non possono mai essere disattivate, ogni allentamento viene
stampato e una scansione che va in errore fallisce in modalità chiusa verso review. Schema e invarianti:
configuration.md · .pkgxray.example.json.
Un solo motore dietro ogni punto di ingresso. "Funziona con" significa una guida di configurazione documentata, non un'integrazione approvata dal fornitore.
Esegui pkgxray insieme a npm audit / OSV-Scanner, non al posto loro —
rispondono a "CVE nota?". Rispetto agli strumenti della stessa categoria (verifica comportamentale
della supply chain — Socket.dev, OpenSSF Package Analysis, Cisco MCP Scanner), il confronto
completo delle capacità è in docs/comparison.md e sul
sito web.
La calibrazione a zero falsi blocchi euristici sui 1000 pacchetti più scaricati è protetta da regressioni in CI (ambito e metodologia), e le esecuzioni pubblicate sono su pkgxray.ca/stats. Questa affermazione è limitata all'insieme più installato — non è un'affermazione di zero falsi blocchi su ogni pacchetto.
Inizia dall'indice della documentazione.
npm test # zero-dep node --test suite
npm run benchmark # calibration corpus: precision/recall + 0-false-block gate
npm run validate:website # regenerate + validate the calibration pages
Le pull request sono benvenute — leggi CONTRIBUTING.md e il Codice di condotta. Segnala le vulnerabilità privatamente secondo SECURITY.md. Le release vengono pubblicate su npm con provenienza (attestazione SLSA), controllate da test, benchmark di calibrazione e dalla guardia di supply chain di pkgxray stessa.
| Verdetto | Exit | Significato |
|---|
SAFE | 0 | Nessun indicatore ad alto o medio rischio; la policy predefinita consente la promozione. |
REVIEW | 3 | Le prove sono incomplete o una capacità privilegiata richiede una revisione umana. |
BLOCK | 2 | Prove citate ad alta gravità — rifiuta o indaga. |
| Dove | Cosa fa | Guida |
|---|
| Agenti di codifica — Codex, Claude Code, Cursor, Windsurf | Controlla le installazioni ed espone gli strumenti di audit all'agente | coding-agents.md |
| Client MCP | Verifica un server prima della connessione; esegui pkgxray stesso come server MCP | mcp.md |
| GitHub Actions / CI | Fa fallire una build quando una dipendenza viola la policy | github-actions.md |
| Gate di installazione — Hookshot | Esegue guard su ogni pacchetto che un agente tenta di installare | examples/hookshot/ |
| Gate MCP runtime | Funge da proxy per un server MCP live e controlla ogni chiamata di tool | mcp-proxy |
| Monitoraggio dipendenze | Ri-verifica le dipendenze installate e pre-verifica gli aggiornamenti secondo una pianificazione | recheck |
| Documenti | Cosa copre |
|---|
| architecture.md · design.md | Pipeline, superfici, principi |
| threat-model.md | Ambito, punti ciechi, posizione sulla prompt injection |
| mcp.md · mcp-registry.md | Verifica MCP, proxy runtime, voce di registry |
| canary-threat-model.md | Il canary comportamentale opzionale (opt-in) |
| configuration.md · reference.md | .pkgxray.json, policy di gravità, recheck, server cache |
| benchmark.md · comparison.md | Calibrazione e confronto |
| compatibility.md · json-schema.md | Contratto 1.0, schema --format json |