Authentification défaillante et désérialisation non sécurisée
Découvrez comment une gestion faible des sessions, le bourrage d’identifiants et les vulnérabilités de désérialisation non sécurisée permettent aux attaquants de détourner des comptes et d’exécuter du code.
Authentification défaillante et désérialisation non sécurisée est une leçon Cloud & IT Cert Prep gratuite sur CoddyKit. Ceci est la leçon 3 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cloud & IT Cert Prep, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu’est-ce qu’une authentification défaillante ?
L’authentification défaillante désigne les faiblesses dans la manière dont une application vérifie l’identité des utilisateurs et gère les sessions. Lorsque l’authentification est défaillante, les attaquants peuvent compromettre des mots de passe, des clés ou des jetons de session afin d’usurper l’identité d’autres utilisateurs. Cette catégorie du Top 10 de l’OWASP couvre un large éventail de failles : identifiants faibles, mauvaise gestion des sessions, MFA manquante et stockage non sécurisé des identifiants.
Remplissage d’identifiants et pulvérisation de mots de passe
Le remplissage d’identifiants utilise de longues listes de paires nom d’utilisateur/mot de passe provenant de fuites de données antérieures et les essaie sur d’autres sites, en exploitant la réutilisation des mots de passe. La pulvérisation de mots de passe adopte l’approche inverse : essayer un petit ensemble de mots de passe courants (par exemple, Password1!) sur de nombreux comptes afin d’éviter les seuils de verrouillage des comptes. Ces deux attaques réussissent en raison de politiques de mots de passe faibles et de l’absence de MFA.
# Password spraying concept (defensive awareness)
# Attacker tries 'Password1!' against 10,000 accounts
# rather than trying 10,000 passwords against 1 account
# This avoids triggering lockout policies (e.g., 5 attempts/account)
# Defense: MFA + adaptive authentication + rate limitingGestion faible des sessions
Les sessions relient les utilisateurs authentifiés à l’état de leur application. Les failles de gestion faible des sessions comprennent : des valeurs de jetons de session prévisibles (des ID séquentiels que les attaquants peuvent deviner), des jetons qui n’expirent jamais, des jetons transmis via HTTP plutôt que HTTPS et l’absence d’invalidation des jetons lors de la déconnexion. Un attaquant qui obtient un jeton de session valide peut usurper l’utilisateur sans connaître son mot de passe.
# Signs of weak session management:
# /login response sets:
# Set-Cookie: session=1042 (predictable, sequential)
# Missing: Secure; HttpOnly; SameSite flags
# Missing: session expiry / Max-Age
# Logout does NOT invalidate server-side sessionFixation et détournement de session
La fixation de session force une victime à utiliser un ID de session choisi par l’attaquant. Par exemple, un attaquant envoie un lien contenant un cookie de session prédéfini ; après l’authentification de la victime, il utilise ce même ID de session pour accéder au compte. Le détournement de session consiste à voler un jeton de session existant via XSS, écoute du réseau (sur des connexions non chiffrées) ou vol de cookies. La solution consiste à régénérer les ID de session après la connexion et à utiliser HTTPS partout.
Stockage non sécurisé des mots de passe
Stocker les mots de passe en clair ou avec un hachage faible (MD5, SHA-1) constitue une défaillance critique de l’authentification. Lorsqu’une base de données est compromise, les mots de passe en clair et les hachages faibles sont immédiatement exploitables. Le stockage sécurisé des mots de passe nécessite un algorithme de hachage adaptatif conçu pour les mots de passe : bcrypt, Argon2 ou PBKDF2, avec un sel aléatoire propre à chaque utilisateur. Ces algorithmes sont volontairement lents, ce qui rend le cassage hors ligne coûteux en ressources informatiques.
# Python example — secure password hashing with bcrypt
import bcrypt
# Hash a password (includes random salt automatically)
password = b'UserSuperSecret123'
hashed = bcrypt.hashpw(password, bcrypt.gensalt(rounds=12))
# Verify
bcrypt.checkpw(password, hashed) # returns TrueQu’est-ce que la désérialisation non sécurisée ?
La sérialisation convertit l’état d’un objet dans un format (JSON, XML, binaire) afin de le stocker ou de le transmettre. La désérialisation reconstruit l’objet à partir de ce format. La désérialisation non sécurisée se produit lorsqu’une application désérialise des données contrôlées par un attaquant sans les valider, ce qui permet à celui-ci de modifier des objets sérialisés afin de manipuler la logique de l’application, d’élever ses privilèges ou d’exécuter du code arbitraire sur le Server.
Exemple d’attaque par désérialisation
Un schéma d’attaque courant consiste à transmettre des objets sérialisés dans des cookies ou des paramètres d’API. Par exemple, une application Java qui utilise ObjectInputStream.readObject() sur des données non fiables peut déclencher une exécution de code à distance (RCE) par l’intermédiaire de chaînes gadget présentes dans des bibliothèques populaires (Apache Commons Collections). L’attaquant élabore une charge utile sérialisée malveillante, l’envoie à l’application et du code s’exécute pendant la désérialisation, souvent avant même l’exécution d’une vérification d’authentification.
# Insecure deserializing pattern (Python pickle — dangerous)
import pickle
# Attacker-controlled payload
class Exploit:
def __reduce__(self):
import os
return (os.system, ('id',)) # executes 'id' on server
payload = pickle.dumps(Exploit())
pickle.loads(payload) # RCE! Never deserialize untrusted data with picklePrévenir la désérialisation non sécurisée
Les défenses contre la désérialisation non sécurisée comprennent : ne jamais désérialiser de données non fiables avec des formats dangereux comme la sérialisation native de Java ou pickle de Python. Préférez les formats contenant uniquement des données (JSON, XML) à la sérialisation binaire. Si la désérialisation est nécessaire, mettez en place des contrôles d’intégrité (en signant l’objet sérialisé avec HMAC), utilisez des listes d’autorisation pour limiter les classes pouvant être désérialisées et exécutez le code de désérialisation dans des environnements isolés disposant de faibles privilèges.
# Safe approach: sign serialized data before transmitting
import hmac, hashlib, json
def serialize_safe(data, secret):
payload = json.dumps(data) # use JSON, not pickle
sig = hmac.new(secret.encode(), payload.encode(), hashlib.sha256).hexdigest()
return payload + '.' + sigL’authentification multifacteur comme contrôle
L’authentification multifacteur (MFA) est le contrôle individuel le plus efficace contre l’authentification défaillante. Même si des identifiants sont compromis par hameçonnage, remplissage d’identifiants ou fuite d’une base de données, un attaquant dépourvu du second facteur ne peut pas s’authentifier. Microsoft indique que la MFA bloque plus de 99,9 % des attaques automatisées de compromission de comptes. La MFA doit être obligatoire pour les comptes privilégiés et encouragée pour tous les utilisateurs.
Verrouillage des Account et limitation du débit
Les politiques de verrouillage des Account désactivent temporairement un Account après un nombre défini de tentatives de connexion échouées, ce qui ralentit les attaques par force brute. Toutefois, les verrouillages peuvent permettre un Denial de Service contre les utilisateurs légitimes : les attaquants déclenchent intentionnellement des verrouillages pour empêcher l’accès. La limitation du débit (ralentissement des réponses après des échecs répétés grâce à une temporisation exponentielle) et les défis CAPTCHA réduisent le risque de force brute avec un risque de DoS moindre.
L’authentification défaillante dans l’OWASP Top 10
OWASP classe l’authentification défaillante parmi les risques critiques, car les failles d’authentification sont à la fois courantes et très lourdes de conséquences. Les principaux indicateurs d’une authentification défaillante comprennent : l’autorisation d’attaques automatisées telles que le bourrage d’identifiants, l’autorisation des attaques par force brute ou d’autres attaques automatisées, l’acceptation de Password par défaut, faibles ou connus, l’utilisation de processus faibles de récupération des identifiants, l’utilisation de Password en clair ou hachés avec un algorithme faible, ainsi que l’absence d’une authentification multifacteur ou son inefficacité.
Vérification rapide
Testez votre compréhension des concepts de CompTIA Security+ (SY0-701) présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que : l’authentification défaillante inclut les sessions faibles, le bourrage d’identifiants et le stockage non sécurisé des Password, la désérialisation non sécurisée peut entraîner une exécution de code à distance via des objets sérialisés malveillants, et la MFA, le hachage des Password avec bcrypt, la régénération de session après la connexion et les données sérialisées signées sont des défenses essentielles. Nous allons ensuite étudier le SDLC sécurisé ainsi que les outils SAST et DAST.
Questions Fréquemment Posées
La leçon « Authentification défaillante et désérialisation non sécurisée » est-elle gratuite ?
Oui — le texte complet de « Authentification défaillante et désérialisation non sécurisée » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cloud & IT Cert Prep, passe à CoddyKit PRO. Le cours Cloud & IT Cert Prep comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Authentification défaillante et désérialisation non sécurisée » ?
Découvrez comment une gestion faible des sessions, le bourrage d’identifiants et les vulnérabilités de désérialisation non sécurisée permettent aux attaquants de détourner des comptes et d’exécuter d… Tu pratiques Cloud & IT Cert Prep avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cloud & IT Cert Prep ?
Aucune expérience préalable n'est requise. Cloud & IT Cert Prep sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 3 sur 4.
Combien de temps prend la leçon « Authentification défaillante et désérialisation non sécurisée » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cloud & IT Cert Prep ?
Oui. Chaque leçon Cloud & IT Cert Prep inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Injection SQL et injection de commandes
- Cross-Site Scripting (XSS) et CSRF
- Authentification défaillante et désérialisation non sécurisée
- SDLC sécurisé, outils SAST et DAST