aeon-vuln-scanner

Par bankrbot · skills

Auditer les dépôts tendance à la recherche de vulnérabilités réellement exploitables et divulguer de manière responsable — Privé Signalement de vulnérabilités pour les failles de code et les secrets vérifiés, PRs publiques uniquement pour les CVEs de dépendances déjà divulguées. Semgrep + TruffleHog + osv-scanner + Slither avec triage d'accessibilité. Ignore les cibles ne disposant d'aucun canal de divulgation sécurisé. Déclencheurs : « vuln scan owner/repo », « audit this repo », « responsible-disclosure scan », « check for secret leaks », « scan dependencies for CVEs ».

npx skills add https://github.com/bankrbot/skills --skill aeon-vuln-scanner

aeon-vuln-scanner

Un scanner qui déverse des zero-days dans des PRs publiques n'est pas un helper — c'est un publisher. Cette skill trie chaque finding en lisant le code et l'achemine vers le bon canal de disclosure.

Inputs

Param Description
var Optional owner/repo. Si vide, sélectionne automatiquement à partir de la sortie chaînée github-trending ou de l'API trending récente.

Sélection des cibles

  • Langage : JS/TS, Python, Go, Rust, ou Solidity.
  • ≥ 50 stars, pas un fork, actif dans les 6 derniers mois.
  • Traite les inputs non fiables (auth, crypto, network, file I/O, templating).
  • Ignorer : les repos d'apprentissage intentionnellement vulnérables (juice-shop, webgoat, *-ctf).
  • Ignorer si aucun PVR activé ET aucun SECURITY.md — pas de canal sûr.
  • Ignorer si scanné dans les 30 derniers jours (dédup via vuln-scanned.json).

Scanners

# Static analysis
semgrep --config=p/security-audit --config=p/owasp-top-ten --config=p/secrets \
  --severity=ERROR --severity=WARNING --json --timeout=300 \
  --exclude=test --exclude=examples --exclude=node_modules .

# Verified secrets (filesystem + git history)
trufflehog filesystem . --only-verified --json
trufflehog git file://. --only-verified --json

# Dependency CVEs across npm/pip/go/cargo/etc
osv-scanner --format=json --recursive .

# Solidity (if .sol files present)
slither . --json out.json --exclude-informational --exclude-low

L'échec de tous les scanners rapporte une error, jamais clean.

Triage (par candidate)

  1. Ouvrir le fichier à la ligne rapportée. Lire 30-50 lignes de contexte.
  2. Écrire une phrase : ce que l'attaquant contrôle, ce qu'il réalise. Impossible ? Rejeter.
  3. Vérifier le call path — atteignable depuis une input externe dans le code de production ?
  4. Rejeter si en tests, fixtures, examples, derrière un feature flag, ou nécessite des privs attaquant ≥ ce qui est gagné.

Disclosure routing

Finding Channel
Dependency CVE Public PR mettant à jour la dépendance — CVE déjà public.
Code vulnerability PVR — publier crée un zero-day.
Verified leaked secret PVR + rotation request.
Smart-contract bug PVR — l'exploitation on-chain est souvent immédiate.
No PVR + no SECURITY.md Skip and log. Do no harm.
# PVR (private advisory)
gh api -X POST "/repos/$REPO/security-advisories" \
  -f summary="..." -f severity="..." -F cwe_ids='["CWE-89"]' -f description="..."

Les patches proposés pour les flaws de code vont uniquement dans votre fork (branche private/fix-<slug>). Ne jamais ouvrir une PR publique pour une flaw de code non patchée — lier le SHA dans le corps de l'advisory pour que le mainteneur puisse cherry-pick.

Required scopes

GH_TOKEN avec repo + repository_advisories:write (pour PVR).

Rules

  • Do no harm. Pas de canal sûr → pas de publication.
  • Lire le code. Un hit de scanner seul n'est pas une vulnerability.
  • Un report par repo par run ; bundler les findings liés.
  • Ignorer les repos intentionnellement vulnérables et les CTFs.
  • Être déférent — tu offres de l'aide, tu ne fais pas de notation.

Skills similaires