Comment sécurisez-vous votre API?
C'est l'ère de l'explosion de l'économie numérique et des charges massives de données sont acheminées via des API. Affaires, jeux, éducation, météo, science, arts. . . vous le nommez; tout fonctionne sur les API. Pour un monde si fondamentalement dépendant des API, il est étonnamment peu axé sur la sécurité.
Pour les développeurs, les valeurs par défaut de leurs frameworks suffisent; ou pire encore, lorsqu'aucun framework n'est utilisé, ils pensent suivre pratiques de sécurité. Pour les administrateurs système, la sécurité par défaut offerte par leur infrastructure ou leur fournisseur de services est ce sur quoi ils comptent.
Pas joli du tout, si vous me demandez.

Inutile de dire qu'il y a beaucoup en jeu, que nous ne réalisons que lorsque quelque chose vraiment terrible arrive.
Mais tout d'abord. 🙂
Pourquoi sécuriser les points de terminaison d'API?
Cela doit être une évidence, non?
Nous devons sécuriser les terminaux car c'est de cela que dépend l'entreprise.
Bien que ce soit un argument suffisamment fort en soi, je veux élargir un peu le point de vue et mettre en évidence d'autres conséquences connexes, mais tout aussi mortelles.

Perte d'entreprise 📉
C'est la plus évidente. Si quelqu'un réussit à jouer avec vos points de terminaison d'API, cela mettra tout à l'arrêt. Failles de sécurité peut également prendre beaucoup de temps à se remettre, ce qui se traduit par un suicide en termes commerciaux. S'il est vrai que la plupart des entreprises ne seront probablement pas affectées par une heure ou deux de temps d'arrêt, pour certaines, ce n'est pas permis.
Imaginez un bureau de change en panne pendant quelques minutes!
Problèmes de conformité
Ne pas sécuriser correctement vos API peut vous poser de sérieux problèmes, selon les zones géographiques ou les secteurs avec lesquels vous traitez. Par exemple, si vous servez le secteur bancaire (dans l'UE, en particulier), le coût d'être découvert en servant avec des API non sécurisées entraînera d'énormes problèmes juridiques et de conformité. À tel point que cela pourrait même signifier la fin de votre entreprise.
Perte de réputation
Être piraté est déjà assez douloureux en soi, mais si les nouvelles sont rendues publiques, il y aura une perte irrémédiable pour votre image de marque. Par exemple, Sony a déjà été piraté à plusieurs reprises, et dans les cercles de sécurité, l'entreprise est un laughing stock de toutes sortes.
Même si aucune perte réelle de données ou d'argent n'est encourue, bonne chance pour essayer de convaincre vos clients sabordants. 🙂
Factures d'infrastructure gonflées 💰
Lorsque votre API s'exécute sur l'infrastructure, elle consomme des ressources (bande passante, processeur et mémoire, principalement). Par exemple, lorsque l'API n'est pas sécurisée correctement et que des tiers malveillants peuvent interagir avec elle, il leur est possible de forcer l'API à continuer à faire beaucoup de travail inutile (exécuter de lourdes requêtes de base de données, par exemple), ce qui peut tirer vos factures pour des raisons.
Sur les plates-formes où la mise à l'échelle automatique des ressources est activée (comme AWS), les résultats peuvent être choquants (hors sujet, mais si jamais vous êtes pris dans une soupe comme celle-ci sur AWS, ils comprennent bien la situation et renoncent rapidement à la facture gonflée - au moins au moment de la rédaction!) .
Le moral de l'équipe
Donc, vous pensez peut-être que l'équipe qui a laissé ces compromis se produire en perdra le moral. Eh bien, pas tout à fait. Il est possible que les compromis soient dus à une faible sécurité de l'infrastructure, ce qui découragera les développeurs ou vice versa.
Si cela se produit suffisamment de temps, vous aurez entre vos mains une culture que vous regretterez de l'avoir laissée se développer.
Les gains du concurrent
Alors disons qu'il y a eu une brèche, mais il n'y a pas eu de perte réelle. Cependant, vos concurrents utiliseront l'incident pour créer leur propre API et affirmer à quel point la leur est plus sécurisée (même si ce n'est pas le cas!). Encore une fois, bonne chance pour essayer de convaincre le marché. 🙂
Dans l'ensemble, les atteintes à la sécurité ont des conséquences qui vont au-delà de la perte d'argent.
Meilleures pratiques pour sécuriser les points de terminaison d'API
Heureusement, il existe certaines pratiques faciles à mettre en œuvre et bien comprises que vous pouvez appliquer à vos points de terminaison d'API pour les sécuriser. Voici ce que la plupart des experts en sécurité recommandent.
HTTPS toujours 🔒
Si vos points de terminaison d'API permettent aux consommateurs d'API de parler http
ou d'autres protocoles non sécurisés, vous les exposez à un grand risque. Les mots de passe, les clés secrètes et les informations de carte de crédit peuvent facilement être volés comme n'importe quel attaque d'homme au milieu, ou l'outil de renifleur de paquets peut les lire sous forme de texte brut.
Alors, faites toujours https
le uniquement. option disponible. Peu importe à quel point un point de terminaison peut sembler trivial, se connecter http
ne devrait même pas être une option. Le certificat TLS ne coûte pas cher; vous pouvez acheter pour aussi peu que 20 $ auprès du Magasin SSL.

Hachage de mot de passe unidirectionnel
Les mots de passe ne doivent jamais être stockés sous forme de texte brut, car en cas de faille de sécurité, tous les comptes utilisateurs seront compromis. Dans le même temps, le cryptage symétrique doit être strictement évité, car tout attaquant assez ingénieux et persévérant pourra les casser.
La seule option suggérée est des algorithmes de chiffrement asymétriques (ou «unidirectionnels») pour stocker les mots de passe. De cette façon, ni un attaquant ni aucun développeur ou administrateur système au sein de l'entreprise n'aura la possibilité de lire les mots de passe des clients.
Authentification forte 💪
Maintenant, presque toutes les API ont une forme d'authentification, mais à mon avis, le système OAuth2 fonctionne le mieux. Contrairement aux autres méthodes d'authentification, il divise votre compte en ressources et n'autorise qu'un accès limité au porteur du jeton d'authentification.
Dans le même temps, une autre très bonne pratique consiste à définir les jetons pour qu'ils expirent toutes les, disons, 24 heures, afin qu'ils doivent être actualisés. De cette façon, même si votre jeton est divulgué, il est possible que le délai de 24 heures réduise l'impact de la violation.
Appliquer la limitation de débit
À moins que vous n'ayez une API qui est utilisée par des millions de personnes chaque minute, c'est une très bonne idée d'appliquer une limite au nombre d'appels qu'un client peut effectuer vers l'API dans une fenêtre de temps donnée.
C'est principalement pour décourager les bots, qui peuvent continuer à envoyer des centaines de requêtes simultanées chaque seconde et faire en sorte que votre API absorbe les ressources système sans raison valable. Tous les frameworks de développement Web sont livrés avec un middleware limitant le débit (et sinon, il est assez facile de l'ajouter via une bibliothèque) qui ne prend qu'une minute ou deux à mettre en place.
Valider l'entrée
Cela semble être une évidence, mais vous serez surpris du nombre d'API qui en conviennent. Valider l'entrée signifie non seulement vérifier que les données entrantes sont dans un format correct, mais aussi qu'aucune surprise n'est possible. Un exemple simple est l'injection SQL, qui peut effacer vos bases de données si vous laissez passer les chaînes de requête avec peu ou pas de vérification.
Un autre exemple consiste à valider la taille de la demande POST et à renvoyer un code d'erreur et un message appropriés au client. Essayer d'accepter et d'analyser des entrées ridiculement volumineuses ne servira qu'à faire exploser l'API.
Appliquer le filtrage des adresses IP, le cas échéant
Si vous êtes dans les services B2B et que vos API sont utilisées par des entreprises à partir d'emplacements définis, envisagez d'ajouter une couche de sécurité supplémentaire qui restreint les adresses IP pouvant accéder à votre API. Pour chaque nouvel emplacement et nouveau client, l'adresse IP devra être vérifiée par rapport à la demande entrante.
Oui, cela ajoute de la nuisance à onboarding, mais le résultat final est une sécurité beaucoup plus stricte que ce qui peut être obtenu autrement.
Outils pour augmenter la protection des API
Existe-t-il des outils qui peuvent nous aider à analyser les vulnérabilités ou, mieux encore, à offrir la première ligne de défense en matière de sécurisation des API ?
Heureusement, oui. Il existe plusieurs outils que vous pouvez utiliser, mais sachez qu'en fin de compte, aucune stratégie de sécurité n'est parfaite. Cela dit, ces outils peuvent multiplier par plusieurs la sécurité de votre API, ils sont donc recommandés.

Metasploit
Metasploit est un framework open-source extrêmement populaire pour les tests de pénétration des applications Web et des API. Il peut analyser votre API sur plusieurs paramètres différents et effectuer un audit de sécurité exhaustif pour les différents niveaux de vulnérabilités présentes.
Par exemple, l'analyse de sécurité effectuée par Metasploit peut vous dire si vos signatures d'API révèlent les technologies et le système d'exploitation sous-jacents ou non; dissimuler cela représente souvent la moitié de la bataille gagnée en matière de sécurité des API.

Bien que le cadre de base open-source soit généralement suffisant, il existe d'excellents produits payants construits sur Metasploit qui valent le coup d'œil. Le plan pro est idéal si vous souhaitez un support premium et que vous utiliserez le framework en profondeur, mais n'est généralement pas nécessaire si votre équipe est suffisamment expérimentée.
AppTrana
Protection API dédiée d'AppTrana offrent une solution complète basée sur les risques pour se protéger contre un large éventail de menaces d'API, y compris le top 10 de l'API OWASP, les attaques DDoS et bot basées sur l'API, les menaces intégrées, les fuites de données, etc. test, il surveille en permanence votre score de risque pour renforcer la posture de sécurité.
AppTrana La protection des API garantit la solution la plus complète avec la combinaison de la détection des risques, de la détection des menaces API, des politiques de sécurité positive des API, des politiques DDoS spécifiques aux API, des modules de bot spécifiques aux API et des fonctionnalités de découverte d'API.

Sa découverte d'API garantit une visibilité complète sur les appels d'API, y compris les API non documentées et fantômes, pour comprendre votre surface d'attaque d'API. Cette protection d'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. pour présenter l'état de la protection avec des analyses en temps réel.
À l'aide d'Indusface AppTrana, vous pouvez générer des politiques personnalisées spécifiques à l'API pour bloquer les abus axés sur l'API en temps réel.
Cloudflare
Pas seulement CDN mais Cloudflare offrent de nombreuses fonctionnalités de sécurité telles que WAF, limitation de débit Protection DDoS, ce qui sera essentiel pour sécuriser votre API contre les menaces en ligne.
Invicti
invicti est livré avec un USP de «numérisation basée sur l'épreuve». En termes plus simples, il est souvent possible que des conditions de réseau irrégulières ou certains comportements d'API moins connus soient interprétés comme des failles de sécurité, qui se révéleront plus tard erronées.
Cela gaspille des ressources, car toutes les vulnérabilités signalées doivent être analysées à nouveau manuellement pour confirmer qu'il ne s'agit pas de faux positifs. Invicti affirme que l'outil est capable de vous fournir une preuve de concept suffisamment solide pour les rapports, supprimant les doutes sur les maillons faibles trouvés.

Avec des entreprises comme Sony, Religare, Coca-Cola, Huawei, etc., sur leur liste de clients, vous pouvez être sûr que ces gens font quelque chose de bien. 🙂
SoapUI Pro
Construit par SmartBear, SoapUI Pro est un moyen intuitif et simple de créer des tests d'API et d'obtenir des rapports précis et basés sur les données. Il s'intègre également parfaitement à votre pipeline CI / CD, garantissant qu'aucun nouvel ajout de code ne compromet la sécurité de votre API.

SoapUI est capable de travailler avec Swagger, OAS et d'autres normes API populaires, ce qui réduit considérablement le temps de démarrage. Avec des clients comme Microsoft, Cisco, MasterCard, Oracle, etc., et des plans à partir de 659 $ par an, c'est un outil digne pour des API plus sécurisées.
Okta

Essayez Okta pour permettre à vos développeurs de se concentrer sur l'amélioration de l'expérience utilisateur et de sécuriser efficacement les données de votre entreprise. Il offre l'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, auditer et maintenir toutes les politiques d'accès aux API via des consoles conviviales et spécialement conçues sans avoir besoin de codes personnalisés. 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 axée sur l'identité pour contrôler différents types d'utilisateurs et de services sous un même toit. Définissez l'accès en fonction des profils utilisateur, des réseaux, des groupes, du consentement et des clients. Étendez les jetons en utilisant les données dynamiques de vos systèmes internes pour profiter d'une intégration plus rapide et d'une migration transparente.
Il facilite une administration centralisée des API et vous permet de protéger les ressources d'API. Okta se concentre sur la sécurité en vous permettant de sécuriser l'accès entre différents micro-services.
Conclusion
Il ya pas de pénurie des outils de sécurité API disponibles sur le marché, qu'ils soient open source, gratuits ou commerciaux, ou toute combinaison de ceux-ci.
Essayez-en quelques-uns dans la liste et voyez ce qui convient le mieux à vos besoins.