NPMサプライチェーンチェッカー(Go版/2025)

Security

概要

このリポジトリは「NPM Cache Scanner (Go Version)」として提供される、NPMサプライチェーンの脆弱性や侵害を検出するためのツールです。Goで実装されており、並列ワーカー(worker pool)による高速スキャン、ロックファイル/Dockerfile/CI設定/ベンダリングされた依存やキャッシュの広範な解析を特徴とします。bash版のスクリプトを置き換えることを目的に、クロスプラットフォーム対応(macOS/Linux/Windows)と高パフォーマンスを実現しているため、ローカルの開発環境やCIの事前チェック、セキュリティチームによる大規模スキャンに適しています。

GitHub

リポジトリの統計情報

  • スター数: 8
  • フォーク数: 0
  • ウォッチャー数: 8
  • コミット数: 6
  • ファイル数: 4
  • メインの言語: Go

主な特徴

  • 並列スキャン(worker pool)で大規模ファイルセットを高速処理
  • ロックファイル、Dockerfile、CI設定、ベンダリング済みディレクトリ、npmキャッシュを網羅的に検査
  • Go製のバイナリでクロスプラットフォームに対応(macOS / Linux / Windows)
  • bashスクリプトより安定・高速でCIへの組み込みが容易

技術的なポイント

本プロジェクトの核となるのはGoの並列処理モデルを活かした高速スキャン実装です。ワーカー・プールとチャネルでファイル探索と解析を分離し、I/O待ちの多いファイルシステム走査を効率化しています。ロックファイル(例:package-lock.json、yarn.lock、pnpm-lock.yaml 等)やpackage.jsonから依存関係を抽出し、ベンダリングされたnode_modulesやnpmキャッシュディレクトリも同時に調べることで、ローカルキャッシュやミラーに残る侵害コンポーネントも検出します。検出ロジックは主にパターンマッチングやメタデータの異常検出に依存し、明らかな悪性のpostinstallスクリプトや不審なtarball URL、署名の欠如・改変の疑いなどを指標にします。Goの単一バイナリ化により、プラットフォーム固有のシェル差分を吸収し、CIコンテナ内やWindows環境でも安定稼働します。さらに、拡張性を考慮した設計でルール追加や出力フォーマット(JSON等)への対応が容易なため、既存のセキュリティワークフローや自動化パイプラインに組み込みやすくなっています。

プロジェクトの構成

主要なファイルとディレクトリ:

  • bin: dir
  • go.mod: file
  • main.go: file
  • readme.md: file

まとめ

軽量で並列化された実用向けNPMサプライチェーン検査ツール。CI導入に適する。

リポジトリ情報:

READMEの抜粋:

NPM Cache Scanner (Go Version)

A fast, concurrent Go-based scanner to detect compromised NPM packages in your projects and caches. This replaces the bash script with better performance, cross-platform support, and concurrent scanning.

Features

  • 🚀 Concurrent scanning - Uses worker pools for fast parallel processing
  • 🔍 Comprehensive detection - Scans lockfiles, Dockerfiles, CI configs, vendored dirs, and caches
  • 🖥️ Cross-platform - Works on macOS, Linux, and Windows with …