Qu'est-ce que la Conception Insecure ?
La conception insecure (Insecure Design) est une catégorie introduite dans l'OWASP Top 10 2021. Elle concerne les failles qui proviennent d'un manque de réflexion sur la sécurité lors de la phase de conception de l'application.
Cette vulnérabilité ne concerne pas les erreurs d'implémentation, mais bien l'absence de contrôles de sécurité ou une architecture défaillante dès le départ.
Exemples Courants de Failles
- Absence de rate limiting : Permet les attaques par force brute.
- Pas de ségrégation des rôles : Tous les utilisateurs ont les mêmes privilèges.
- Flux métier non sécurisé : Un utilisateur peut sauter des étapes critiques (ex: passer le paiement).
- Stockage de données sensibles en clair : Mots de passe, tokens, ou données personnelles non chiffrés.
Comment se protéger ?
Adoptez une approche Security by Design :
- Threat Modeling : Identifiez les menaces potentielles avant de coder.
- User Stories de sécurité : Intégrez des exigences de sécurité dans vos critères d'acceptation.
- Bibliothèques de composants sécurisés : Réutilisez des modules déjà audités.
- Tests de conception : Validez l'architecture via des revues de code et des audits.
[!IMPORTANT] La sécurité ne peut pas être "ajoutée" après coup. Elle doit être pensée dès les premières ébauches de l'application.
// MAUVAISE PRATIQUE : Pas de limite de tentatives de connexion
app.post('/login', (req, res) => {
const { username, password } = req.body;
// L'attaquant peut essayer 10 000 mots de passe sans être bloqué
authenticate(username, password);
});
// BONNE PRATIQUE : Rate limiting implémenté
const rateLimit = require('express-rate-limit');
const loginLimiter = rateLimit({
windowMs: 15 * 60 * 1000, // 15 minutes
max: 5, // 5 tentatives maximum
message: 'Trop de tentatives, réessayez dans 15 minutes'
});
app.post('/login', loginLimiter, (req, res) => {
const { username, password } = req.body;
authenticate(username, password);
});Méthodologie STRIDE
Pour structurer votre threat modeling, utilisez le modèle STRIDE :
| Menace | Description |
|---|---|
| Spoofing | Usurpation d'identité |
| Tampering | Altération de données |
| Repudiation | Action non traçable |
| Information Disclosure | Divulgation d'informations |
| Denial of Service | Déni de service |
| Elevation of Privilege | Élévation de privilèges |