Selon Endor Labs, une vulnérabilité critique d’injection SQL, CVE-2025-64459 (CVSS v3.1: 9.1), affecte le framework web Python Django. Sont concernés Django 6.0 (beta), 5.2, 5.1 et 4.2 (et potentiellement des versions plus anciennes). Des correctifs sont disponibles dans Django 5.2.8, 5.1.14 et 4.2.26. 🚨
Le problème survient lorsque des applications passent des entrées utilisateur directement à des méthodes QuerySet (filter(), exclude(), get()) via l’expansion de dictionnaire. Des attaquants peuvent injecter les paramètres internes de Django — _connector (AND/OR/XOR) et _negated (inversion booléenne) — pour manipuler la logique SQL, entraînant accès non autorisé, contournement d’authentification et élévation de privilèges, parfois sans authentification préalable.
Exemples d’exploitation (fourni par Endor Labs) :
- Contournement d’authentification : ajout de
_connector=OR&is_superuser=Truepour obtenir l’accès admin sans identifiants valides. - Exfiltration de données : ajout de
_connector=OR&confidential=Truepour accéder à des documents confidentiels indépendamment du propriétaire. - Élévation de privilèges : ajout de
_negated=Truepour inverser la logique de contrôle d’accès.
Correctif dans Django (double validation) :
- Validation au niveau
QuerySet(django/db/models/query.py) : rejet explicite des kwargs internes interdits ("_connector","_negated") avec levée d’exception. - Validation au niveau des objets
Q(django/db/models/query_utils.py) : contrôle de la valeur_connector(doit être parmi AND/OR/XOR ouNone) et gestion de_negated.
Mesures et détection proposées par l’article :
- Mise à jour immédiate vers 5.2.8, 5.1.14 ou 4.2.26 et déploiement en production.
- Revue de code des motifs vulnérables (expansion de
request.GET/POSTversQuerySet). - Bonnes pratiques : validation via Django Forms, liste blanche de paramètres, mappage explicite des champs.
- Détection : recherche de
_connectoret_negateddans les journaux, revue des événements d’authentification et des accès inhabituels; tests automatisés rejetant ces paramètres; usage d’outils (ex. Endor Labs) et CI/CD avec surveillance continue.
IOCs et TTPs
- IOCs: présence de paramètres HTTP
"_connector"et"_negated"dans les requêtes et journaux (ex. logs d’accès web). - TTPs: injection SQL via manipulation d’arguments internes de l’ORM Django; expansion de dictionnaire d’entrées utilisateur vers
filter()/exclude()/get(); contournement par OR logique et inversion via_negated.
Références et contexte adjacent: l’article pointe les commits officiels de correction et rappelle des vulnérabilités Django liées (CVE-2025-59681, CVE-2024-42005, CVE-2022-28346). Article d’analyse technique et d’alerte de sécurité visant à expliquer la faille, ses impacts et les correctifs publiés.
🔗 Source originale : https://www.endorlabs.com/learn/critical-sql-injection-vulnerability-in-django-cve-2025-64459