Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
supply-chain-monitor — PyPIとnpmレジストリをポーリングし、新しいリリースをその前のバージョンと比較し、LLM分析を使用して悪意のあるコード変更を検出し、Slackアラートを送信する自動化されたサプライチェーンセキュリティモニター。 | Kitploit
ツール/GitHubGitHub/elastic/supply-chain-monitor
脆弱性分析コード分析マルウェア分析脅威インテリジェンスサプライチェーンセキュリティインシデントレスポンス
GitHubelastic/supply-chain-monitor

supply-chain-monitor

PyPIとnpmレジストリをポーリングし、新しいリリースをその前のバージョンと比較し、LLM分析を使用して悪意のあるコード変更を検出し、Slackアラートを送信する自動化されたサプライチェーンセキュリティモニター。

リポジトリを見る
52961576ヶ月前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有

サプライチェーンモニター

License: MIT

上位のPyPIおよびnpmパッケージのサプライチェーン侵害を自動監視します。両方のレジストリをポーリングして新しいリリースを取得し、各リリースを以前のバージョンと差分比較し、LLM(Cursor Agent CLI経由)を使用して差分を良性または悪意に分類します。悪意のある結果はSlackアラートをトリガーします。

両エコシステムはデフォルトで監視されます。一方を無効にするには--no-pypiまたは--no-npmを使用します。

仕組み

各エコシステムは独自のポーリングスレッドで実行されますが、分析とアラートのパイプラインを共有します。

         ┌─── 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   │
                                   └───────────────┘

検出対象

LLM分析は以下を探すように指示されています。

  • 難読化されたコード(base64、exec、eval、XOR、エンコードされた文字列)
  • 予期しないホストへのネットワーク呼び出し
  • スタートアップ/永続化場所へのファイルシステム書き込み
  • プロセスの生成とシェルコマンド
  • メディアファイル内のステガノグラフィーまたはデータ隠蔽
  • 資格情報とトークンの流出
  • タイポスクワッティングの指標

前提条件

  • Python 3.9+ — ランタイム依存関係をpip install -r requirements.txtでインストールします(標準ライブラリがツールの大半をカバーしており、requestsはSlackアップロードに使用されます)
  • Cursor Agent CLI — スタンドアロンのagentバイナリ(IDEではありません)

Cursor Agent CLIのインストール

Windows (PowerShell):

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

macOS / Linux:

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

Verify with:

agent --version

Cursorで認証されている必要があります(agent loginまたはCURSOR_API_KEYの設定)。

Slackの設定

Slackボットトークンをetc/slack.jsonに配置します:

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

ボットにはターゲットチャンネルに対するchat:writeスコープが必要です。channelフィールドはアラートが投稿されるSlackチャンネルIDです。

クイックスタート

# One-shot: analyze releases from the last ~10 minutes
python monitor.py --once

# Continuous: monitor top 1000 packages (both ecosystems), poll every 5 min
python monitor.py --top 1000 --interval 300

# Production: monitor top 15000, alert to Slack
python monitor.py --top 15000 --interval 300 --slack

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

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

ファイル概要

ファイル目的
monitor.pyメインオーケストレーター — PyPI + npmをポーリング、差分、分析、アラート(並列スレッド)
pypi_monitor.pyスタンドアロンPyPI変更ログポーラー(探索用)
package_diff.py任意のPyPIまたはnpmパッケージの2つのバージョンをダウンロードして差分比較
analyze_diff.py差分をCursor Agent CLIに送信し、判定を解析
top_pypi_packages.pyダウンロード数で上位N個のPyPIパッケージを取得してリスト表示
slack.pySlack APIクライアント(SendMessage, PostFile)
etc/slack.jsonSlackボットの認証情報
last_serial.yaml永続化されたポーリング状態(PyPIシリアル + npmシーケンス/エポック)
logs/日次ログファイル(monitor_YYYYMMDD.log)

使用詳細

monitor.py — メインオーケストレーター

python monitor.py [OPTIONS]

Options:
  --top N          Number of top packages to watch per ecosystem (default: 15000)
  --interval SECS  Poll interval in seconds (default: 300)
  --once           Single pass over recent events, then exit
  --slack          Enable Slack alerts for malicious findings
  --model MODEL    Override LLM model (default: composer-2-fast)
  --debug          Enable DEBUG logging (includes agent raw output)

PyPI options:
  --no-pypi        Disable PyPI monitoring
  --serial N       PyPI changelog serial to start from

npm options:
  --no-npm         Disable npm monitoring
  --npm-top N      Top N npm packages to watch (default: same as --top)
  --npm-seq N      npm replication sequence to start from

PyPIとnpmはそれぞれ独自のポーリングスレッドで実行されます。ポーリング状態(PyPIシリアル、npmシーケンス+エポック)はlast_serial.yamlに永続化されるため、再起動後もモニターは中断したところから再開します。

PyPIパイプライン:

  1. ウォッチリストとしてhugovk/top-pypi-packagesデータセットから上位Nパッケージを読み込みます
  2. PyPIのXML-RPC APIに接続し、現在のシリアル番号を取得します
  3. --interval秒ごとにchangelog_since_serial()を呼び出します — 前回のチェック以降のすべてのイベントを返す単一のAPI呼び出しです
  4. ウォッチリストに一致する"new release"イベントをフィルタリングします
  5. 新しいリリースごとに:古いバージョンと新しいバージョン(両方が存在する場合はsdistとwheel)をダウンロードし、差分をとり、LLMで分析し、悪意がある場合はSlackにアラートを送信します

npmパイプライン:

  1. download-countsデータセットから上位Nパッケージを読み込みます(npm検索APIにフォールバック)
  2. replicate.npmjs.comから現在のCouchDBレプリケーションシーケンスを読み取ります
  3. --interval秒ごとに、最後のシーケンス以降のすべてのレジストリ変更の_changesフィードを取得します
  4. 変更されたパッケージをウォッチリストと照合し、最後のポーリングエポック以降に公開されたバージョンを確認します
  5. 新しいリリースごとに:npmレジストリから古いtarballと新しいtarballをダウンロードし、差分をとり、LLMで分析し、悪意がある場合はSlackにアラートを送信します

すべての出力はコンソールとlogs/monitor_YYYYMMDD.logの両方に記録されます。

package_diff.py — パッケージ差分ツール

# Compare two versions from PyPI
python package_diff.py requests 2.31.0 2.32.0

# Compare two versions from npm
python package_diff.py --npm express 4.18.2 4.19.0

# Save to file
python package_diff.py telnyx 2.0.0 2.1.0 -o telnyx_diff.md

# Compare local archives
python package_diff.py --local old.tar.gz new.tar.gz -n mypackage

ダウンロードはpipやnpmではなく、レジストリAPI(PyPI JSON API / npmレジストリ)を介して直接行われます。つまり:

  • ダウンロードにpip/npm依存なし
  • プラットフォーム非依存 — WindowsからLinux専用パッケージをダウンロードして差分可能
  • PyPI: wheelを優先(利用可能な場合はPure Python)、sdistにフォールバック
  • npm: tarballをレジストリから直接ダウンロード

analyze_diff.py — LLM判定

# Analyze a diff file
python analyze_diff.py telnyx_diff.md

# JSON output
python analyze_diff.py telnyx_diff.md --json

# Use a specific model
python analyze_diff.py telnyx_diff.md --model claude-4-opus

Cursor Agent CLIを--mode ask(読み取り専用)で--trust付きで実行します。エージェントは差分ファイルを読み取り、構造化された判定を返します。

終了コード:0 = 良性、1 = 悪意、2 = 不明/エラー。

pypi_monitor.py — スタンドアロンポーラー

# See what's being released right now (last ~10 min)
python pypi_monitor.py --once --top 15000

# Continuous monitoring (console output only, no analysis)
python pypi_monitor.py --top 1000 --interval 120

完全な分析パイプラインを実行せずにPyPIのリリース速度を調査したり、変更ログAPIをデバッグしたりするのに便利です。

ツールをダウンロード