byteratio/security-sweep

Examine si un projet (ou chaque dépôt sur la machine) est exposé à des vulnérabilités de dépendances connues et activement exploitées. Combine un audit déterministe par écosystème (npm audit, govulncheck, pip-audit, osv-scanner) avec une recherche web en direct sur les incidents récents/actifs de la chaîne d'approvisionnement, puis vérifie directement les lockfiles de chaque projet – l'indicateur avancé que `npm audit` ne détecte pas. À utiliser lorsque l'utilisateur demande « examiner la sécurité », « vérifier les dépendances vulnérables », « sommes-nous affectés par <un CVE / compromission de package nommé> », « analyser les projets pour des problèmes de chaîne d'approvisionnement », ou souhaite un balayage de sécurité récurrent.

Qu'est-ce que security-sweep ?

Cette compétence répond à une question cruciale : les projets analysés sont-ils exposés à une vulnérabilité de dépendance qui compte vraiment maintenant ? « Compte vraiment maintenant » signifie soit cataloguée et atteignable, soit un incident actif non encore entièrement propagé dans les bases de données d'audit. La valeur ajoutée par rapport à un simple `npm audit` réside dans la couche de recherche : les bases de conseils sont en retard sur les divulgations, et les incidents de paquets malveillants sont souvent traités par dépublication (sans avis consultable). Ce balayage associe donc des outils déterministes à une recherche en direct sur ce qui est activement exploité, et vérifie directement le lockfile pour ces noms – le signal fiable le plus rapide, qu'aucun outil d'audit ne fournit. La compétence est en lecture seule par défaut : elle examine et rapporte. Elle ne propose que des correctifs sans appliquer de mises à jour de version sans l'accord de l'utilisateur (car elles pourraient casser les builds). Elle prend en charge les écosystèmes npm, Go, Python et Swift/SPM, et peut fonctionner sur un seul projet ou sur plusieurs dépôts.

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

Installed? Explore more Recherche et analyse de données skills: affaan-m/uspto-database, affaan-m/scholar-evaluation, affaan-m/literature-review · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Balayage de sécurité

Répondre bien à une question : ces projets sont-ils exposés à une vulnérabilité de dépendance qui compte vraiment maintenant ? « Compte vraiment maintenant » signifie soit cataloguée-et-atteignable, soit un incident actif dans la nature qui n'a pas encore entièrement propagé dans les bases de données d'audit.

La valeur ajoutée par rapport à un simple npm audit est la couche de recherche. Les bases de conseils sont en retard sur les divulgations, et les incidents de paquets malveillants sont souvent traités par dépublication (aucun avis consultable). Ce balayage associe donc les outils déterministes à une recherche en direct sur ce qui est activement exploité, et vérifie directement le lockfile pour ces noms — le signal fiable le plus rapide, qu'aucun outil d'audit ne fournit.

Lecture seule par défaut : ceci examine et rapporte. Proposer uniquement des correctifs; ne pas appliquer de mises à jour de version sans l'accord de l'utilisateur (elles peuvent casser les builds).

Quand l'utiliser

  • « Examiner la sécurité » / « vérifier les dépendances vulnérables » / « exécuter un balayage de sécurité ».
  • « Sommes-nous affectés par <une histoire nommée de CVE, GHSA ou compromission de package> ? » — l'utilisateur a lu quelque chose et veut connaître leur exposition.
  • Une vérification périodique (composer avec la compétence schedule pour un balayage récurrent dans le cloud — voir la fin).

Étape 1 — Périmètre

Décider quoi balayer. Par défaut, le projet courant ; proposer un balayage multi-dépôt si la formulation de l'utilisateur est large (« nos projets », « tout », « la flotte »).

  • Projet courant : le dépôt dans lequel vous êtes.
  • Multi-dépôt : énumérer les dépôts frères à côté du dépôt courant — c'est-à-dire le parent de la racine git courante (généralement ~/projects/*/ ou ~/src/*/). Confirmer le répertoire avec l'utilisateur avant de le parcourir plutôt que de supposer ; une mauvaise estimation gaspille un long scan. Pour chaque dépôt, détecter les écosystèmes par manifeste (ci-dessous), balayer à tour de rôle, rapporter par projet.

Étape 2 — Détecter les écosystèmes et localiser les lockfiles

Par projet, un écosystème est présent si son lockfile est :

ÉcosystèmeManifeste / lockfileEmplacement habituel
npmpackage-lock.jsonfrontend/ ou racine du dépôt
Gogo.mod / go.sumbackend/ ou racine du dépôt
Pythonpoetry.lock, requirements.txt, uv.lockracine du dépôt
Swift/SPMPackage.resolvedios/ ou un .xcodeproj

Le lockfile — pas le manifeste — est ce que vous analysez : il épingle les versions transitives exactes réellement installées.

Étape 3 — Base déterministe (par écosystème)

Exécuter l'outillage propre à l'écosystème. Ceux-ci capturent tout ce qui se trouve déjà dans les bases de données de conseils. Privilégier les outils avec analyse d'atteignabilité (ils ne rapportent que les vulnérabilités que votre code peut réellement atteindre) lorsqu'ils sont disponibles.

  • npm : cd <dir> && npm audit --omit=dev --audit-level=high (ce qui est livré aux utilisateurs) et un simple npm audit (tout, informatif). Pas d'atteignabilité — sur-rapporte ; pondérer les résultats de production.
  • Go : govulncheck ./... — fait de l'analyse d'atteignabilité (ne signale que les vulnérabilités dans le code appelé) ; installer une fois avec go install golang.org/x/vuln/cmd/govulncheck@latest. L'étalon-or de ces outils.
  • Python : pip-audit (ou pip-audit -r requirements.txt).
  • Tout écosystème, ou quand un outil manque : osv-scanner contre le lockfile, exécuté via conteneur pour n'avoir rien à installer : <runtime> run --rm -v "$PWD:/src:ro" ghcr.io/google/osv-scanner:latest scan --lockfile=/src/<lockfile>. Base de données la plus large ; solution de repli pour Swift/SPM, qui dispose d'un outillage interne limité.

Capturer ce que chacun rapporte. Distinguer production/atteignable de dev/au moment de la construction — un niveau élevé dans un outil de construction qui n'est jamais livré n'est pas la même chose qu'un résultat dans une dépendance d'exécution.

Étape 4 — Rechercher le paysage actuel des menaces (la valeur ajoutée)

C'est ce qu'un simple audit ne peut pas faire. Utiliser WebSearch / WebFetch pour trouver ce qui est actuellement actif, puis rapporter les noms à l'étape 5.

  • Incidents récents de la chaîne d'approvisionnement dans les écosystèmes du projet : rechercher les campagnes récentes de compromission et de malware npm/PyPI/Go ; consulter la base de données d'avis GitHub (github.com/advisories) et OSV (osv.dev) pour les entrées récemment publiées concernant les packages vus à l'étape 2.
  • Si l'utilisateur a nommé un CVE / GHSA / incident spécifique, récupérer l'avis faisant autorité et extraire les noms exacts des packages affectés et les plages de versions — c'est ce que vous comparerez avec le lockfile.
  • Privilégier les sources primaires (l'avis, le message du mainteneur, l'avis de sécurité du registre) plutôt que les titres des agrégateurs ; noter quand quelque chose est non confirmé.

Garder cela à jour : dater chaque affirmation et indiquer quelle était votre fenêtre de recherche (par exemple « incidents actifs divulgués dans les ~8 dernières semaines »).

Étape 5 — Recouper les noms avec le lockfile directement

Pour chaque package mis en évidence à l'étape 4, ne pas attendre l'outil d'audit — vérifier vous-même l'arbre figé. C'est l'étape d'indicateur avancé :

# 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 .

Puis comparer la version figée avec la plage affectée de l'avis. Trois résultats par nom : exposé (présent et dans la plage), clair (absent, ou présent mais en dehors de la plage), incertain (version transitive que vous n'avez pas pu résoudre complètement — creuser plus loin ou signaler).

Étape 6 — Rapport

Par projet, commencer par le verdict, puis les preuves :

  • Exposé — package, version figée, avis/incident, s'il est atteignable en production, et une remédiation concrète (mise à jour ciblée de version ; jamais un npm audit fix aveugle). Si une version compromise a pu être installée, noter que son postinstall a peut-être déjà été exécuté — la principale raison pour laquelle une valeur par défaut d'ignore-scripts est importante.
  • Clair — les menaces actives recherchées et vérifiées non présentes. Dire ce qui a été vérifié, pour que « clair » ait un sens.
  • Incertain / non couvert — écosystèmes avec un outillage limité (Swift), transitives non résolues, ou recherche qui n'a pas pu confirmer une plage. Nommer l'écart plutôt que d'impliquer une couverture complète.

Ne pas suggérer que vous avez tout trouvé. Indiquer la fenêtre et les écosystèmes réellement balayés.

Composition

  • Balayage récurrent : passer la procédure de cette compétence à la compétence schedule pour une exécution hebdomadaire dans le cloud sur les dépôts, de sorte qu'un nouvel incident soit détecté en quelques jours plutôt que quand quelqu'un pense à regarder.
  • Avant une publication ou un push : exécuter un balayage ciblé d'un seul projet. Il se combine naturellement avec une étape de pré-push make audit / make secret-scan si le projet en possède une.

Remarques

  • Les outils d'audit sont des indicateurs retardés ; l'actualité et l'étape 4 de cette compétence sont les indicateurs avancés. Lorsqu'ils divergent — la recherche dit qu'un package est compromis mais que les outils se taisent — faire confiance à la vérification directe du lockfile et le traiter comme actif.
  • npm audit rapporte la gravité de l'avis, pas votre exploitabilité (pas d'analyse d'atteignabilité) — il sur-rapporte. govulncheck est l'opposé et le modèle à privilégier lorsqu'un écosystème le propose.
  • Cette compétence répond à l'exposition. La remédiation (mises à jour de version, épinglage, npm rebuild pour une exception de script limitée) est une étape distincte et approuvée par l'utilisateur — suggérer le correctif, ne pas l'appliquer sans demande.

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.

Skills associés