← Tous les articles

IDOR

ANTS piratée : 19 M de Français exposés via IDOR

·5 min read

Ce qui s'est passé le 15 avril 2026

L'Agence Nationale des Titres Sécurisés (ANTS), connue sous le nom de France Titres, a été victime d'une intrusion majeure le 15 avril 2026. Des attaquants ont exploité une faille de type IDOR (Insecure Direct Object Reference) sur l'API publique du service, exposant les données personnelles de 19 millions de citoyens français : noms, adresses e-mail et dates de naissance.

Pour comprendre l'ampleur de la catastrophe, imaginez une armoire à dossiers où chaque tiroir est numéroté — et où n'importe qui peut ouvrir le tiroir 1 000 001 après avoir ouvert le tiroir 1 000 000, sans aucune vérification d'identité.

Qu'est-ce qu'une faille IDOR, concrètement ?

IDOR signifie Insecure Direct Object Reference. C'est l'une des vulnérabilités les plus anciennes et les plus répandues du web, classée dans la catégorie OWASP A01:2021 – Broken Access Control.

Le principe est simple : une API expose un identifiant d'objet directement dans l'URL ou le corps de la requête, et ne vérifie pas si l'utilisateur connecté a le droit d'accéder à cet objet.

Exemple concret dans le cas de l'ANTS :

GET /api/v1/dossiers/4872301
Authorization: Bearer <token_utilisateur_lambda>

En incrémentant simplement l'ID (4872302, 4872303, etc.), un attaquant récupère les dossiers d'autres citoyens. Pas besoin d'exploit sophistiqué. Pas de zero-day. Un simple script Python avec requests et une boucle for suffit.

import requests

headers = {"Authorization": "Bearer TOKEN_VOLE"}
for dossier_id in range(4000000, 5000000):
    r = requests.get(f"https://api.antsfr.fr/dossiers/{dossier_id}", headers=headers)
    if r.status_code == 200:
        print(r.json())

C'est exactement ce type de script automatisé qui a permis l'exfiltration massive.

Pourquoi l'ANTS est particulièrement critique

L'ANTS gère les passeports, les cartes nationales d'identité, les permis de conduire et les certificats d'immatriculation. Les données exposées — noms, e-mails, dates de naissance — constituent le triptyque classique utilisé pour :

  • L'ingénierie sociale et le phishing ciblé
  • L'usurpation d'identité lors de démarches administratives
  • Le credential stuffing si ces données recoupent d'autres fuites

Du côté réglementaire, la CNIL a été notifiée en urgence (obligation légale sous 72h après détection, conformément à l'article 33 du RGPD). Une violation impliquant des données d'identité officielle pour 19 millions de personnes représente l'un des incidents les plus graves jamais enregistrés en France. Les sanctions potentielles peuvent atteindre 4% du chiffre d'affaires annuel mondial ou 20 millions d'euros selon le RGPD.

L'ANSSI a été immédiatement mobilisée pour l'investigation forensique.

Les erreurs techniques derrière cette faille

Une faille IDOR de cette envergure sur un service gouvernemental en 2026 n'est pas une erreur isolée — c'est le signe d'un déficit systémique dans les pratiques de développement sécurisé.

Trois absences critiques :

  1. Absence de contrôle d'autorisation au niveau objet : l'API vérifie l'authentification (le token est valide) mais pas l'autorisation (ce token a-t-il le droit d'accéder à CE dossier ?). C'est la distinction fondamentale entre AuthN et AuthZ.

  2. Identifiants séquentiels prévisibles : utiliser des IDs numériques croissants est une erreur de conception. Des UUID v4 aléatoires (f47ac10b-58cc-4372-a567-0e02b2c3d479) n'auraient pas empêché la faille, mais auraient rendu l'énumération pratiquement impossible.

  3. Absence de rate limiting et d'anomaly detection : des millions de requêtes séquentielles sur un même endpoint auraient dû déclencher des alertes bien avant que l'exfiltration soit complète.

Comment détecter et prévenir les IDOR dans vos APIs

Si vous développez une API qui manipule des ressources appartenant à des utilisateurs spécifiques, voici le checklist minimal :

Côté code :

# ❌ Vulnérable
@app.get("/dossiers/{dossier_id}")
def get_dossier(dossier_id: int, current_user: User = Depends(get_current_user)):
    return db.query(Dossier).filter(Dossier.id == dossier_id).first()

# ✅ Sécurisé
@app.get("/dossiers/{dossier_id}")
def get_dossier(dossier_id: int, current_user: User = Depends(get_current_user)):
    dossier = db.query(Dossier).filter(
        Dossier.id == dossier_id,
        Dossier.owner_id == current_user.id  # <-- vérification cruciale
    ).first()
    if not dossier:
        raise HTTPException(status_code=404)  # 404, pas 403, pour éviter l'énumération
    return dossier

Côté infrastructure :

  • Rate limiting agressif sur les endpoints API (ex: 100 req/min par token)
  • Alertes sur les patterns d'accès séquentiels
  • Audit logs avec corrélation d'identité
  • Tests de pénétration automatisés en CI/CD

Ce qu'un scanner comme Scorra aurait détecté

Les failles IDOR sont notoirement difficiles à détecter avec des scanners traditionnels car elles nécessitent une compréhension du contexte applicatif. Cependant, un scanner intelligent comme Scorra peut identifier ces vulnérabilités en :

  • Testant automatiquement la substitution d'identifiants dans les paramètres d'URL et les corps de requêtes
  • Analysant les différences de réponses entre des requêtes avec des IDs appartenant à différents contextes
  • Détectant les patterns d'IDs séquentiels dans les réponses API, un signal d'alerte immédiat
  • Vérifiant la cohérence AuthN/AuthZ sur chaque endpoint découvert

Dans le cas de l'ANTS, un scan pré-production aurait identifié que l'endpoint /dossiers/{id} retournait des données d'autres utilisateurs sans erreur d'autorisation — une signature classique d'IDOR.

Ce que vous devez faire maintenant

Si vous avez utilisé les services ANTS (demande de passeport, CNI, immatriculation) avant avril 2026 :

  1. Soyez vigilant aux e-mails de phishing utilisant vos données exactes (prénom, date de naissance)
  2. Activez l'authentification à deux facteurs sur tous vos comptes importants
  3. Surveillez vos comptes bancaires pour toute activité suspecte

Si vous êtes développeur ou responsable technique :

  1. Auditez vos APIs pour les patterns IDOR dès aujourd'hui
  2. Remplacez les IDs séquentiels par des UUIDs ou des identifiants opaques
  3. Implémentez des tests de contrôle d'accès dans votre pipeline CI/CD

La faille de l'ANTS n'est pas une anomalie — c'est un rappel brutal que les vulnérabilités de contrôle d'accès représentent le risque numéro 1 du web selon l'OWASP depuis 2021. Aucun projet, qu'il soit gouvernemental ou startup, n'y est immunisé sans tests systématiques.


Scannez votre API avant qu'il ne soit trop tard. Lancez un scan gratuit sur scorra.io et découvrez en moins de 5 minutes si vos endpoints sont vulnérables à l'IDOR et aux autres failles de contrôle d'accès.

Votre app est-elle sécurisée ?

Scannez-la maintenant - gratuitement. Obtenez un score de sécurité en 60 secondes.

Scanner votre app →