Aller au contenu principal
Expert Cybersécurité & IAv9.0
Centres de ressources conformité
Besoin d'un accompagnement expert ?
Devis personnalisé sous 24h — audit, conformité, incident
Checklists Sécurité — Audit & Durcissement
Formats disponibles
📄 PDF 📊 Excel 🌐 Web

11 checklists professionnelles couvrant 2 200+ points de contrôle. Téléchargement gratuit, aucune inscription.

Mass Assignment

hacking

Définition

Le Mass Assignment est une vulnérabilité applicative survenant lorsqu'un framework backend lie automatiquement l'ensemble des paramètres d'une requête HTTP aux attributs d'un objet métier ou d'un modèle ORM, sans filtrage explicite des champs autorisés. Un attaquant ajoute dans le corps JSON ou le formulaire des champs non prévus par l'interface utilisateur, tels que role, isAdmin, accountBalance ou verified, et le framework les persiste directement en base de données si aucune liste blanche (allowlist) n'est définie. La faille est fréquente sur Ruby on Rails (attr_accessible historique), Django REST Framework, Spring (data binding), Laravel Eloquent (fillable/guarded) et les API Node.js utilisant des ORM comme Sequelize ou Mongoose sans schéma de validation strict. Elle est classée CWE-915 et référencée dans l'OWASP API Security Top 10 sous API6:2023 (Unrestricted Access to Sensitive Business Flows) ou API3 selon les versions, souvent testée en pentest via Burp Suite en ajoutant des paramètres devinés au corps des requêtes PUT/PATCH/POST. L'exploitation la plus documentée reste l'escalade de privilège par ajout du champ role=admin lors d'une inscription. La remédiation impose l'usage systématique de DTO (Data Transfer Object), de sérialiseurs avec liste blanche explicite des champs autorisés, et le rejet de toute propriété inconnue plutôt que son ignorance silencieuse.

Description

Le Mass Assignment survient quand un framework web assigne automatiquement tous les paramètres HTTP aux attributs d'un objet métier. Un utilisateur peut ainsi modifier des champs sensibles (is_admin, role, price) non exposés dans le formulaire en les ajoutant manuellement à la requête.

Exploitation

L'attaquant ajoute &is_admin=true à une requête de mise à jour de profil. Si le contrôleur utilise l'affectation de masse sans filtrage (Rails attr_accessible, Django model.save()), il élève ses privilèges ou modifie des données protégées.

Défense

  • Utiliser des DTOs (Data Transfer Objects) pour filtrer explicitement les champs autorisés à la mise à jour
  • Configurer les listes explicites d'attributs autorisés (whitelist) dans les modèles ORM
  • Ne jamais passer directement les paramètres bruts de la requête à une méthode de sauvegarde

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis