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.

API5 Broken Function Level Authorization

devsecops

Définition

API5 Broken Function Level Authorization est le cinquième risque de l'OWASP API Security Top 10, couvrant les vulnérabilités dans l'autorisation au niveau des fonctions ou endpoints d'une API. Contrairement à l'API1 BOLA qui concerne l'accès à des objets spécifiques (peut-on accéder à la commande #1234 d'un autre utilisateur ?), l'API5 concerne l'accès à des fonctions entières (peut-on accéder à l'endpoint d'administration /api/admin/users qui devrait être réservé aux administrateurs ?). Les manifestations courantes de l'API5 incluent : des endpoints administratifs insuffisamment protégés (l'authentification est vérifiée mais pas le rôle), des méthodes HTTP non documentées qui contournent les contrôles (GET /api/orders est public, mais DELETE /api/orders devrait nécessiter des droits spéciaux), des versions d'API antérieures (v1) sans les contrôles d'autorisation ajoutés dans v2, et des endpoints de debug ou de configuration accessibles sans autorisation suffisante. La prévention de l'API5 nécessite un modèle de contrôle d'accès cohérent et appliqué uniformément : chaque endpoint doit définir explicitement les rôles/permissions requis (principe de whitelist : tout est interdit par défaut sauf ce qui est explicitement autorisé), les contrôles doivent être appliqués côté serveur (jamais côté client), et les endpoints administratifs doivent être particulièrement protégés (authentification forte, logging renforcé, réseau restreint si possible).

Patterns de vulnérabilité API5 courants

Les patterns API5 les plus fréquents : 1) Endpoint admin accessible à tout utilisateur authentifié (authentification vérifiée, rôle ignoré). 2) Méthode HTTP admin non protégée (GET est public, PUT/DELETE devrait nécessiter des droits). 3) V1 de l'API sans les contrôles ajoutés dans V2 (Zombie API vulnerability). 4) Endpoint de debug ou monitoring laissé accessible en production. 5) Logique d'autorisation incomplète (certains paramètres permettent d'accéder à des fonctions non autorisées via le paramètre ?admin=true).

Implémentation d'un modèle d'autorisation RBAC pour les APIs

Un modèle d'autorisation robuste pour les APIs : RBAC (Role-Based Access Control) ou ABAC (Attribute-Based) implémenté via un middleware centralisé appliqué à tous les endpoints, avec une liste explicite des permissions requises par endpoint (ex: [ROLE_ADMIN, PERMISSION_USER_DELETE] pour DELETE /api/users/{id}). Les frameworks modernes facilitent cela : Spring Security @PreAuthorize, Django permissions, Express.js middleware de role-checking. Le principe "deny by default" garantit que les nouveaux endpoints sans annotation explicite sont bloqués.

Tests automatisés de l'autorisation par fonction

Les tests d'API5 utilisent deux comptes de test avec des rôles différents (user standard, admin). Pour chaque endpoint, tester que l'utilisateur standard reçoit bien un 403 Forbidden sur les endpoints admin, et que l'admin accède correctement aux fonctions autorisées. Ces tests de matrice d'autorisation peuvent être automatisés avec des frameworks comme Tavern (Python) ou des collections Postman paramétrées, et intégrés dans la suite de régression de sécurité du pipeline CI.

Articles liés

Un projet cybersécurité ?

Expert dispo · Réponse 24h

Devis