Mass Assignment
hackingDé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
Expert en cybersécurité offensive et intelligence artificielle. Pentest, audit et développement IA sur-mesure.
Services
- Audit Infrastructure
- Audit Kubernetes
- Audit Microsoft 365
- Audit Sécurité Réseau
- Analyse de Risques
- Audit Active Directory
- Audit Application Web
- Audit Cloud (AWS/Azure/GCP)
- Audit Messagerie
- Audit API (OWASP Top 10)
- Audit DevSecOps & CI/CD
- Audit Code Source (SAST)
- Audit Postes de Travail
- Audit Sauvegarde & Résilience
- Audit OT/SCADA (IEC 62443)
- Développement IA
- Formations
Ressources
Projets & Outils
© 2026 Ayi NEDJIMI Consultants. Tous droits réservés. 2.1.7
Un projet cybersécurité ?
Expert dispo · Réponse 24h