Les interfaces de programmation d'applications (API) sont un moteur essentiel de l'innovation dans le monde numérique d'aujourd'hui. Les applications (ou composants d'applications) peuvent exploiter les API pour se connecter à d'autres applications et communiquer de manière autonome. Les API sont utilisées par les applications internes, les applications destinées aux clients et aux partenaires qui prennent en charge les applications mobiles, SaaS et web. Si les applications web ont évolué avec le temps, les API agissent aujourd’hui comme des agents de liaisons qui lient les applications entre elles. Mais la connaissance limitée des utilisateurs et la complexité des API, rendent aujourd’hui les applications des entreprises toujours plus vulnérables.
API : entre modernité et risques
Bien que les API ne soient pas nouvelles, l'architecture des applications a considérablement changé ces dernières années. Dans les applications web traditionnelles, le traitement des données se fait côté serveur, et la page web est ensuite envoyée aux navigateurs clients pour le rendu. Comme les appareils clients sont devenus plus variés et plus puissants, les applications modernes basées sur les API utilisent les API pour envoyer et recevoir les données des serveurs backend afin de fournir les fonctions de l'application.
Au début de la technologie mobile, pour accéder à une application bancaire ou un site de voyage sur un téléphone par exemple, il suffisait d'ouvrir un navigateur web comme pour accéder à la page web standard depuis un ordinateur de bureau. Mais l’expérience utilisateur n’était pas des plus qualitative. En conséquence, les professionnels ont commencé à créer des applications mobiles chargées d'API qui, en temps réel, envoyaient l’état du solde d’un compte bancaire, renseignaient sur les options de sièges dans un avion ou encore la disponibilité de produits, et ce, sans utiliser de navigateur. Une évolution majeure où l’on passe des serveurs backend à un monde mobile agile qui continue, encore aujourd’hui, d’évoluer. Dans cette optique, nul ne peut nier que les API jouent un rôle très important dans les architectures sans serveur, les conteneurs, les micro-services, les applications monopage (SPA), les applications mobiles et l’IoT.
De par leur conception, les développeurs côté client ont besoin d'un accès précis aux services et aux données. Comme les requêtes web de base, les appels API intègrent des URI, des méthodes, des en-têtes et d'autres paramètres. Une documentation détaillée est généralement disponible pour les API afin de fournir la transparence nécessaire aux développeurs, mais elle donne également un plan directeur que les pirates peuvent utiliser pour leurs attaques. Les API définissent une porte dérobée (backdoor) vers les systèmes et applications adjacents pour ceux qui souhaitent y accéder, de manière légitime ou non. Elles peuvent également exposer la logique et les données des applications, permettant ainsi d'accéder à de multiples sources de données potentiellement sensibles et à des services critiques. Élargissant ainsi la surface d'attaque de manière exponentielle.
Comme les API sont de plus en plus importantes et cachées, les problèmes d’abus se multiplient,et ces dernières ont tendance à représenter un risque business plus important que les autres actifs. Ainsi l’OWASP (Open Web Application Security Project) a établi le classement des risques majeurs pour les applications web en détaillant l’ensemble des risques et les recommandations adéquates.Bien qu'il ne soit pas exhaustif, ce classement aide les professionnels de la cybersécurité et les développeurs à mieux comprendre les risques potentiels présentés par la mise en œuvre des API, alors que les acteurs malveillants se concentrent sur cette cible émergente.
Comprendre les API pour mieux les protéger
La plupart des entreprises ont une connaissance limitée ou nulle de leurs API et encore moins des contrôles nécessaires pour les sécuriser. Contrairement aux applications web qui sont faciles d’accès, les API nécessitent une forme de programmation pour récupérer les données, mais difficilement automatisable. Étant donné l'importance croissante des API, il est vital d'avoir une meilleure visibilité sur les API existantes, leur propriétaire, le port qu'elles écoutent…Par exemple, dans le monde de la finance, il est extrêmement courant, lors du traitement des demandes de prêt, d'entrer en contact avec d'autres organisations par l'intermédiaire d’API, comme les services de crédit, pour les aider dans le processus de décision et d’accord du prêt. Mais en plus des nouvelles technologies, elles contiennent du code datant de l'époque du début du mainframe. Quelles sont alors les informations qui circulent ? Sont-elles de nature sensible ? Quelles sont les implications en cas de vol ?
Certaines entreprises commencent à mettre en place des contrôles proactifs et à exploiter les outils API pour gagner en visibilité et en contrôle. L'utilisation d'outils comme APiGee de Google et de logiciels de collaboration API comme Swaggerhub ou Postman est en augmentation et peut fournir une image complète d'une API et de toutes ses interactions.
Il existe de nombreuses façons pour les pirates de cibler une application moderne. Les API ne sont qu'un petit point dans la surface d'attaque globale et elles ne doivent pas devenir un angle mort. Comme elles sont des fenêtres dans les applications et - comme pour toute fenêtre - une API peut facilement être utilisée à mauvais escient. La compréhension des vulnérabilités et des faiblesses des API permet d'obtenir une image plus complète des vecteurs d'attaque qui pourraient être utilisés pour pirater une application.
Les outils de collaboration des API peuvent être utilisés pour fournir des informations aux outils de scanners de vulnérabilité pour une analyse plus complète des API exposées. En travaillant avec ces outils API, l'analyse de la vulnérabilité des API peut être mieux réalisée et beaucoup plus facile qu'une analyse des applications web traditionnelles. Une autre considération est la manière de gérer les API authentifiées, qui peuvent devenir assez complexes pour les applications modernes. Les scanners de cibles qui font également face à une authentification compliquée et à des exigences de paramètres personnalisés. Dans le cas contraire, la couverture des API sera limitée.
Une fois que vous les entreprises auront bien compris la surface d'attaque de leurs API, elles pourront atténuer les risques en utilisant les signatures, le chiffrement, les quotas, l'étranglement, les jetons, les passerelles API... afin de limiter les risques et de s’assurer de la solidité de leurs applications.
Par Stan Wisseman, Chief Security Strategist Amérique du Nord chez Micro Focus