Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

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

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

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

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
shai-scan — 依存関係のないCLIスキャナーで、npm/PyPIのサプライチェーン侵害を検出します。ロックファイル内の侵害されたパッケージや、Mini Shai-Hulud(CVE-2026-45321)のような攻撃によるシステムレベルのIOCを検出します。 | Kitploit
ツール/GitHubGitHub/digi4care/shai-scan
侵害指標 (IOC) 管理静的分析脆弱性スキャナーコード分析DevSecOpsシークレット検出脅威インテリジェンスサプライチェーンセキュリティインシデントレスポンス
GitHubdigi4care/shai-scan

shai-scan

依存関係のないCLIスキャナーで、npm/PyPIのサプライチェーン侵害を検出します。ロックファイル内の侵害されたパッケージや、Mini Shai-Hulud(CVE-2026-45321)のような攻撃によるシステムレベルのIOCを検出します。

3ヶ月前未レビュー

人気

すべて見る →

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

すべてのツールを探索

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

すべてのツールを見る →
共有
リポジトリを見る

shai-scan

npmおよびPyPIのサプライチェーン侵害をスキャンするゼロ依存CLIツール

npm version License: MIT Node.js

なぜ?

2026年5月11日、Mini Shai-Hulud(CVE-2026-45321、GHSA-g7cv-rxg3-hmpx)と名付けられた自己増殖型サプライチェーンワームがnpmエコシステムを侵害しました。TeamPCP(別名DeadCatx3、PCPcat、ShellForce、CipherForce)によるものとされ、このマルウェアはGitHub ActionsのOIDCトークンを乗っ取り、有効なSLSA Build Level 3の出所証明を持つ悪意のあるパッケージを公開しました。CI/CDパイプライン、クラウドプロバイダー、暗号通貨ウォレットから認証情報を盗み、Claude CodeやVS Codeに永続化フックを仕掛けました。また、npmトークンが失効された場合にユーザーのホームディレクトリを消去するデッドマンスイッチが組み込まれていました。

影響を受けたパッケージには、TanStack RouterやStartパッケージ、Mistral AI SDK、OpenSearchクライアント、UiPathツールなど、数十ものパッケージが含まれます。サプライチェーン攻撃は急速に拡散するため、組織は攻撃対象領域を広げることなく、どこでも実行できる軽量で信頼性の高いスキャナーを必要としています。

特徴

  • ロックファイルスキャン — package-lock.json、pnpm-lock.yaml、yarn.lock、bun.lock、bun.lockb、poetry.lock、Pipfile.lock、requirements.txt内の侵害されたnpmおよびPyPIパッケージを検出
  • システムIOCチェック — 実行中のプロセス、ファイルシステム上のアーティファクト、ネットワーク接続、既知の永続化パスをスキャンして侵害の痕跡を検出
  • 実行時依存ゼロ — Node.js/Bunの組み込みモジュール(fs、path、child_process、os)のみを使用。スキャナー自体がサプライチェーンリスクを増大させることはありません
  • 複数の出力形式 — 人間が読めるテキスト、機械可読なJSON、GitHub Code Scanning用のSARIF
  • CI/CDネイティブ — 自動化向けの終了コード(0 = 問題なし、1 = 検出あり、2 = エラー)
  • パスに依存しない — 任意のディレクトリを指定可能。デフォルトはカレントディレクトリ
  • キャンペーンベースのデータベース — 新たな攻撃の波は、src/db.tsに個別のキャンペーンとして追加。ファイルを更新して再実行するだけ

インストール

インストールは不要です。お好みのパッケージランナーで直接実行できます:

root@kitploit:~
# npx
npx @digi4care/shai-scan

# bunx
bunx @digi4care/shai-scan

# pnpm dlx
pnpm dlx @digi4care/shai-scan

グローバルインストール(オプション):

root@kitploit:~
npm install -g @digi4care/shai-scan
# または
pnpm add -g @digi4care/shai-scan

ソースから:

root@kitploit:~
git clone https://github.com/digi4care/shai-scan.git
cd shai-scan
pnpm install
bun run src/cli.ts --help   # Bun(開発に推奨)
# またはNode.jsでビルドして実行:
pnpm run build && node dist/cli.js --help

使い方

カレントプロジェクトをスキャン

root@kitploit:~
npx @digi4care/shai-scan

特定のパスをスキャン

root@kitploit:~
npx @digi4care/shai-scan ~/projects/my-app

自動化向けJSON出力

root@kitploit:~
npx @digi4care/shai-scan --json .

GitHub Code Scanning向けSARIF出力

root@kitploit:~
npx @digi4care/shai-scan --sarif --sarif-file results.sarif .

CI/CD終了コード

root@kitploit:~
#!/bin/bash
npx @digi4care/shai-scan --severity high . || {
  code=$?
  if [ "$code" -eq 1 ]; then
    echo "サプライチェーン上の問題を検出しました"
    exit 1
  elif [ "$code" -eq 2 ]; then
    echo "スキャナーエラー"
    exit 2
  fi
}

CI/CD統合

GitHub Actions(テキスト出力)

root@kitploit:~
name: Supply Chain Scan
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: pnpm install --frozen-lockfile
      - run: npx @digi4care/shai-scan --severity high .

GitHub Actions(SARIFアップロード)

root@kitploit:~
name: Supply Chain Scan SARIF
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]
  schedule:
    - cron: '0 6 * * 1'

jobs:
  scan:
    runs-on: ubuntu-latest
    permissions:
      security-events: write
    steps:
      - uses: actions/checkout@v4
      - uses: pnpm/action-setup@v4
      - uses: actions/setup-node@v4
        with:
          node-version: 22
      - run: pnpm install --frozen-lockfile
      - run: npx @digi4care/shai-scan --sarif --sarif-file results.sarif .
      - uses: github/codeql-action/upload-sarif@v3
        with:
          sarif_file: results.sarif

出力形式

形式フラグ説明
テキスト(デフォルト)深刻度、パッケージ名、バージョン、キャンペーン詳細を含む人間が読める表形式の結果
JSON--json

JSON出力の抜粋:

root@kitploit:~
[
  {
    "package": "@tanstack/react-router",
    "version": "1.169.5",
    "ecosystem": "npm",
    "severity": "critical",
    "campaign": "mini-shai-hulud-wave4",
    "cve": "CVE-2026-45321",
    "reference": "https://github.com/TanStack/router/security/advisories/GHSA-g7cv-rxg3-hmpx"
  }
]

終了コード

コード意味
0侵害されたパッケージやIOCは検出されませんでした
11つ以上の問題が検出されました
2実行時エラー(パスが無効、ロックファイルが読み取れないなど)

新しいキャンペーンの追加

新たなサプライチェーン攻撃が発見された場合は、src/db.tsを更新します:

  1. 影響を受けるパッケージとバージョンを含む新しいCompromisedVersion[]配列を追加
  2. CVE/GHSA識別子、深刻度、説明、参照URL、IOCインジケータを含む新しいCampaignオブジェクトをCAMPAIGNS配列に追加
  3. buildLookup()関数が次回実行時に自動的にルックアップマップを再構築

Bunを使用する場合は再ビルドの必要はありません。src/db.tsへの変更はbun run src/cli.tsですぐに反映されます。npmパッケージの場合は、編集後にpnpm run buildを実行してください。

セキュリティに関する考慮事項

  • 実行時依存ゼロ:スキャナーはNode.js/Bunの組み込みモジュールのみを使用します。実行時にサードパーティのコードをダウンロードまたは実行しないため、スキャナー自体が侵害ベクターになるリスクを排除します。

  • pnpmをパッケージマネージャーとして使用:pnpmは厳格なロックファイルを使用し、デフォルトでライフサイクルスクリプトを実行せず、コンテンツアドレス可能ストレージをサポートします。これらの特性により、他のパッケージマネージャーと比較して攻撃対象領域が減少します。

  • 推奨される.npmrc設定:パッケージをインストールする際の最大限の保護のために、プロジェクトまたはグローバルの.npmrcに以下を追加してください:

    root@kitploit:~
    ignore-scripts=true
    engine-strict=true
    
  • ネットワーク呼び出しなし:shai-scanは外部に情報を送信せず、署名をダウンロードせず、APIキーも必要としません。すべてのキャンペーンデータはパッケージに同梱されています。

影響を受けるパッケージ(現在のキャンペーン)

以下のパッケージとバージョンは、CVE-2026-45321(Mini Shai-Hulud Wave 4)で侵害されていることが確認されています。これは代表的なサブセットであり、完全なリストはsrc/db.tsで管理されています。

ライセンス

MIT。詳細はLICENSEをご覧ください。

免責事項

shai-scanは検出支援ツールであり、包括的なセキュリティ監査、依存関係レビュー、脅威インテリジェンスプラットフォームの代替にはなりません。出荷されたデータベースに基づいて既知の侵害バージョンを識別しますが、新規またはゼロデイのサプライチェーン攻撃はキャンペーンが追加されるまで検出されない可能性があります。常に多層防御を実践してください:依存関係の監査、バージョンの固定、出所の検証、CI/CDパイプラインの監視。

ツールをダウンロード
SIEMやカスタムダッシュボードに取り込むための構造化JSON配列
SARIF--sarifGitHub Code Scanning、GitLab Secure、その他のSARIF対応ツールにアップロードするためのOASIS SARIF 2.1.0形式
パッケージエコシステム侵害されたバージョン
@tanstack/react-routernpm1.169.5, 1.169.8
@tanstack/vue-routernpm1.169.5, 1.169.8
@tanstack/solid-routernpm1.169.5, 1.169.8
@tanstack/router-corenpm1.169.5, 1.169.8
@tanstack/react-startnpm1.167.68, 1.167.71
@mistralai/mistralainpm2.2.2, 2.2.3, 2.2.4
@mistralai/mistralai-azurenpm1.7.2, 1.7.3
mistralaipypi2.4.6
@opensearch-project/opensearchnpm3.5.3, 3.6.2, 3.7.0, 3.8.0
@uipath/robotnpm1.3.4
@squawk/airwaysnpm0.4.2, 0.4.3, 0.4.5
@draftauth/corenpm0.13.1, 0.13.2
@tallyui/corenpm0.2.1, 0.2.2, 0.2.3
safe-actionnpm0.8.3, 0.8.4
cmux-agent-mcpnpm0.1.3 - 0.1.8
nextmove-mcpnpm0.1.3, 0.1.4, 0.1.5, 0.1.7
ts-dnanpm3.0.1, 3.0.2, 3.0.4
cross-stitchnpm1.1.3, 1.1.4, 1.1.6
git-git-gitnpm1.0.8 - 1.0.12
git-branch-selectornpm1.3.3 - 1.3.7
agentwork-clinpm0.1.4, 0.1.5
wot-apinpm0.8.1, 0.8.2, 0.8.4
ml-toolkit-tsnpm1.0.4, 1.0.5
@beproduct/nestjs-authnpm0.1.2 - 0.1.19
@dirigible-ai/sdknpm0.6.2, 0.6.3
@taskflow-corp/clinpm0.1.24 - 0.1.29
@tolka/clinpm1.0.2, 1.0.3, 1.0.4, 1.0.6
@supersurkhet/clinpm0.0.2 - 0.0.7
guardrails-aipypi0.10.1