Les Application Programming Interfaces ou APIs sont les fondations sur lesquelles l’économie numérique est aujourd’hui construite. Malheureusement leur adoption présente les mêmes faiblesses que leurs homologues applications web: de sérieuses insuffisances dans la sécurité mise en œuvre!
Mais qu’est-ce qu’une API et pourquoi leur usage se développe-t-il autant?
Au quotidien, au travers l’utilisation d’applications comme Twitter ou Facebook, vous utilisez déjà des APIs. En effet, une API est une interface applicative programmable, en d’autres termes, elle permet d’établir des connexions entre plusieurs logiciels pour échanger des données.
Plus techniquement, il s’agit d’un ensemble de fonctions qui vont permettre à un développeur d’utiliser simplement une application dans son programme.
Ces interfaces de programmation permettent d’enrichir un programme avec des fonctions issues d’un autre logiciel pour développer des fonctionnalités plus poussées ou importer des données pré-organisées, traitées et/ou intégrées ailleurs facilitant ainsi les intégrations avec des tiers ou facilitant le support de plates-formes hétérogènes.
Pour cela, il est soit possible de développer ses propres API pour un usage interne (par exemple pour faire communiquer une application mobile avec son interface web de back-office), soit d’utiliser des API conçues et publiées par d’autres organismes.
Leur adoption aujourd’hui est liée à la volonté des organisations de rendre leur organisation connectée. L’usage des APIs va permettre ainsi d’accélérer la mise à disposition de services, d’améliorer leur agilité (par des fonctionnalités plus réduites et donc plus facilement modifiables), et de permettre l’ouverture de nouveaux canaux de communication en plus du traditionnel site web institutionnel ou transactionnel.
En 2002, Jeff Bezos a édicté une directive au sein d’Amazon pour que toutes les équipes utilisent des APIs pour exposer les processus de leur fonctions métier interne. Cet acte a fourni le socle qui a permis à Amazon de se transformer d’un vendeur de livre au géant du cloud que l’on connaît aujourd’hui.
Ainsi les APIs deviennent le standard par lequel les sociétés échangent des données et construisent les expériences clients dans leurs projets de transformation digitale. L’adoption de la nouvelle directive sur les services de paiement (DSP2) définit par exemple un standard d’APIs pour permettre aux opérateurs de paiement d’être inter-opérants.
Les APIs et la sécurité?
La sécurité est un élément essentiel pour les applications lorsque des centaines ou milliers d’utilisateurs les sollicitent chaque jour. Tous n’ayant malheureusement pas que des intentions louables. Le niveau de sécurité de ces applications est aujourd’hui un souci important car bien souvent insuffisant. Les travaux de la fondation OWASP qui, dans le cadre de son projet Top 10 recense les vulnérabilités web les plus courantes au niveau mondial, ne fait qu’illustrer de manière récurrente que l’amélioration du niveau de sécurité applicatif reste un réel problème car la sécurité reste, même en 2018, traitée en fin de cycle de développement juste avant le déploiement en production.
Les APIs sont généralement basées sur le protocole HTTP. Les sécuriser a beaucoup en commun avec la sécurité des applications web mais présente des challenges additionnels:
- l’exposition de l’APIs à des usages qui ne sont pas forcément ceux imaginés lors de sa publication;
- un accès direct aux ressources en back-end;
- un besoin accru de contrôle des principes d’autorisation et d’authentification.
Les principes de sécurité relatifs aux applications web sont généralement basés sur les fonctionnalités de contrôle suivantes:
- l’authentification;
- le contrôle des accès aussi appelé «contrôle des autorisations»;
- le chiffrement des données sensibles;
- la sécurisation du canal de communication;
- la confidentialité des données,
- la protection face aux attaques propres aux couches applicatives.
Assurer un niveau de sécurité de ces APIs nécessite une attention plus particulière sur les points suivants:
- analyser les risques liés à l’usage de l’API;
- la surveillance de l’utilisation des API;
- monitorer l’utilisation de l’API;
- considérer l’analyse de risque pendant l’évolution de l’API;
- utiliser les frameworks existants et surveiller la publication de CVE ou de vulnérabilités sur ces derniers;
- valider les données reçues et retournées par les API;
- utiliser des formats de transport de données ayant une surface d’attaque minimale comme par exemple JSON;
- considérer et concentrer les principes d’autorisation et d’authentification au niveau des front end;
- considérer l’usage d’outils permettant la sécurisation des APIs ou l’implémentation de frontaux de sécurité;
- intégrer des tests de sécurité continus (automatisés et manuels) dans le cycle de développement (agile ou classique);
- vérifier la durée de validité, la signature numérique et le contexte d’allocations des jetons d’authentification/autorisation;
- prévoir du budget pour tester régulièrement la sécurité des APIs.
Si le sujet vous intéresse, rejoignez-nous lors de la matinée Expertise Excellium du 11 septembre durant laquelle nous explorerons en détail les enjeux de l’usage des APIs dans les organisations, en collaboration avec le cabinet Wavestone, IBM et F5 Networks.
Seront abordés plus en détails les usages des APIs au travers de standards comme PSD2 mais aussi les considérations-clés en matière de sécurité lorsque l’on désigne et gère des APIs, comment l’industrie adresse les standards de sécurité autour de ces APIs, comment garantir leur confidentialité et leur intégrité lorsque vous les publiez.