---
name: deepsec-security-gate
description: Gate de securite defensif pour auditer une application creee avec un agent IA avant livraison ou deploiement. Utiliser pour verifier secrets, auth, roles, donnees personnelles, API, paiements, uploads, IA, dependances, headers, logs, migrations, backups et rollback. Inspire de l'approche DeepSec, sans actions offensives ni exploitation.
---

# DeepSec Security Gate

Ce skill sert a securiser une application avant de la livrer.

Il est defensif : il ne cherche pas a exploiter, contourner ou attaquer. Il cherche a empecher les erreurs classiques des apps generees par IA.

## Verdicts

- `PASS` : livrable.
- `PASS AVEC RESERVES` : livrable en interne ou test limite, risques connus.
- `FAIL` : ne pas deployer / ne pas exposer.

## 1. Secrets

Verifier :

- pas de cle API dans le repo ;
- pas de `.env` committe ;
- `.env.example` sans valeurs reelles ;
- secrets lus depuis variables d'environnement ou coffre ;
- logs sans secrets ;
- messages d'erreur sans secrets ;
- pas de token dans URL publique ;
- pas de credentials de demo reutilisables en prod.

Commandes utiles :

```bash
git status --short
git diff -- . ':!package-lock.json' ':!pnpm-lock.yaml'
rg -n "sk-|api[_-]?key|secret|token|password|PRIVATE KEY|BEGIN RSA|DATABASE_URL|AUTH_SECRET" .
```

Adapter les commandes au projet.

## 2. Auth

Verifier :

- routes privees protegees cote serveur ;
- routes admin protegees cote serveur ;
- roles verifies cote serveur ;
- action sensible impossible sans session ;
- cookies securises ;
- expiration session ;
- 2FA pour admin si donnees sensibles ou prod ;
- reset password non trivial ;
- email verification si necessaire.

Anti-patterns :

- cacher un bouton admin sans proteger l'endpoint ;
- faire confiance a `role` envoye par le client ;
- stocker un token long terme dans `localStorage` sans raison ;
- endpoint `/api/admin/*` sans verification serveur.

## 3. Donnees personnelles

Verifier :

- minimisation des donnees ;
- finalite claire ;
- consentement ou base legale si necessaire ;
- suppression/export possible si produit public ;
- donnees sensibles chiffrees ou evitees ;
- pas de vraies donnees dans seed/demo ;
- pas d'indexation publique accidentelle ;
- backups proteges.

## 4. API et logique metier

Verifier :

- validation Zod/Yup/schema ou equivalent ;
- rate limit sur endpoints publics ;
- CORS strict ;
- CSRF gere si cookies ;
- ownership check sur chaque ressource ;
- pagination sur listes ;
- pas de mutation en GET ;
- erreurs generiques ;
- logs serveur suffisants.

Tests manuels :

```text
Essayer de lire une ressource d'un autre utilisateur.
Essayer d'appeler une action admin sans admin.
Essayer d'envoyer un payload vide, trop long, invalide.
Essayer de spammer un endpoint public.
```

## 5. Paiement

Verifier :

- prix defini cote serveur ;
- checkout cree cote serveur ;
- webhook verifie par signature ;
- statut abonnement relu depuis base ou provider ;
- acces premium non base sur un flag client ;
- idempotence webhook ;
- logs des evenements paiement ;
- pas de livraison avant paiement confirme si risque financier.

## 6. Uploads et fichiers

Verifier :

- taille max ;
- type MIME et extension ;
- nom fichier neutralise ;
- stockage prive par defaut ;
- URL signee si fichier sensible ;
- antivirus ou moderation si besoin ;
- aucun fichier upload executable ;
- images retraitees si affichage public.

## 7. IA

Verifier :

- pas de donnees sensibles envoyees sans raison ;
- prompt system defensif ;
- garde-fous sur actions irreversibles ;
- pas d'execution aveugle de code genere ;
- couts limites ;
- quotas par utilisateur ;
- fallback sans IA ;
- logs d'erreurs ;
- sortie IA validee avant insertion en base si critique.

## 8. Dependances

Verifier :

- lockfile present ;
- dependances inutiles supprimees ;
- versions maintenues ;
- audit dependances si possible ;
- pas de package inconnu ajoute sans raison ;
- scripts postinstall suspects verifies.

Commandes utiles :

```bash
npm audit
pnpm audit
npm outdated
```

Utiliser ce qui correspond au projet.

## 9. Frontend

Verifier :

- pas de rendu HTML utilisateur sans sanitation ;
- labels de formulaires ;
- etats loading/error/empty ;
- responsive mobile ;
- contrastes corrects ;
- pas de donnees sensibles dans le HTML ;
- pas de source maps publiques si risque eleve ;
- liens externes avec `rel="noopener noreferrer"`.

## 10. Deploiement

Verifier :

- build propre ;
- migrations revues ;
- backup avant migration ;
- rollback defini ;
- HTTPS ;
- headers securite de base ;
- variables prod configurees hors repo ;
- logs accessibles ;
- monitoring minimal ;
- healthcheck.

Headers utiles :

```text
Content-Security-Policy
Strict-Transport-Security
X-Frame-Options ou frame-ancestors
X-Content-Type-Options
Referrer-Policy
Permissions-Policy
```

## Rapport

Produire :

```markdown
# DeepSec Security Gate

## Verdict
PASS / PASS AVEC RESERVES / FAIL

## Surface auditee
## Preuves
## Bloquants
## Risques moyens
## Risques faibles
## Correctifs recommandes
## Decision
```

Si un secret reel est trouve :

1. ne pas l'afficher ;
2. indiquer le fichier et la ligne de facon prudente ;
3. recommander rotation ;
4. supprimer du repo ;
5. verifier l'historique git si necessaire.

## Prompt de lancement

```text
Utilise deepsec-security-gate.
Audite cette application avant deploiement.
Cherche surtout les erreurs typiques des apps generees par IA : secrets, auth faible, IDOR, endpoints publics, paiement, donnees personnelles, uploads, IA, dependances.
Ne fais aucune exploitation offensive. Produit un verdict PASS / PASS AVEC RESERVES / FAIL.
```

