Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
supply-chain-monitor — Automatisierter Sicherheitsmonitor für die Lieferkette, der PyPI- und npm-Registries abfragt, neue Versionen mit Vorgängern vergleicht und LLM-Analysen verwendet, um bösartige Codeänderungen mit Slack-Benachrichtigungen zu erkennen. | Kitploit
Tools/GitHubGitHub/elastic/supply-chain-monitor
SchwachstellenanalyseCode-AnalyseMalware-AnalyseBedrohungsanalyseLieferkettensicherheitIncident Response
GitHubelastic/supply-chain-monitor

supply-chain-monitor

Automatisierter Sicherheitsmonitor für die Lieferkette, der PyPI- und npm-Registries abfragt, neue Versionen mit Vorgängern vergleicht und LLM-Analysen verwendet, um bösartige Codeänderungen mit Slack-Benachrichtigungen zu erkennen.

Repository anzeigen
5296157vor 6 MonatenVon Kitploit geprüft

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Teilen

Supply Chain Monitor

License: MIT

Automatisierte Überwachung der wichtigsten PyPI- und npm-Pakete auf Kompromittierung der Lieferkette. Fragt beide Registries regelmäßig nach neuen Versionen ab, erstellt Diffs zwischen jeder neuen und der vorherigen Version und verwendet ein LLM (über Cursor Agent CLI), um die Diffs als gutartig oder bösartig zu klassifizieren. Bei bösartigen Funden wird eine Slack-Benachrichtigung ausgelöst.

Standardmäßig werden beide Ökosysteme überwacht. Mit --no-pypi oder --no-npm kann eines deaktiviert werden.

So funktioniert es

Jedes Ökosystem führt seinen eigenen Polling-Thread, teilt sich aber die Analyse- und Benachrichtigungspipeline.

         ┌─── PyPI ──────────────────────┐   ┌─── npm ───────────────────────┐
         │                               │   │                               │
         │ changelog_since_serial()      │   │ CouchDB _changes feed         │
         │       │                       │   │       │                       │
         │       ▼                       │   │       ▼                       │
         │  ┌────────────┐               │   │  ┌────────────┐               │
         │  │ All PyPI   │─┐             │   │  │ All npm    │─┐             │
         │  │ events     │ │             │   │  │ changes    │ │             │
         │  └────────────┘ ▼             │   │  └────────────┘ ▼             │
         │ hugovk ──► Watchlist          │   │ download-counts ─► Watchlist  │
         │       │                       │   │       │                       │
         │ "new release" events only     │   │ new versions since last epoch │
         └───────────────┬───────────────┘   └───────────────┬───────────────┘
                         │                                   │
                         ▼                                   ▼
               ┌───────────────────┐               ┌───────────────────┐
               │ Download old + new│               │ Download old + new│
               │ (sdist + wheel)   │               │ (tarball)         │
               └───────────────────┘               └───────────────────┘
                         │                                   │
                         └─────────────────┬─────────────────┘
                                           ▼
                                   ┌───────────────┐
                                   │ Unified diff  │
                                   │ report (.md)  │
                                   └───────┬───────┘
                                           ▼
                                   ┌───────────────┐  ◄── LLM analysis
                                   │ Cursor Agent  │      (read-only)
                                   │ CLI (ask mode)│
                                   └───────┬───────┘
                                           │
                                       verdict?
                                           │
                                 malicious │
                                           ▼
                                   ┌───────────────┐
                                   │ Slack alert   │
                                   └───────────────┘

Erkennungsziele

Die LLM-Analyse wird gezielt nach folgenden Mustern durchsucht:

  • Verschleierter Code (base64, exec, eval, XOR, kodierte Zeichenfolgen)
  • Netzwerkaufrufe an unerwartete Hosts
  • Dateisystem-Schreibvorgänge an Start-/Persistenzspeicherorten
  • Prozessstart und Shell-Befehle
  • Steganografie oder Datenversteck in Mediendateien
  • Exfiltration von Anmeldeinformationen und Token
  • Hinweise auf Typosquatting

Voraussetzungen

  • Python 3.9+ – Installieren Sie die Laufzeitabhängigkeiten mit pip install -r requirements.txt (die Standardbibliothek deckt den Großteil des Tools ab; requests wird für Slack-Uploads verwendet)
  • Cursor Agent CLI – Das eigenständige agent-Binary, nicht die IDE

Installation der Cursor Agent CLI

Windows (PowerShell):

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

macOS / Linux:

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

Überprüfen mit:

agent --version

Sie müssen bei Cursor authentifiziert sein (agent login oder CURSOR_API_KEY setzen).

Slack-Konfiguration

Platzieren Sie Ihren Slack-Bot-Token in etc/slack.json:

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

Der Bot benötigt die Berechtigung chat:write für den Zielkanal. Das Feld channel ist die Slack-Kanal-ID, in die Benachrichtigungen gesendet werden.

Schnellstart

# Einmalige Ausführung: Analysiert Versionen der letzten ~10 Minuten
python monitor.py --once

# Kontinuierlich: Überwacht die Top-1000-Pakete (beide Ökosysteme), alle 5 Minuten abfragen
python monitor.py --top 1000 --interval 300

# Produktion: Überwacht Top 15000, Benachrichtigung an Slack
python monitor.py --top 15000 --interval 300 --slack

# Nur npm, Top 5000
python monitor.py --no-pypi --npm-top 5000

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

Dateiübersicht

DateiZweck
monitor.pyHauptorchestrator – Abfragen von PyPI + npm, Diff, Analyse, Benachrichtigung (parallele Threads)
pypi_monitor.pyEigenständiger PyPI-Changelog-Poller (für Erkundungszwecke)
package_diff.pyHerunterladen und Vergleichen von zwei Versionen eines beliebigen PyPI- oder npm-Pakets
analyze_diff.pySenden eines Diffs an die Cursor Agent CLI, Auswertung des Befundes
top_pypi_packages.pyAbrufen und Auflisten der Top-N-PyPI-Pakete nach Downloadzahl
slack.pySlack-API-Client (SendMessage, PostFile)
etc/slack.jsonSlack-Bot-Anmeldedaten
last_serial.yamlGespeicherter Polling-Status (PyPI-Serial + npm-Sequenz/Epoch)
logs/Tägliche Logdateien (monitor_YYYYMMDD.log)

Nutzungsdetails

monitor.py — Hauptorchestrator

python monitor.py [OPTIONEN]

Optionen:
  --top N          Anzahl der Top-Pakete pro Ökosystem (Standard: 15000)
  --interval SEK   Abrufintervall in Sekunden (Standard: 300)
  --once           Einmaliger Durchlauf über aktuelle Ereignisse, dann Beenden
  --slack          Slack-Benachrichtigungen für bösartige Funde aktivieren
  --model MODEL    LLM-Modell überschreiben (Standard: composer-2-fast)
  --debug          DEBUG-Logging aktivieren (enthält rohe Agent-Ausgabe)

PyPI-Optionen:
  --no-pypi        PyPI-Überwachung deaktivieren
  --serial N       Start-Serial für PyPI-Changelog

npm-Optionen:
  --no-npm         npm-Überwachung deaktivieren
  --npm-top N      Top-N-npm-Pakete überwachen (Standard: gleicher Wert wie --top)
  --npm-seq N      Start-Sequenz für npm-Replikation

PyPI und npm laufen jeweils in einem eigenen Polling-Thread. Der Polling-Status (PyPI-Serial, npm-Sequenz + Epoch) wird in last_serial.yaml gespeichert, sodass der Monitor nach einem Neustart dort weitermacht, wo er aufgehört hat.

PyPI-Pipeline:

  1. Lädt die Top-N-Pakete aus dem Datensatz hugovk/top-pypi-packages als Watchlist
  2. Stellt eine Verbindung zur PyPI-XML-RPC-API her und ermittelt die aktuelle Seriennummer
  3. Ruft alle --interval Sekunden changelog_since_serial() auf – ein einzelner API-Aufruf, der alle Ereignisse seit der letzten Prüfung zurückgibt
  4. Filtert nach "new release"-Ereignissen, die der Watchlist entsprechen
  5. Für jede neue Version: Herunterladen alter + neuer Versionen (sdist und wheel, wenn beide vorhanden), Diff, Analyse via LLM, Slack-Benachrichtigung bei Bösartigkeit
Tool herunterladen