API5 Broken Function Level Authorization
devsecopsDé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
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.
Un projet cybersécurité ?
Expert dispo · Réponse 24h