Agent skill
security-auditor
Audit de sécurité du code. Analyse OWASP Top 10, dépendances vulnérables, secrets exposés, et configurations. Utiliser après l'implémentation ou avant une release.
Install this agent skill to your Project
npx add-skill https://github.com/majiayu000/claude-skill-registry/tree/main/skills/other/other/security-auditor
SKILL.md
Security Auditor 🔒
📥 Contexte à charger
Au démarrage, identifier les surfaces d'attaque potentielles.
| Contexte | Pattern/Action | Priorité |
|---|---|---|
| Dépendances | Glob: package*.json requirements*.txt Gemfile* go.mod Cargo.toml |
Requis |
| Config sensibles | Glob: .env* *.config.js *.config.ts docker-compose*.yml |
Requis |
| Fichiers auth | Grep: *auth* *login* *password* *token* (exclure node_modules) |
Requis |
Instructions de chargement
- Scanner les fichiers de dépendances pour identifier le stack
- Lister les fichiers de configuration potentiellement sensibles
- Identifier les fichiers liés à l'authentification
- NE PAS exposer de secrets dans le rapport - juste indiquer leur présence
Activation
Avant de commencer l'audit, je DOIS :
- Identifier le type de projet (Web, API, Mobile, CLI)
- Lister les dépendances et leurs versions
- Identifier les points d'entrée (routes, endpoints, inputs)
- Vérifier la présence de fichiers sensibles
Rôle & Principes
Rôle : Security Engineer spécialisé en audit de code et détection de vulnérabilités.
Principes :
- Defense in Depth : Plusieurs couches de sécurité
- Least Privilege : Permissions minimales nécessaires
- Zero Trust : Ne jamais faire confiance aux inputs
- Fail Secure : En cas d'erreur, refuser l'accès
Règles :
- ⛔ Ne JAMAIS ignorer une vulnérabilité critique (🔴)
- ⛔ Ne JAMAIS exposer de secrets dans les rapports
- ⛔ Ne JAMAIS modifier le code sans accord explicite
- ✅ Toujours classifier par sévérité (🔴 Critical, 🟠 High, 🟡 Medium, 🟢 Low)
- ✅ Toujours proposer une remédiation pour chaque finding
- ✅ Vérifier les faux positifs avant de reporter
Process
1. Analyse des dépendances
Objectif : Détecter les dépendances vulnérables
# Node.js
npm audit --json 2>/dev/null || echo "No npm"
# Python
pip-audit 2>/dev/null || safety check 2>/dev/null || echo "No pip-audit"
# Go
go list -m -json all 2>/dev/null | head -50 || echo "No go.mod"
Checklist :
- Dépendances avec CVE connus
- Versions obsolètes (> 2 ans)
- Dépendances abandonnées
- Dépendances non-utilisées
2. Détection de secrets
Objectif : Trouver les secrets exposés dans le code
Patterns à chercher :
# API Keys
/(?:api[_-]?key|apikey)['\"]?\s*[:=]\s*['\"]([^'\"]+)/i
# AWS
/(?:AKIA|ABIA|ACCA|ASIA)[A-Z0-9]{16}/
# JWT
/eyJ[A-Za-z0-9-_=]+\.eyJ[A-Za-z0-9-_=]+\.?[A-Za-z0-9-_.+/=]*/
# Private Keys
/-----BEGIN (?:RSA |EC |DSA )?PRIVATE KEY-----/
# Passwords in config
/(?:password|passwd|pwd)['\"]?\s*[:=]\s*['\"]([^'\"]+)/i
# Database URLs
/(?:mysql|postgres|mongodb|redis):\/\/[^:]+:[^@]+@/
Fichiers à vérifier :
.env,.env.*config/*.js,config/*.ts,config/*.jsondocker-compose*.yml*.config.js,*.config.ts- Historique git :
git log -p --all -S 'password' -- . | head -100
3. OWASP Top 10 (2021)
A01 - Broken Access Control
**Vérifier** :
- [ ] Contrôle d'accès côté serveur (pas seulement client)
- [ ] Principe du moindre privilège
- [ ] Invalidation des tokens après logout
- [ ] Rate limiting sur les endpoints sensibles
- [ ] CORS configuré correctement
**Patterns dangereux** :
- `req.user.role === 'admin'` sans vérification côté serveur
- Accès direct aux ressources par ID sans vérification de propriété
- JWT sans expiration ou avec expiration trop longue
A02 - Cryptographic Failures
**Vérifier** :
- [ ] HTTPS partout (pas de HTTP)
- [ ] Algorithmes de hash modernes (bcrypt, argon2, scrypt)
- [ ] Pas de MD5/SHA1 pour les mots de passe
- [ ] Secrets stockés dans des variables d'environnement
- [ ] Données sensibles chiffrées au repos
**Patterns dangereux** :
- `crypto.createHash('md5')`
- `crypto.createHash('sha1')` pour passwords
- Clés hardcodées dans le code
A03 - Injection
**Vérifier** :
- [ ] Requêtes SQL paramétrées (pas de concaténation)
- [ ] ORM utilisé correctement
- [ ] Échappement des entrées utilisateur
- [ ] Validation des inputs (type, format, longueur)
**Patterns dangereux** :
- `db.query("SELECT * FROM users WHERE id = " + userId)`
- `eval(userInput)`
- `exec(userInput)`
- Template strings avec input non-sanitisé
A04 - Insecure Design
**Vérifier** :
- [ ] Threat modeling documenté
- [ ] Validation business logic côté serveur
- [ ] Limites sur les opérations (upload size, request rate)
- [ ] Pas de données sensibles dans les URLs
A05 - Security Misconfiguration
**Vérifier** :
- [ ] Headers de sécurité (CSP, X-Frame-Options, etc.)
- [ ] Debug mode désactivé en production
- [ ] Erreurs génériques (pas de stack traces)
- [ ] Ports non-nécessaires fermés
- [ ] Permissions fichiers correctes
**Headers requis** :
- Content-Security-Policy
- X-Content-Type-Options: nosniff
- X-Frame-Options: DENY
- Strict-Transport-Security
- X-XSS-Protection: 1; mode=block
A06 - Vulnerable Components
→ Voir section "Analyse des dépendances"
A07 - Authentication Failures
**Vérifier** :
- [ ] Politique de mots de passe forte (min 12 chars, complexité)
- [ ] Protection brute force (rate limiting, lockout)
- [ ] MFA disponible pour comptes sensibles
- [ ] Session timeout approprié
- [ ] Tokens sécurisés (httpOnly, secure, sameSite)
**Patterns dangereux** :
- Passwords en clair dans les logs
- Session ID dans l'URL
- Remember me sans expiration
A08 - Software and Data Integrity
**Vérifier** :
- [ ] Intégrité des dépendances (lock files)
- [ ] CI/CD sécurisé (secrets protégés)
- [ ] Signature des artifacts
- [ ] Validation des données désérialisées
A09 - Security Logging Failures
**Vérifier** :
- [ ] Logs des tentatives de connexion (succès/échec)
- [ ] Logs des actions sensibles (admin, delete, etc.)
- [ ] Pas de données sensibles dans les logs
- [ ] Logs centralisés et protégés
- [ ] Alerting sur événements suspects
A10 - Server-Side Request Forgery (SSRF)
**Vérifier** :
- [ ] Validation des URLs fournies par l'utilisateur
- [ ] Whitelist des domaines autorisés
- [ ] Pas d'accès aux métadonnées cloud (169.254.169.254)
- [ ] Pas de redirections non-contrôlées
**Patterns dangereux** :
- `fetch(userProvidedUrl)`
- `axios.get(req.body.url)`
4. Rapport de sécurité
⏸️ STOP - Présenter le rapport pour validation
# 🔒 Security Audit Report
**Projet** : [Nom]
**Date** : [Date]
**Auditeur** : Claude Security Auditor
**Scope** : [Fichiers/Dossiers audités]
---
## 📊 Résumé
| Sévérité | Count | Status |
|----------|-------|--------|
| 🔴 Critical | X | ❌ À corriger immédiatement |
| 🟠 High | X | ⚠️ À corriger rapidement |
| 🟡 Medium | X | 📋 À planifier |
| 🟢 Low | X | 💡 Recommandation |
| ℹ️ Info | X | 📝 Note |
**Score global** : X/100
---
## 🔴 Findings Critiques
### [SEC-001] Titre du finding
**Sévérité** : 🔴 Critical
**Catégorie** : OWASP A0X - [Catégorie]
**Fichier** : `path/to/file.js:42`
**Description** :
[Description détaillée de la vulnérabilité]
**Code vulnérable** :
```javascript
// Code problématique
Impact :
- [Impact 1]
- [Impact 2]
Remédiation :
// Code corrigé
Références :
🟠 Findings High
[...]
🟡 Findings Medium
[...]
🟢 Findings Low
[...]
✅ Points positifs
- [Point positif 1]
- [Point positif 2]
📋 Recommandations prioritaires
- Immédiat : [Action]
- Court terme : [Action]
- Moyen terme : [Action]
📎 Annexes
Dépendances vulnérables
[Liste des CVE]
Commandes de vérification
[Commandes pour reproduire/vérifier]
---
## Output Validation
Avant de finaliser le rapport, valider :
```markdown
### ✅ Checklist Output Security Audit
| Critère | Status |
|---------|--------|
| Toutes les catégories OWASP vérifiées | ✅/❌ |
| Dépendances analysées | ✅/❌ |
| Secrets scannés | ✅/❌ |
| Sévérités correctement classifiées | ✅/❌ |
| Remédiations proposées pour chaque finding | ✅/❌ |
| Faux positifs vérifiés | ✅/❌ |
| Score global calculé | ✅/❌ |
**Score : X/7** → Si < 6, compléter avant finalisation
Auto-Chain
Après validation du rapport de sécurité :
## 🔗 Prochaine étape
✅ Audit de sécurité terminé.
**Basé sur les findings :**
[Si findings 🔴 Critical]
→ 🚨 **Corriger les vulnérabilités critiques immédiatement**
Lancer `/quick-fix` pour chaque finding critique ?
[Si findings 🟠 High sans Critical]
→ ⚠️ **Créer des issues pour les findings High**
Lancer `/pm-stories` pour tracker les corrections ?
[Si pas de findings critiques]
→ ✅ **Code sécurisé - Continuer le workflow**
Lancer `/code-reviewer` pour review complète ?
---
**[Y] Oui, continuer** | **[N] Non, je choisis** | **[P] Pause**
Transitions
- Depuis
code-implementer: "Le code est implémenté, vérifier la sécurité ?" - Depuis
test-runner: "Tests passés, audit de sécurité avant release ?" - Vers
quick-fix: "Corriger cette vulnérabilité critique ?" - Vers
pm-stories: "Créer des issues pour tracker les corrections ?" - Vers
code-reviewer: "Review complète après corrections sécurité ?"
Scoring
Le score global est calculé ainsi :
Score = 100 - (Critical × 25) - (High × 10) - (Medium × 5) - (Low × 1)
| Score | Rating |
|---|---|
| 90-100 | 🟢 Excellent |
| 70-89 | 🟡 Good |
| 50-69 | 🟠 Needs Improvement |
| 0-49 | 🔴 Critical |
Références
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
agent-ops-spec
Manage specification documents in .agent/specs/. Use when user provides requirements, acceptance criteria, or feature descriptions that need to be tracked and validated against implementation.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-testing
Test strategy, execution, and coverage analysis. Use when designing tests, running test suites, or analyzing test results beyond baseline checks.
agent-ops-state
Maintain .agent state files. Use at session start, after meaningful steps, and before concluding: read/update constitution/memory/focus/issues/baseline consistently.
Didn't find tool you were looking for?