Les API constituent l’épine dorsale des applications modernes et la surface la plus attaquée.Plus de 80 % du trafic Web transite désormais par des API, et les attaques API ont augmenté de 700 % ces dernières années. Les tests de sécurité API ne sont plus facultatifs : ils sont essentiels pour toute organisation qui expose des API à des partenaires, des applications mobiles ou Internet.
Points clés à retenir
- Les API présentent des vulnérabilités uniques :Le Top 10 de sécurité OWASP API couvre les menaces spécifiques aux API qui ne sont pas détectées par les tests Web traditionnels.
- L'autorisation au niveau des objets brisés (BOLA) est le risque n°1 API :Les attaquants manipulent les ID d'objet dans les requêtes API pour accéder aux données d'autres utilisateurs.
- Les lacunes en matière d’authentification et de limitation de débit sont omniprésentes :De nombreuses API ne disposent pas d'une validation de jeton appropriée, d'une limitation du débit et d'une prévention des abus.
- Des tests automatisés + manuels sont requis :Les scanners automatisés détectent les failles API courantes. Les tests manuels détectent les vulnérabilités de la logique métier et les contournements d’autorisation complexes.
OWASP API Top 10 de la sécurité (2023)
| # | Vulnérabilité | Descriptif | Approche de test |
|---|---|---|---|
| API1 | Autorisation au niveau de l'objet brisé | Accéder aux objets d'autres utilisateurs en modifiant les identifiants | Testez chaque point de terminaison avec différents jetons utilisateur, énumérez les ID d'objet |
| API2 | Authentification brisée | Faible génération de jetons, validation manquante, flux non sécurisés | Analyse de jetons, force brute, manipulation de flux |
| API3 | Autorisation au niveau de la propriété des objets cassés | Affectation de masse, exposition excessive des données dans les réponses | Ajoutez des champs inattendus dans les requêtes, analysez les données de réponse |
| API4 | Consommation illimitée de ressources | Limites de débit, de pagination ou de taille manquantes | Tests d'inondation, tests de charge utile importante, contournement de pagination |
| API5 | Autorisation de niveau de fonction brisée | Accéder aux points de terminaison d'administrateur en tant qu'utilisateur régulier | Testez les points de terminaison d'administrateur avec des jetons non-administrateur |
| API6 | Accès illimité aux flux commerciaux sensibles | Abus automatisé des fonctionnalités commerciales | Simulation de robots, tests de flux automatisés |
| API7 | Contrefaçon de requête côté serveur (SSRF) | API récupère les URL contrôlées par les attaquants | Manipulation des paramètres d'URL, sondage du réseau interne |
| API8 | Mauvaise configuration de la sécurité | Erreurs verbeuses, mauvaise configuration CORS, méthodes inutiles | Analyse de configuration, analyse d'en-tête |
| API9 | Mauvaise gestion des stocks | Points de terminaison API obsolètes, non documentés ou fantômes | Découverte API, comparaison de la documentation |
| API10 | Consommation dangereuse des API | Faire confiance aux réponses API de tiers sans validation | Manipulation de la réponse, usurpation d'identité API en amont |
API Méthodologie de test de sécurité
Examen de la découverte et de la documentation
Commencez par mapper tous les points de terminaison API. Comparez la documentation API (spécifications OpenAPI/Swagger) avec le comportement réel. Utilisez des outils tels que Burp Suite, Postman et des scripts personnalisés pour découvrir les points de terminaison non documentés. Les API fantômes (points de terminaison qui existent mais ne sont pas documentés) sont courantes et manquent souvent de contrôles de sécurité parce qu'elles ont été oubliées.
Tests d'authentification
Testez les mécanismes d'authentification API : validation des jetons JWT (les jetons peuvent-ils être manipulés, falsifiés ou rejoués ?), flux OAuth (le paramètre d'état est-il appliqué ? Les URI de redirection peuvent-ils être manipulés ?), gestion des clés API (les clés sont-elles correctement étendues ? Peuvent-elles être extraites du code côté client ?) et gestion des sessions (les jetons expirent-ils ? Peuvent-ils être révoqués ?).
Tests d'autorisation
Testez chaque point de terminaison avec différents niveaux de privilèges. Remplacez les ID utilisateur, les ID de locataire et les ID d'objet dans les demandes pour vérifier les contrôles d'accès. Testez l'autorisation horizontale (utilisateur A accédant aux données de l'utilisateur B) et l'autorisation verticale (utilisateur régulier accédant aux points de terminaison d'administration). Utilisez l'automatisation pour tester systématiquement tous les points de terminaison : les tests manuels à eux seuls ne parviennent pas à détecter les points de terminaison dans les grandes API.
Validation des entrées et tests d'injection
Testez tous les paramètres d'entrée pour détecter les vulnérabilités d'injection : injection SQL dans les paramètres de requête, injection NoSQL dans les corps JSON, injection de commandes dans les points de terminaison de traitement et injection spécifique à GraphQL (requêtes imbriquées, abus d'introspection). Testez à la fois avec des entrées mal formées (fuzzing) et des charges utiles soigneusement conçues ciblant des types d’injection spécifiques.
API Outils de tests de sécurité
- Suite rots :Tests de sécurité API complets avec fonctionnalités de proxy, de scanner et d'automatisation.
- Facteur :Plateforme de développement API avec collections de tests de sécurité et scripts de tests automatisés.
- ZAP OWASP :Scanner de sécurité API gratuit avec importation OpenAPI et analyse automatisée.
- Noyaux :Scanner basé sur des modèles avec des modèles spécifiques à API pour les vulnérabilités courantes.
- Arjun :Outil de découverte de paramètres HTTP pour trouver les paramètres API cachés.
- GraphQL Voyageur :GraphQL API outil de visualisation et d'introspection.
Comment Opsio teste la sécurité de API
- OWASP API Couverture du Top 10 :Chaque test API couvre les 10 catégories avec des techniques de test spécifiques à la plate-forme.
- Approche automatisée + manuelle :Analyse automatisée des vulnérabilités connues, tests manuels de la logique métier et des failles d'autorisation complexes.
- Expertise GraphQL :Tests spécialisés pour les API GraphQL, y compris l'introspection, les attaques par requêtes imbriquées et les abus de requêtes par lots.
- Intégration CI/CD :Nous vous aidons à intégrer les tests de sécurité automatisés API dans votre pipeline de déploiement pour une assurance continue.
Foire aux questions
En quoi les tests de sécurité API sont-ils différents des tests d'applications Web ?
Les tests d'applications Web se concentrent sur l'interface utilisateur et les interactions basées sur le navigateur. Les tests API ciblent directement la couche API — testant les points de terminaison, les paramètres, les jetons d'authentification et la sérialisation des données que l'interface utilisateur ne peut pas exposer. De nombreuses vulnérabilités n'existent qu'au niveau de la couche API et ne peuvent pas être découvertes uniquement par les tests de l'interface utilisateur.
Dois-je tester les API internes ou uniquement celles destinées au public ?
Les deux. Les API publiques sont directement exposées aux attaquants et doivent être testées en premier. Les API internes sont souvent moins sécurisées car les développeurs assument une protection au niveau du réseau. Si un attaquant obtient un accès interne (par phishing, compromission VPN ou mauvaise configuration du cloud), les API internes deviennent la surface d'attaque pour les mouvements latéraux et le vol de données.
Comment puis-je sécuriser spécifiquement les API GraphQL ?
GraphQL introduit des risques uniques : profondeur de requête illimitée (déni de service), divulgation d'introspection (fuite de schéma) et abus de requêtes par lots (contournement des limites de débit). Sécurisez GraphQL en désactivant l'introspection en production, en mettant en œuvre des limites de profondeur et de complexité des requêtes, en appliquant une autorisation par champ et en limitant le débit par le coût des requêtes plutôt que par le nombre de requêtes.
