Pourquoi et comment sécuriser l'endpoint de l'API ?
Comment protégez-vous votre interface de programmation (API) ?
Nous vivons une ère d'expansion du numérique, où d'énormes quantités de données transitent via des API. Que ce soit pour les affaires, les jeux, l'éducation, la météo, la science ou les arts, tout repose sur les API. Malgré cette dépendance fondamentale aux API, la sécurité reçoit étonnamment peu d'attention.
Les développeurs se contentent souvent des paramètres par défaut de leurs frameworks, ou, pire encore, lorsqu'aucun framework n'est utilisé, ils pensent naïvement suivre les meilleures pratiques de sécurité. Les administrateurs système, quant à eux, font confiance à la sécurité par défaut offerte par leur infrastructure ou leur fournisseur de services.
Une situation préoccupante, il faut bien l'admettre.
Source : développeur.ibm.com
Il est clair qu'il y a beaucoup en jeu, mais on ne le réalise que lorsqu'un incident vraiment grave se produit.
Cependant, commençons par le commencement. 🙂
Pourquoi sécuriser les points d'accès des API ?
La réponse devrait être évidente, n'est-ce pas ?
Nous devons sécuriser les points de terminaison car l'entreprise en dépend entièrement.
Bien que cet argument soit en soi convaincant, je souhaite explorer plus en profondeur ce sujet et souligner d'autres conséquences, tout aussi critiques.
Perte d'activité 📉
C'est une évidence. Si une personne malveillante réussit à exploiter vos points d'accès API, l'ensemble de votre système s'arrêtera net. Les failles de sécurité peuvent être longues à réparer, ce qui peut avoir des conséquences désastreuses pour votre entreprise. Bien que la plupart des entreprises puissent supporter une ou deux heures d'indisponibilité, ce n'est pas le cas pour toutes.
Imaginez les conséquences d'un bureau de change hors service pendant quelques minutes seulement !
Problèmes de conformité
Ne pas sécuriser correctement vos API peut engendrer de graves problèmes, selon votre secteur d'activité ou les zones géographiques avec lesquelles vous travaillez. Par exemple, si vous opérez dans le secteur bancaire (en particulier dans l'UE), les conséquences de l'utilisation d'API non sécurisées se traduiront par des problèmes juridiques et de conformité considérables. Cela pourrait même signer la fin de votre entreprise.
Perte de réputation
Être victime d'un piratage est déjà difficile à vivre, mais si l'incident est rendu public, cela entachera irrémédiablement votre image de marque. Par exemple, Sony a déjà été piratée à plusieurs reprises et, dans les cercles de la sécurité, l'entreprise est considérée comme une source de moqueries de toutes sortes.
Même en l'absence de perte réelle de données ou d'argent, il sera difficile de rassurer vos clients. 🙂
Factures d'infrastructure gonflées 💰
Lorsque votre API fonctionne sur une infrastructure, elle consomme des ressources (bande passante, puissance de calcul et mémoire, principalement). Par exemple, si une API n'est pas correctement sécurisée, des tiers malveillants peuvent interagir avec elle et la forcer à effectuer des tâches inutiles (comme l'exécution de requêtes de base de données lourdes), ce qui peut faire grimper vos factures de manière inattendue.
Sur les plateformes où la mise à l'échelle automatique des ressources est activée (comme AWS), les résultats peuvent être choquants (un aparté, mais si jamais vous rencontrez une telle situation sur AWS, ils sont très compréhensifs et annulent rapidement la facture gonflée – du moins au moment où j'écris ces lignes !).
Moral de l'équipe
Vous pourriez penser que l'équipe responsable de ces compromissions sera démoralisée. Ce n'est pas toujours le cas. Il est possible que ces problèmes soient dus à une faible sécurité de l'infrastructure, ce qui découragera les développeurs, et inversement.
Si cela se reproduit trop souvent, vous finirez par installer une culture que vous regretterez d'avoir laissée se développer.
Avantage pour les concurrents
Imaginez qu'il y ait une violation de sécurité sans perte réelle de données. Vos concurrents pourraient exploiter cet incident pour promouvoir leur propre API, en affirmant qu'elle est plus sécurisée (même si ce n'est pas le cas !). Encore une fois, bonne chance pour convaincre le marché. 🙂
En résumé, les failles de sécurité ont des conséquences qui vont bien au-delà de la simple perte d'argent.
Meilleures pratiques pour sécuriser les points d'accès API
Heureusement, il existe des pratiques simples à mettre en œuvre et largement acceptées que vous pouvez appliquer à vos points d'accès API pour les sécuriser. Voici les recommandations de la plupart des experts en sécurité.
HTTPS en permanence 🔒
Si vos points d'accès API permettent aux consommateurs d'API de communiquer via HTTP ou d'autres protocoles non sécurisés, vous les exposez à un risque important. Les mots de passe, les clés secrètes et les informations de carte bancaire peuvent être facilement volés via une attaque de l'homme du milieu ou via un outil d'analyse de paquets.
Par conséquent, faites en sorte que HTTPS soit la seule option disponible. Quel que soit le caractère trivial d'un point d'accès, la connexion via HTTP ne devrait même pas être envisagée. Un certificat TLS est peu coûteux ; vous pouvez en acquérir un pour moins de 20 dollars auprès du magasin SSL.
Hachage de mot de passe unidirectionnel
Les mots de passe ne doivent jamais être stockés en clair, car en cas de faille de sécurité, tous les comptes d'utilisateurs seraient compromis. L'utilisation du cryptage symétrique est également à éviter, car un attaquant suffisamment persévérant finira par le décrypter.
La seule solution recommandée est l'utilisation d'algorithmes de cryptage asymétriques (ou "à sens unique") pour le stockage des mots de passe. De cette manière, ni un attaquant ni un développeur ou un administrateur système au sein de l'entreprise ne pourra accéder aux mots de passe des clients.
Authentification forte 💪
Aujourd'hui, la plupart des API utilisent une forme d'authentification, mais à mon sens, le système OAuth2 est le plus efficace. Contrairement aux autres méthodes d'authentification, il divise votre compte en ressources et n'autorise qu'un accès limité au détenteur du jeton d'authentification.
De plus, il est recommandé de faire expirer les jetons toutes les 24 heures, par exemple, afin qu'ils doivent être renouvelés. De cette façon, même si votre jeton est divulgué, le délai de 24 heures peut limiter l'impact de la violation.
Imposer une limitation de débit
À moins que votre API ne soit utilisée par des millions de personnes chaque minute, il est judicieux de limiter le nombre d'appels qu'un client peut effectuer vers l'API pendant une période donnée.
Cela permet principalement de dissuader les robots, qui peuvent envoyer des centaines de requêtes simultanées par seconde et surcharger les ressources de votre API sans raison valable. La plupart des frameworks de développement web sont équipés d'un middleware de limitation de débit (et sinon, il est facile d'en ajouter un via une bibliothèque), qui ne prend qu'une minute à configurer.
Valider les entrées
Cela peut sembler évident, mais vous seriez surpris de voir combien d'API tombent dans ce piège. Valider les entrées signifie non seulement vérifier que les données reçues sont dans un format correct, mais aussi s'assurer qu'elles ne contiennent pas de surprises. Un exemple simple est l'injection SQL, qui peut effacer vos bases de données si vous autorisez des chaînes de requêtes sans vérification ou avec des vérifications minimales.
Un autre exemple consiste à valider la taille des requêtes POST et à renvoyer un code d'erreur et un message appropriés au client. Tenter d'accepter et d'analyser des entrées d'une taille démesurée ne fera que surcharger l'API.
Mettre en place un filtrage des adresses IP, si nécessaire
Si vous travaillez dans le secteur du B2B et que vos API sont utilisées par des entreprises à partir d'emplacements prédéfinis, il peut être utile d'ajouter une couche de sécurité supplémentaire pour limiter les adresses IP qui peuvent accéder à votre API. Pour chaque nouvel emplacement et client, l'adresse IP doit être vérifiée par rapport à la requête entrante.
Certes, cela ajoute des contraintes à l'intégration, mais le résultat final est une sécurité beaucoup plus renforcée qu'avec les méthodes classiques.
Outils pour améliorer la protection des API
Existe-t-il des outils qui peuvent nous aider à analyser les vulnérabilités ou, mieux encore, à fournir une première ligne de défense pour la sécurisation des API ?
Heureusement, oui. Il existe de nombreux outils, mais gardez à l'esprit qu'aucune stratégie de sécurité n'est parfaite. Cela dit, ces outils peuvent considérablement améliorer la sécurité de votre API. Ils sont donc recommandés.
Metasploit est un framework open source très populaire pour les tests d'intrusion des applications web et des API. Il peut analyser votre API selon différents paramètres et réaliser un audit de sécurité complet pour identifier divers niveaux de vulnérabilités.
Par exemple, l'analyse de sécurité effectuée par Metasploit peut vous indiquer si les signatures de votre API révèlent des informations sur les technologies et le système d'exploitation sous-jacents. Masquer ces informations représente souvent la moitié du chemin vers la sécurité des API.
Bien que le framework open source de base soit généralement suffisant, il existe d'excellents produits payants basés sur Metasploit qui méritent d'être considérés. Le forfait pro est idéal si vous souhaitez bénéficier d'un support premium et exploiter le framework en profondeur, mais il n'est généralement pas nécessaire si votre équipe est suffisamment compétente.
App Trana
La protection API dédiée d'AppTrana offre une solution complète basée sur les risques pour se prémunir contre un grand nombre de menaces pesant sur les API, notamment les 10 principales menaces répertoriées par OWASP, les attaques DDoS et les attaques de robots ciblant les API, les menaces intégrées, les fuites de données, etc. Après chaque test, le système surveille en permanence votre niveau de risque afin de renforcer votre posture de sécurité.
La protection des API d'AppTrana fournit une solution complète qui combine la détection des risques, la détection des menaces ciblant les API, des règles de sécurité positive pour les API, des règles DDoS spécifiques aux API, des modules de robots spécifiques aux API et des fonctionnalités de découverte d'API.
La découverte d'API assure une visibilité complète sur les appels d'API, y compris les API non documentées et invisibles, afin de vous aider à comprendre la surface d'attaque de votre API. Cette protection API dédiée collecte des informations sur les détails de l'utilisateur, le comportement d'utilisation de l'API, l'activité des menaces, les cartes d'appels d'API, etc. afin de vous présenter un état de la protection en temps réel.
À l'aide d'Indusface AppTrana, vous pouvez générer des règles personnalisées et spécifiques à l'API pour bloquer les abus visant l'API en temps réel.
Cloudflare
En plus d'être un CDN, Cloudflare propose de nombreuses fonctionnalités de sécurité telles que le WAF (pare-feu applicatif web), la limitation de débit et la protection DDoS, qui sont essentielles pour sécuriser votre API contre les menaces en ligne.
Invicti
Invicti se distingue par son "analyse basée sur la preuve". En d'autres termes, il arrive que des anomalies du réseau ou des comportements d'API peu connus soient interprétés comme des failles de sécurité, qui se révèlent par la suite être de fausses alertes.
Cela gaspille des ressources, car toutes les vulnérabilités signalées doivent être analysées manuellement pour s'assurer qu'il ne s'agit pas de faux positifs. Invicti affirme que son outil est capable de vous fournir une preuve de concept suffisamment solide pour les rapports, ce qui élimine les doutes sur les failles identifiées.
Avec des entreprises telles que Sony, Religare, Coca-Cola, Huawei, etc. parmi ses clients, vous pouvez être sûr que ces personnes savent ce qu'elles font. 🙂
SoapUI Pro
Conçu par SmartBear, SoapUI Pro est un outil intuitif et facile à utiliser pour créer des tests d'API et obtenir des rapports précis et basés sur des données. Il s'intègre également de manière transparente à votre pipeline CI/CD, garantissant qu'aucun nouvel ajout de code ne compromet la sécurité de votre API.
SoapUI est capable de fonctionner avec Swagger, OAS et d'autres normes d'API populaires, ce qui réduit considérablement le temps de démarrage. Avec des clients tels que Microsoft, Cisco, MasterCard et Oracle, et des forfaits à partir de 659 dollars par an, c'est un outil précieux pour sécuriser vos API.
Okta
Essayez Okta pour permettre à vos développeurs de se concentrer sur l'amélioration de l'expérience utilisateur tout en assurant la sécurité des données de votre entreprise. Il offre une autorisation OAuth 2.0 et est conçu pour les applications mobiles et web. Il est également compatible avec les services de gestion d'API tiers.
Utilisez Okta pour créer, contrôler et gérer toutes les règles d'accès aux API via des consoles conviviales et spécialement conçues, sans avoir à écrire de code personnalisé. Il vous offre une flexibilité supplémentaire afin que vous n'ayez pas à sécuriser vos API à l'aide d'instances de passerelle supplémentaires.
Okta englobe une politique basée sur l'identité pour contrôler différents types d'utilisateurs et de services au même endroit. Définissez l'accès en fonction des profils d'utilisateurs, des réseaux, des groupes, du consentement et des clients. Étendez les jetons à l'aide des données dynamiques de vos systèmes internes pour profiter d'une intégration plus rapide et d'une migration transparente.
Il facilite l'administration centralisée des API et vous permet de protéger les ressources API. Okta met l'accent sur la sécurité en vous permettant de protéger l'accès entre différents micro-services.
Conclusion
Il existe un grand choix d'outils de sécurité API sur le marché, qu'ils soient open source, gratuits ou commerciaux, ou une combinaison de ces éléments.
Testez quelques-uns de ceux qui sont mentionnés dans cette liste et voyez ceux qui correspondent le mieux à vos besoins.