Community研究&データ分析github.com

byteratio/security-sweep

プロジェクト(またはマシン上のすべてのリポジトリ)が既知の積極的に悪用されている依存関係の脆弱性にさらされているかどうかを調査します。エコシステムごとの決定論的監査(npm audit、govulncheck、pip-audit、osv-scanner)と、最近の活発なサプライチェーンインシデントに関するライブWeb調査を組み合わせ、各プロジェクトのロックファイルを直接チェックします。これは `npm audit` が見逃す先行指標チェックです。

security-sweep とは?

このスキルは、AIエージェントが現在のプロジェクトまたはマシン上の複数リポジトリ全体の依存関係に、現時点で深刻な脆弱性があるかどうかを評価するためのものです。単なる `npm audit` とは異なり、アドバイザリデータベースにまだ反映されていない活発な攻撃や、近日公開のサプライチェーンインシデントをライブWeb調査で補完します。決定論的ツール(npm audit、govulncheck、pip-audit、osv-scanner)によるベースライン監査に加え、ステップ4でWeb検索を用いて最新の脅威情報を収集し、ステップ5でロックファイルを直接grepして影響を受けるパッケージ名を照合します。このスキルは読み取り専用で、報告と修正提案のみを行います。実際のバージョンアップはユーザーの承認を得てから行ってください。

対応~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/byteratio/skills/tree/main/plugins/hechtch-skills/skills/security-sweep

Installed? Explore more 研究&データ分析 skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

セキュリティスイープ

一つの質問に的確に答える:これらのプロジェクトは、今すぐに対処すべき依存関係の脆弱性にさらされているか? 「今すぐに対処すべき」とは、カタログ化されリーチ可能であるか、まだ完全に監査データベースに伝播していない、実際に発生しているインシデントのいずれかを意味します。

単なる npm audit よりも優れている点は、リサーチレイヤーです。アドバイザリデータベースは開示に遅れをとり、悪意のあるパッケージインシデントはしばしば公開停止(問い合わせ可能なアドバイザリなし)によって処理されます。そのため、このスイープは決定論的ツールと、現在活発に悪用されているものに関するライブ調査を組み合わせ、ロックファイルを直接チェックします。これは最も高速で信頼性の高いシグナルであり、どの監査ツールも提供してくれません。

デフォルトでは読み取り専用:調査して報告します。修正案を提案するだけに留め、ユーザーの了承なしにバージョンアップを適用しないでください(ビルドが壊れる可能性があります)。

使用するタイミング

  • 「セキュリティを調査して」「脆弱な依存関係をチェックして」「セキュリティスイープを実行して」
  • 「私たちは <特定のCVE、GHSA、パッケージ侵害の話> の影響を受けていますか?」 — ユーザーが何かを読んで、自分のプロジェクトに影響があるか知りたい場合
  • 定期的なチェック(schedule スキルと組み合わせて、クラウドでの定期スイープを実行 — 最後の節を参照)

ステップ 1 — スコープ

何をスイープするか決定します。デフォルトは現在のプロジェクト。ユーザーの表現が広い場合(「私たちのプロジェクト」「全部」「フリート」)は、複数リポジトリのスイープを提案します。

  • 現在のプロジェクト:現在いるリポジトリ
  • 複数リポジトリ:現在のリポジトリの隣にある兄弟リポジトリを列挙します。つまり、現在のgitルートの親ディレクトリ(通常は ~/projects/*/ または ~/src/*/)。ディレクトリを走査する前にユーザーと確認し、推測で行わないこと。間違った推測は長時間のスキャンを無駄にします。各リポジトリについて、マニフェスト(下記)からエコシステムを検出し、順にスイープし、プロジェクトごとにレポートします。

ステップ 2 — エコシステムの検出とロックファイルの特定

プロジェクトごとに、エコシステムはそのロックファイルが存在すれば検出されます:

エコシステムマニフェスト / ロックファイル通常の場所
npmpackage-lock.jsonfrontend/ またはリポジトリルート
Gogo.mod / go.sumbackend/ またはリポジトリルート
Pythonpoetry.lock, requirements.txt, uv.lockリポジトリルート
Swift/SPMPackage.resolvedios/ または .xcodeproj

スキャンするのはマニフェストではなくロックファイルです。実際にインストールされた正確な推移的バージョンが固定されています。

ステップ 3 — 決定論的ベースライン(エコシステムごと)

エコシステム独自のツールを実行します。これらはアドバイザリデータベースに既にあるものすべてを捕捉します。利用可能な場合はリーチアビリティ分析(コードが実際に到達できる脆弱性のみを報告)を持つツールを優先します。

  • npm: cd <dir> && npm audit --omit=dev --audit-level=high(ユーザーに出荷されるもの)および通常の npm audit(全件、情報提供用)。リーチアビリティなし — 過剰報告のため、本番環境の結果に重み付け。
  • Go: govulncheck ./... — リーチアビリティ分析を行う(呼び出されたコードの脆弱性のみフラグ);一度 go install golang.org/x/vuln/cmd/govulncheck@latest でインストール。これらのツールのゴールドスタンダード。
  • Python: pip-audit(または pip-audit -r requirements.txt)
  • どのエコシステムでも、ツールがない場合: ロックファイルに対して osv-scanner を、インストール不要でコンテナ経由で実行:<runtime> run --rm -v "$PWD:/src:ro" ghcr.io/google/osv-scanner:latest scan --lockfile=/src/<lockfile>。最も広範なデータベース;Swift/SPMのフォールバック(ファーストパーティのツールが薄い)。

各ツールの報告内容を取得します。本番環境/リーチ可能なものと開発/ビルド時のものを区別します — 出荷されないビルドツールの high は、ランタイム依存関係の finding と同じではありません。

ステップ 4 — アクティブな脅威環境の調査(付加価値)

これが単なる監査ではできないことです。WebSearch / WebFetch を使用して現在アクティブなものを見つけ、名前をステップ5に持ち帰ります。

  • プロジェクトのエコシステムにおける最近のサプライチェーンインシデント:最近の npm/PyPI/Go での侵害やマルウェアキャンペーンを検索;GitHub Advisory Database (github.com/advisories) と OSV (osv.dev) で、ステップ2で見つけたパッケージに関連する最近公開されたエントリを確認します。
  • ユーザーが特定の CVE / GHSA / インシデントを指定した場合、権威あるアドバイザリを取得し、影響を受ける正確なパッケージ名とバージョン範囲を抽出します — それをロックファイルと照合します。
  • 一次情報源(アドバイザリ、メンテナの投稿、レジストリのセキュリティ通知)を集約型の見出しより優先し、未確認の場合はその旨を記載します。

最新の状態に保つ:すべての主張に日付をつけ、調査ウィンドウを記載します(例:「過去約8週間に開示されたアクティブなインシデント」)。

ステップ 5 — 名前をロックファイルと直接クロスリファレンス

ステップ4で得られたすべてのパッケージについて、監査ツールを待たずに自分で固定されたツリーを確認します。これが先行指標のステップです:

# npm
cd <dir> && npm ls <package>
grep -n '"<package>"' package-lock.json
# Go
grep -n '<module-path>' go.sum
# Python
grep -in '<package>' poetry.lock requirements.txt uv.lock 2>/dev/null
# Swift
grep -rn '<package>' --include=Package.resolved .

次に、固定されたバージョンをアドバイザリの影響範囲と比較します。名前ごとに3つの結果:露出あり(存在し範囲内)、問題なし(存在しない、または存在するが範囲外)、不確か(完全に解決できなかった推移的バージョン — さらに調査するかフラグを立てる)。

ステップ 6 — 報告

プロジェクトごとに、最初に結論、次に証拠:

  • 露出あり — パッケージ、固定バージョン、アドバイザリ/インシデント、本番環境でリーチ可能かどうか、具体的な修正(対象を絞ったバージョンアップ;決して盲目的な npm audit fix はしない)。侵害されたバージョンがインストールされた可能性がある場合、その postinstall がすでに実行された可能性に注意 — ignore-scripts がデフォルトで重要である最大の理由。
  • 問題なし — 調査したアクティブな脅威をチェックし、存在しなかった。何をチェックしたかを言及し、「問題なし」に意味を持たせる。
  • 不確か / カバーされていない — ツールが薄いエコシステム(Swift)、未解決の推移的依存関係、範囲を確認できなかった調査結果。完全カバーを暗示せず、ギャップを特定する。

すべてを見つけたと暗示しないこと。実際にスイープしたウィンドウとエコシステムを明記します。

構成

  • 定期スイープ: このスキルの手順を schedule スキルに渡して、週次クラウド実行をリポジトリ全体で行うようにします。これにより、新しいインシデントが誰かが次に確認するのを待つことなく、数日以内に捕捉されます。
  • リリース前またはプッシュ前: スコープを限定した単一プロジェクトのスイープを実行します。プロジェクトに make audit / make secret-scan のプリプッシュステップがあれば、それと自然に組み合わせられます。

注意事項

  • 監査ツールは遅行指標です。ニュースとこのスキルのステップ4が先行指標です。これらが矛盾する場合 — 研究ではパッケージが侵害されていると言っているがツールは沈黙している — 直接のロックファイルチェックを信頼し、現在進行中として扱います。
  • npm audit はアドバイザリの深刻度を報告しますが、あなたの悪用可能性(リーチアビリティ分析なし)は報告しません — 過剰報告します。govulncheck はその逆で、エコシステムが提供する場合に優先すべきモデルです。
  • このスキルは露出を回答します。修正(バージョンアップ、固定、スコープ指定のスクリプト例外に対する npm rebuild)は別の、ユーザー承認済みのステップです — 修正策を提示し、プロンプトなしで適用しないでください。

Individual skills in this repo

This repo contains 5 individual skills — each has its own dedicated page.

byteratio/example-skill

Template skill for this marketplace. Use as a starting point when adding a new skill — copy this plugin directory, rename it, and replace this description with the specific trigger conditions for your skill (what the user says or does that should invoke it).

byteratio/iphone-dev

Conventions for native iPhone app development — SwiftUI + SwiftData local-first apps, XcodeGen project generation, CLI-only build/test/deploy loops (simulator by default, signed device deploys via devicectl), XCTest with visible coverage, and the free-personal-team signing gotchas. Use when creating an iOS/iPhone app, adding iOS targets or Makefile loops to a project, debugging Xcode signing/provisioning/deploy problems, or porting an existing app's logic into a native Swift client.

byteratio/kanban-plans

Track multi-session plans on a locally-running kanban board (github.com/hechtch/kanban) via its agent REST API. Claim a plan, move it through todo/doing/blocked/awaiting_merge/done, leave notes, and set the git branch. Use at the start of any non-trivial multi-session plan, when resuming such a plan, or when the user asks what's on the board or where a plan stands.

byteratio/password-generator

Generates secure, memorable passwords using 3 random dictionary words with leet-speak substitutions. Use when the user asks to generate a password, create a new password, or needs a secure passphrase.

byteratio/ux-agents

Scaffold persona-based UX testing agents for a web app — project-scoped .claude/agents/<persona>-ux.md files that drive a real browser via Playwright, walk user journeys as a specific persona, and report tagged friction findings. Use when setting up UX review automation, when the user asks what a specific user segment would think of the app, or after the user accepts an offer to add persona testing.

関連スキル