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.

FeedContattoPrivacy© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
supply-chain-monitor — Monitor automatico di sicurezza della supply chain che interroga i registri PyPI e npm, confronta le nuove release con le precedenti e utilizza l'analisi LLM per rilevare modifiche di codice dannose con avvisi su Slack. | Kitploit
Strumenti/GitHubGitHub/elastic/supply-chain-monitor
Analisi delle VulnerabilitàAnalisi del CodiceAnalisi MalwareThreat IntelligenceSicurezza della Supply ChainRisposta agli Incidenti
GitHubelastic/supply-chain-monitor

supply-chain-monitor

Monitor automatico di sicurezza della supply chain che interroga i registri PyPI e npm, confronta le nuove release con le precedenti e utilizza l'analisi LLM per rilevare modifiche di codice dannose con avvisi su Slack.

Vedi Repository
52961706 mesi faRevisionato da Kitploit

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

Supply Chain Monitor

Licenza: MIT

Monitoraggio automatizzato dei principali pacchetti PyPI e npm per compromissioni della supply chain. Interroga entrambi i registry per nuove release, confronta ogni release con la precedente e utilizza un LLM (tramite Cursor Agent CLI) per classificare le differenze come benigne o malevole. I risultati malevoli attivano un avviso su Slack.

Entrambi gli ecosistemi sono monitorati per impostazione predefinita. Usa --no-pypi o --no-npm per disabilitarne uno.

Come funziona

Ogni ecosistema esegue il proprio thread di polling ma condivide la pipeline di analisi e notifica.

         ┌─── PyPI ──────────────────────┐   ┌─── npm ───────────────────────┐
         │                               │   │                               │
         │ changelog_since_serial()      │   │ CouchDB _changes feed         │
         │       │                       │   │       │                       │
         │       ▼                       │   │       ▼                       │
         │  ┌────────────┐               │   │  ┌────────────┐               │
         │  │ Tutti gli  │─┐             │   │  │ Tutte le   │─┐             │
         │  │ eventi PyPI│ │             │   │  │ modifiche  │ │             │
         │  └────────────┘ ▼             │   │  │ npm        │ │             │
         │ hugovk ──► Watchlist          │   │  └────────────┘ ▼             │
         │       │                       │   │ download-counts ─► Watchlist  │
         │ solo eventi "new release"     │   │ nuove versioni dall'ultimo    │
         └───────────────┬───────────────┘   │ epoch                         │
                         │                   └───────────────┬───────────────┘
                         ▼                                   ▼
               ┌───────────────────┐               ┌───────────────────┐
               │ Scarica vecchia + │               │ Scarica vecchia + │
               │ nuova (sdist +    │               │ nuova (tarball)   │
               │ wheel)            │               └───────────────────┘
               └───────────────────┘
                         │                                   │
                         └─────────────────┬─────────────────┘
                                           ▼
                                   ┌───────────────┐
                                   │ Report diff   │
                                   │ unificato (.md)│
                                   └───────┬───────┘
                                           ▼
                                   ┌───────────────┐  ◄── Analisi LLM
                                   │ Cursor Agent  │      (sola lettura)
                                   │ CLI (ask mode)│
                                   └───────┬───────┘
                                           │
                                       verdetto?
                                           │
                                 malevolo  │
                                           ▼
                                   ┌───────────────┐
                                   │ Avviso Slack  │
                                   └───────────────┘

Obiettivi di rilevamento

L'analisi LLM è istruita per cercare:

  • Codice offuscato (base64, exec, eval, XOR, stringhe codificate)
  • Chiamate di rete verso host imprevisti
  • Scritture su filesystem in posizioni di avvio/persistenza
  • Spawn di processi e comandi shell
  • Steganografia o occultamento di dati in file multimediali
  • Esfiltrazione di credenziali e token
  • Indicatori di typosquatting

Prerequisiti

  • Python 3.9+ — installa le dipendenze runtime con pip install -r requirements.txt (la libreria standard copre la maggior parte dello strumento; requests è usata per i caricamenti su Slack)
  • Cursor Agent CLI — il binario agent standalone, non l'IDE

Installazione di Cursor Agent CLI

Windows (PowerShell):

irm 'https://cursor.com/install?win32=true' | iex

macOS / Linux:

curl https://cursor.com/install -fsS | bash

Verifica con:

agent --version

Devi essere autenticato con Cursor (agent login o imposta CURSOR_API_KEY).

Configurazione Slack

Inserisci il tuo token bot Slack in etc/slack.json:

{
    "url": "https://hooks.slack.com/services/...",
    "bot_token": "xoxb-...",
    "channel": "C01XXXXXXXX"
}

Il bot necessita dell'ambito chat:write sul canale di destinazione. Il campo channel è l'ID del canale Slack dove vengono pubblicati gli avvisi.

Avvio rapido

# Passaggio singolo: analizza le release degli ultimi ~10 minuti
python monitor.py --once

# Continuo: monitora i primi 1000 pacchetti (entrambi gli ecosistemi), polling ogni 5 min
python monitor.py --top 1000 --interval 300

# Produzione: monitora i primi 15000, avvisa su Slack
python monitor.py --top 15000 --interval 300 --slack

# Solo npm, primi 5000
python monitor.py --no-pypi --npm-top 5000

# Solo PyPI
python monitor.py --no-npm

Panoramica dei file

FileScopo
monitor.pyOrchestratore principale — esegue il polling di PyPI + npm, diff, analisi, notifica (thread paralleli)
pypi_monitor.pyPoller standalone del changelog PyPI (usato per esplorazione)
package_diff.pyScarica e confronta due versioni di qualsiasi pacchetto PyPI o npm
analyze_diff.pyInvia un diff a Cursor Agent CLI, analizza il verdetto
top_pypi_packages.pyRecupera e elenca i primi N pacchetti PyPI per conteggio download
slack.pyClient API Slack (SendMessage, PostFile)
etc/slack.jsonCredenziali bot Slack
last_serial.yamlStato di polling persistito (serial PyPI + sequence/epoch npm)
logs/File di log giornalieri (monitor_YYYYMMDD.log)

Dettagli d'uso

monitor.py — Orchestratore principale

python monitor.py [OPZIONI]

Opzioni:
  --top N          Numero di pacchetti migliori da monitorare per ecosistema (default: 15000)
  --interval SECS  Intervallo di polling in secondi (default: 300)
  --once           Singolo passaggio sugli eventi recenti, poi esci
  --slack          Abilita avvisi Slack per risultati malevoli
  --model MODEL    Sovrascrivi modello LLM (default: composer-2-fast)
  --debug          Abilita logging DEBUG (include output raw dell'agente)

Opzioni PyPI:
  --no-pypi        Disabilita monitoraggio PyPI
  --serial N       Serial del changelog PyPI da cui iniziare

Opzioni npm:
  --no-npm         Disabilita monitoraggio npm
  --npm-top N      Primi N pacchetti npm da monitorare (default: uguale a --top)
  --npm-seq N      Sequence di replica npm da cui iniziare

PyPI e npm eseguono ciascuno il proprio thread di polling. Lo stato di polling (serial PyPI, sequence + epoch npm) viene persistito in last_serial.yaml in modo che il monitor riprenda da dove si era interrotto dopo un riavvio.

Pipeline PyPI:

  1. Carica i primi N pacchetti dal dataset hugovk/top-pypi-packages come watchlist
  2. Si connette all'API XML-RPC di PyPI e ottiene il numero seriale corrente
  3. Ogni --interval secondi, chiama changelog_since_serial() — una singola chiamata API che restituisce tutti gli eventi dall'ultimo controllo
  4. Filtra per eventi "new release" corrispondenti alla watchlist
  5. Per ogni nuova release: scarica le versioni vecchia + nuova (sdist e wheel quando esistono entrambe), confronta, analizza tramite LLM e notifica Slack se malevola
Scarica lo strumento