# SECURITY-02 — Rotation des secrets (post-compromission)

**Date** : 2026-06-24
**Contexte** : après découverte de la compromission (cf `BACKDOORS.md`) et backup pré-remédiation.
Un attaquant ayant eu une RCE, **tous les secrets sont considérés compromis**.

## Actions (validées utilisateur)
| # | Secret | Action | Statut |
|---|--------|--------|--------|
| 2a | Salts `wp-config` | `wp config shuffle-salts` (8 clés régénérées) | ✅ — déconnecte tous les utilisateurs |
| 2b | Mot de passe DB | `ALTER USER 'kXgJpMZ2bMNTV8gj'@'localhost'` + `wp config set DB_PASSWORD` (48 hex) | ✅ — `wp db check` OK, site 200 |
| 2c | Mots de passe admin (×6) | `wp user reset-password <id> --skip-email` → anciens mdp invalidés | ✅ |
| 2d | Clés SSH | **Fait par l'utilisateur** (vérif `authorized_keys`) | ✅ (hors périmètre agent) |

> Le nouveau mot de passe DB est stocké **uniquement** dans `wp-config.php` du serveur (jamais dans ce dépôt).
> Backup wp-config avant rotation : `wp-config.php.bak-20260624-rotation`.

## ⚠️ Conséquence pour les utilisateurs
Les **6 administrateurs** sont déconnectés et leur ancien mot de passe ne fonctionne plus.
Ils doivent passer par **« Mot de passe oublié »** (lien email) pour regagner l'accès :
`bastienhkt747`, `Communication`, `LRGD`, `refonte26`, `ResponsableTLO31`, `Stagiaire Communication`.

## Vérification
- Site `/` + `/artiste/…` → HTTP 200 après chaque étape (aucune coupure).
- `wp db check` → tables accessibles avec le nouveau mot de passe.

## Reste à faire (remédiation)
- [ ] **Vecteur d'entrée** (faille initiale — upload non filtré ? plugin vulnérable ?)
- [ ] **Durcissement** : bloquer l'exécution PHP dans `uploads/`
- [ ] **Suppression définitive** des fichiers `*.quarantine-*`
- [ ] Scan DB approfondi (posts/postmeta)

## Statut : ✅ ROTATION COMPLÈTE
