💻 Développement

dev-security-auditor

Audit de sécurité complet d'une application ou d'un code source — OWASP Top 10, analyse de dépendances, configuration serveur, cryptographie, secrets exposés.

⚡ Installation & lancement en 1 commande

Copiez-collez dans votre terminal : le skill s'installe dans ~/.claude/skills et Claude Code se lance directement dessus.

macOS / Linux
curl -fsSL https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.sh | sh -s -- dev-security-auditor --launch
Windows (PowerShell)
iex "& { $(iwr -useb https://raw.githubusercontent.com/khalilbenaz/claude-skills-collection/main/install.ps1) } dev-security-auditor -Launch"

🚀 Déjà installé ?

claude "/dev-security-auditor"

Ou tapez /dev-security-auditor dans une session Claude Code, ou décrivez simplement votre besoin — le skill se déclenche automatiquement via le skill-router.

🔑 Déclencheurs automatiques

Le skill s'active automatiquement quand votre demande contient :

audit sécuritésecurity auditvérifier la sécuritéest-ce que mon code est sécuriséanalyse de sécurité

📦 Installation manuelle

git clone https://github.com/khalilbenaz/claude-skills-collection.git cp -r claude-skills-collection/skills/dev-security-auditor ~/.claude/skills/

Payload du plugin : skills/dev-security-auditor · source éditable : dev-skills/security-auditor

📖 Manuel

Security Auditor

1. Cadrage du périmètre

Avant toute analyse, établir :

DimensionQuestions clés
Type d'appWeb SPA, API REST/GraphQL, mobile, desktop, micro-services ?
StackLangages, frameworks, BDD, cloud provider
Surface d'attaqueEndpoints exposés, jobs batch, websockets, webhooks, S3 public ?
Assets critiquesPII, données bancaires, tokens, secrets, configs infra
Contexte réglementairePCI-DSS, RGPD, HIPAA, ISO 27001 ?

2. Authentification & Sessions

JWT — vérifications immédiates :

# Décoder un JWT sans vérifier la signature
echo "eyJ..." | cut -d. -f2 | base64 -d 2>/dev/null | jq .
# Vérifier alg: jamais "none", préférer RS256/ES256 à HS256 sur API publique

Checklist :

Cookies :

Set-Cookie: session=xxx; Secure; HttpOnly; SameSite=Strict; Path=/; Max-Age=3600

OAuth 2.0 / OIDC — pièges courants :

3. Contrôle d'accès & Autorisations

# MAUVAIS — contrôle côté client uniquement
if user.role == "admin":  # validé dans le JS du front
    show_admin_panel()

# BON — contrôle systématique côté serveur
@require_permission("admin:read")
def admin_view(request):
    ...

Vérifier :

4. Validation des entrées & Injections

SQL Injection :

# VULNÉRABLE
query = f"SELECT * FROM users WHERE id = {user_id}"

# BON — paramétré
cursor.execute("SELECT * FROM users WHERE id = %s", (user_id,))

XSS :

// VULNÉRABLE
element.innerHTML = userInput;

// BON
element.textContent = userInput;
// + CSP header : Content-Security-Policy: default-src 'self'; script-src 'self'

Autres vecteurs à tester :

5. Headers HTTP & Configuration TLS

Headers à vérifier (réponse serveur) :

curl -sI https://example.com | grep -iE "strict|content-security|x-frame|x-content|referrer|permissions"
HeaderValeur recommandée
Strict-Transport-Securitymax-age=31536000; includeSubDomains; preload
Content-Security-Policypolicy stricte, pas de unsafe-inline
X-Frame-OptionsDENY ou SAMEORIGIN
X-Content-Type-Optionsnosniff
Referrer-Policystrict-origin-when-cross-origin
Permissions-Policydésactiver caméra/micro si non nécessaire

TLS :

# Tester avec ssllabs CLI ou nmap
nmap --script ssl-enum-ciphers -p 443 example.com
# Rejeter : TLS 1.0, TLS 1.1, SSLv3, RC4, DES, 3DES, NULL ciphers

CORS — configuration dangereuse :

// VULNÉRABLE
app.use(cors({ origin: '*', credentials: true }));
// credentials:true avec origin:* = erreur navigateur mais risque de mauvaise config
// Toujours whitelister les origines explicitement

6. Secrets & Configuration

# Scan de secrets dans le dépôt (à lancer en local ou CI)
trufflehog git file://. --only-verified
gitleaks detect --source . --verbose

# Vérifier l'historique git aussi
git log --all --full-history -- "**/*.env" "**/*secret*" "**/*key*"

Pièges fréquents :

7. Dépendances & Supply Chain

# Node.js
npm audit --audit-level=high
npx snyk test

# Python
pip-audit
safety check -r requirements.txt

# .NET
dotnet list package --vulnerable

# Java / Maven
mvn dependency-check:check

# Multi-langages
docker run --rm -v $(pwd):/app aquasec/trivy fs /app

Critères de décision :

8. Cryptographie & Stockage

# MAUVAIS — MD5 ou SHA1 pour les mots de passe
import hashlib
hashed = hashlib.md5(password.encode()).hexdigest()

# BON — bcrypt ou argon2
from argon2 import PasswordHasher
ph = PasswordHasher(time_cost=3, memory_cost=65536)
hashed = ph.hash(password)

Vérifier :

9. Logging & Monitoring

Ce qui ne doit PAS apparaître dans les logs :

# Anti-patterns
logger.info(f"User login: {username} / {password}")
logger.debug(f"JWT: {token}")
logger.error(f"DB error for query: {raw_sql_with_params}")

Checklist :

10. Rapport de Findings

Classifier chaque finding :

SévéritéCritèreAction
CritiqueRCE, SQLi exploitable, credentials exposésHotfix immédiat, notifier CISO
ÉlevéAuth bypass, IDOR sur données sensibles, XSS stockéCorriger avant mise en prod
MoyenCSRF, mauvais headers, secrets dans logsCorriger dans le sprint
FaibleHeaders manquants, verbose errorsBacklog priorisé
InformatifBest practices, recommandations archiDocumentation

Structure d'un finding :

## [CRITIQUE] Injection SQL — endpoint /api/search

**Description** : Le paramètre `q` est interpolé directement dans la requête SQL.
**Preuve** : `GET /api/search?q=' OR '1'='1` → retourne tous les enregistrements.
**Impact** : Exfiltration complète de la base de données.
**Remédiation** :
  - Remplacer l'interpolation par des requêtes paramétrées (exemple ci-dessous)
  - Auditer tous les autres endpoints avec paramètres dynamiques
**Exemple corrigé** : [snippet de code]

Anti-patterns & Pièges

Règles d'usage