Dans certaines configurations de formsets Django, un utilisateur authentifié autorisé à soumettre le formulaire peut faire supprimer des enregistrements situés hors du queryset limité, sans disposer de droits sur ces objets. Le défaut concerne les modèles dont la clé primaire peut être renseignée par le formulaire ; les modèles utilisant la clé primaire AutoField par défaut ne sont pas concernés.
Source : NVD — CVE-2026-87975
Analyse technique
BaseModelFormSet.save_existing_objects() pouvait prendre la présence d’une clé primaire sur l’instance soumise comme preuve qu’elle appartenait au queryset du formset. Un formulaire forgé avec des données de gestion marquant l’objet pour suppression pouvait ainsi viser un objet hors queryset, notamment avec une clé primaire naturelle, UUID ou OneToOneField acceptée par le formulaire.
Impact, versions et correctif
Action recommandée
Mettre à jour vers Django 5.2.18, 6.0.9 ou 6.1.2 selon la branche utilisée.
Sources
Priorisation DFS : P4 · 1 source(s).