La sécurité des API passe par la sécurité du code
La croissance incontrôlée des API sans gouvernance ni documentation appropriée expose les entreprises. Un examen précis du code source est un prérequis pour identifier les vulnérabilités.
92 % des entreprises mondiales ont été confrontées à un incident de sécurité concernant leurs API au cours des 12 derniers mois. Dans un contexte de transformation numérique, on assiste à une prolifération des API dont la croissance incontrôlée, sans gouvernance ni documentation appropriée (fichiers Swagger ou RAML par exemple), expose les entreprises à des forts risques de sécurité.
Les API ou interfaces de programmation applicatives sont des solutions informatiques qui permettent à des applications de communiquer entre elles et de s'échanger mutuellement des services ou des données. L’utilisation d’API dans le développement d’applications modernes est désormais massive notamment pour la conception d’applications cloud natives ou basées sur des architectures de micro services. Si les API facilitent la vie du développeur en lui fournissant des éléments prêts à l'emploi, leur prolifération incontrôlée qu’elles soient développées en interne ou issues de fournisseurs tiers, complexifie cependant le suivi, la gouvernance et la sécurité.
Dresser un inventaire rigoureux et connaître usages et activités
La gestion et la sécurité des API constituent un défi bien particulier : il est en effet nécessaire de gérer non seulement leur augmentation croissante mais aussi le réseau relationnel complexe sur lequel elles se basent. Car les API sont souvent interdépendantes et s'appellent les unes les autres pour remplir diverses fonctions. Par exemple, une application mobile peut s'appuyer sur différentes API pour le traitement des paiements, l'authentification des utilisateurs et le stockage des données. Ces API peuvent, à leur tour, dépendre d'autres API internes ou tierces pour remplir leur rôle, créant un réseau complexe difficile à gérer et à protéger. Leur sécurité repose ainsi en premier lieu à la fois sur la connaissance du patrimoine existant et de leur usage mais aussi sur un monitoring temps réel de leur activité pour implémenter des politiques de sécurité ad hoc (contrôle d’accès, chiffrement de données, …). Les développeurs doivent documenter leurs API au sein d’un référentiel commun (à l’instar de Postman) et les maintenir à jour au fur et à mesure de leur évolution. Pour identifier précisément les API, des solutions permettent de surveiller le trafic API existant ou s’intègrent à des appliances matérielles, notamment des passerelles API, des pare-feu d’applications Web (WAF) ou des équilibreurs de charge, là où le trafic API circule. Mais pour ce faire, l’équipe AppSec doit connaître tous les goulots d’étranglement par lesquels transite le trafic des API, ce qui n’est pas toujours facile dans un environnement réseau en constante évolution. L’utilisation de technologies capables d’identifier, de cartographier et d’assurer le suivi des API sur l'ensemble des systèmes de l’organisation est ainsi un prérequis en matière de sécurité.
Attention aux angles morts
La prolifération des API complique donc le suivi de tous les composants connectés au réseau et des oublis importants peuvent facilement se produire malgré la vigilance des équipes de sécurité. La documentation est souvent négligée et le contrôle de versions devient une tâche secondaire, ce qui peut entraîner de graves conséquences sécuritaires. Les approches traditionnelles de sécurité activées durant l’exécution sont également insuffisantes car bien qu’elles puissent détecter en temps réel les activités malveillantes, elles n’auront pas la capacité de repérer les vulnérabilités dans le processus de mise en œuvre de l'API. Il y a aussi les risques des API « zombies » et « fantômes » non documentées. Les premières sont des API obsolètes qui ont été remplacées mais qui restent dans l'écosystème. Quant à leur version fantôme, elle échappe à la visibilité du réseau et dépasse le cadre des protocoles de gouvernance. Ces API ne peuvent pas être protégées par les solutions de sécurité telles que les WAF ou encore les passerelles API, qui sont conçues pour protéger uniquement ce qu'elles connaissent. Cet angle mort rend les organisations vulnérables.
La sécurité API commence avec le code
On sait que le coût de la résolution d'un bug logiciel découvert en production est drastiquement plus élevé que s'il était résolu en phase de conception. Il est donc important de parvenir à trouver et à corriger les vulnérabilités le plus tôt possible dans le cycle de vie du développement logiciel (SDLC). Cependant, la plupart des solutions de sécurité se concentrent sur les API déjà déployées dans les environnements de production, où les vulnérabilités identifiées seront donc plus coûteuses à corriger.
De nombreuses entreprises ne disposent pas d’une visibilité holistique de l’ensemble de leur trafic API, et doivent donc mettre en œuvre une approche globale avec un examen minutieux du code source pour identifier et inventorier les endpoints d’API (emplacement numérique à partir duquel l’API reçoit des requêtes et envoie des réponses) ainsi que les vulnérabilités associées. L’analyse automatique du code source va créer un inventaire centralisé, mettre en lumière les vulnérabilités tout en documentant les risques. Pour les organisations ayant une approche axée API, cela permettra de valider la documentation pendant la phase de conception et d'identifier les écarts par rapport à la mise en œuvre. Pour les organisations axées sur le code, il permettra de découvrir et de faire l'inventaire de chaque API dans le code source, même sans documentation existante. De plus, si les développeurs tiennent un journal avec un historique complet de chaque API, cela permettra non seulement de réutiliser les API existantes en toute confiance mais aussi d’identifier toutes modifications récentes susceptibles d'avoir ajouté des données sensibles à une API publique. Plus important encore, il est essentiel de disposer d'une vue consolidée de tous les risques liés aux API. Les entreprises doivent mettre en œuvre des solutions avec des moteurs d'analyse capables d'agréger et de corréler les résultats des API à la fois internes et externes et comparer l’inventaire global - liste complète des API découvertes dans le code source de l’application - avec la documentation fournie par les développeurs, en vue d’identifier les API non documentées. Les équipes AppSec pourront ensuite hiérarchiser les vulnérabilités API les plus critiques en fonction de leur impact et de leur risque réel.
Si les applications modernes continuent à évoluer, affichant toujours plus de complexité, d’éléments à protéger et d’outils de sécurité à intégrer, une approche proactive de gestion et de protection des API sur l’ensemble de leur cycle de vie (documentation, code source et tests dynamiques) intervenant dans le cadre d’une stratégie de sécurité applicative globale facilitera la détection précoce des vulnérabilités. Elle permettra une réutilisation sécurisée des API existantes et in fine réduira considérablement les coûts et les risques.