<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Samantha Marecaux, Auteur</title>
	<atom:link href="https://www.riskinsight-wavestone.com/author/samantha-marecaux/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/en/author/samantha-marecaux/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Mon, 30 Dec 2019 13:08:22 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>Samantha Marecaux, Auteur</title>
	<link>https://www.riskinsight-wavestone.com/en/author/samantha-marecaux/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>La sécurité des APIs ou la recette du bon miel</title>
		<link>https://www.riskinsight-wavestone.com/2017/06/securite-api/</link>
		
		<dc:creator><![CDATA[Samantha Marecaux]]></dc:creator>
		<pubDate>Tue, 20 Jun 2017 17:55:11 +0000</pubDate>
				<category><![CDATA[Cloud & Next-Gen IT Security]]></category>
		<category><![CDATA[Cybersecurity & Digital Trust]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[gestion des accès]]></category>
		<category><![CDATA[gestion des identités]]></category>
		<category><![CDATA[IAM]]></category>
		<category><![CDATA[système d'information]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=9816/</guid>

					<description><![CDATA[<p>Vers un SI de plus en plus décentralisé… Ces dernières années, les entreprises ont fait face à un élargissement du champ d’action de l’Identity and Access Management. Cette discipline n’est plus uniquement centrée sur les problématiques de provisioning utilisateur et...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2017/06/securite-api/">La sécurité des APIs ou la recette du bon miel</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Vers un SI de plus en plus décentralisé…</h1>
<p>Ces dernières années, les entreprises ont fait face à un <a href="https://www.riskinsight-wavestone.com/2016/12/quel-iam-pour-demain/">élargissement du champ d’action de l’<em>Identity and Access Management</em></a>. Cette discipline n’est <strong>plus uniquement centrée sur les problématiques de provisioning utilisateur et d’authentification</strong> ; elle s’est tournée non seulement vers des <strong>problématiques de revue et de certification des comptes</strong> mais aussi vers l’<strong>utilisation des mécanismes de fédération d’identités</strong> (eg. SAML). Ces changements concernent aussi bien les applications SaaS que les applications restées en interne. Ces évolutions ont chacune permis une ouverture du SI toujours plus large, et nécessitent par conséquent d’être correctement implémentées pour limiter les failles de sécurité.</p>
<p>Cette évolution de l’IAM se fait en parallèle de la généralisation des services Cloud, qui ne cessent de donner naissance à de nouveaux usages pour plus de flexibilité et de souplesse dans l’accès et l’utilisation du SI. Les utilisateurs internes accédant au SI le font de plus en plus majoritairement depuis l’extérieur du réseau de l’entreprise, et ce depuis des terminaux de plus en plus variés.</p>
<p>En outre, les nouvelles technologies agiles et DevOps poussent le SI à évoluer différemment, intégrant beaucoup plus rapidement de nouvelles technologies (IoT, etc.) et de nouveaux usages.</p>
<figure id="post-9817 media-9817" class="align-none"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-9817 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-1.png" alt="" width="1385" height="779" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-1.png 1385w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-1-340x191.png 340w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-1-768x432.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-1-69x39.png 69w" sizes="(max-width: 1385px) 100vw, 1385px" /></figure>
<p>Toutes ces évolutions font aujourd’hui du SI une bulle parmi d’autres interagissant avec son environnement et <strong>devant maîtriser, à distance, des interactions entre des composants décentralisés</strong>.</p>
<figure id="post-9819 media-9819" class="align-none"><img decoding="async" class="aligncenter wp-image-9819 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-2.png" alt="" width="1296" height="729" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-2.png 1296w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-2-340x191.png 340w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-2-768x432.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-2-69x39.png 69w" sizes="(max-width: 1296px) 100vw, 1296px" /></figure>
<h2></h2>
<p>&nbsp;</p>
<h1>… rendant les APIs incontournables</h1>
<p>Ce nouveau modèle décentralisé du SI donne naissance à la problématique d’interconnexion des services et des applications : <strong>comment assurer l’accès aux données à chaque instant et en chaque endroit</strong> ?</p>
<p>Aujourd’hui les <strong>APIs</strong> (<em>Application Programmable Interface</em>) représentent déjà un <strong>mécanisme de communication prépondérant et incontournable</strong> pour toute entreprise lancée dans sa transformation numérique. Elles sont utilisées dans  les traitements réalisés non seulement sur des <strong>données publiques</strong> (adresses d’agences, horaires des transports, etc.) mais aussi sur des <strong>données personnelles</strong> (tracking fitness, application Ameli et CAF, etc.) et des <strong>données sensibles</strong> (DSP2, achat en ligne, informations industrielles en mobilité, etc.).</p>
<p><center><img decoding="async" class="aligncenter wp-image-9821" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-3.png" alt="" width="378" height="557" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-3.png 606w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-3-130x191.png 130w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-3-26x39.png 26w" sizes="(max-width: 378px) 100vw, 378px" /></center>Face à son importance dans le SI, la question de la sécurisation des APIs se pose plus que jamais.</p>
<h1>Quelle recette pour sécuriser ses API ?</h1>
<p>La sécurisation des API passe par une recette à base de 4 ingrédients à doser finement.</p>
<h2>Une base de security as usual</h2>
<p>Selon un <a href="https://www.wavestone.com/app/uploads/2016/10/Benchmark-Securite-Web-1.pdf">benchmark Wavestone sur le sujet de la sécurité des applications web</a>, sur 128 applications auditées, des <strong>failles graves sont observées dans 60% des cas</strong> et la situation est très similaire pour les APIs. À cet effet, les <strong>recommandations habituelles de la sécurité web</strong>, par exemple celles d’<a href="https://www.owasp.org/index.php/OWASP_Cheat_Sheet_Series">OWASP</a> doivent être prises en compte de la même manière.</p>
<p>Il s’agit essentiellement de s’assurer de couvrir les principales zones à risques d’une application web et de déterminer les mesures de sécurité appropriées.</p>
<figure id="post-9824 media-9824" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-9824 " src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-4.png" alt="" width="1134" height="458" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-4.png 976w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-4-437x176.png 437w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-4-768x310.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-4-71x29.png 71w" sizes="auto, (max-width: 1134px) 100vw, 1134px" /></figure>
<p>&nbsp;</p>
<h2>Une pincée d’OAuth</h2>
<p>OAuth est un <strong>framework de délégation d’autorisation</strong> qui permet à une application d’obtenir l’<strong>autorisation d’accès à une ressource au nom d’un utilisateur</strong>.</p>
<p>OAuth se propose de couvrir un large éventail de cas d’usages (applications web, mobile, accès ou non à un navigateur, accès serveur-à-serveur, etc.) et offre à cet effet 4 cinématiques principales pour obtenir un jeton. Combiné à une spécification détaillant l’utilisation de ce jeton, un document détaillant le <em>threat model</em>, et enfin une surcouche dédiée à l’authentification (OpenID Connect), il s’agit d’un corpus documentaire équivalent à 250 pages, laissant une place certaine à un grand nombre d’options et de choix d’implémentation.</p>
<p>Et c’est bien cette <strong>abondance d’options et ce manque de contraintes qui entraînent les failles de sécurité</strong> observées régulièrement dans la mise en place d’OAuth2.0 : usurpation d’identité d’une application, accès aux données personnelles d’un utilisateur tiers, vol de cookie Facebook/Google lors d’un <em>social login</em> ou encore compromission de compte utilisateur.</p>
<p>Les six recommandations suivantes sont essentielles pour une mise en place sécurisée du Framework :</p>
<ul>
<li><strong>Secret local :</strong> L’application est munie d’identifiants lui permettant de s’authentifier auprès du serveur OAuth : ne pas mettre ce secret (identifiant du service) dans l’application mobile ou le considérer compromis</li>
<li><strong>Redirect URI</strong><strong>: </strong>Valider strictement les URLs de redirection vers l’application, sans wildcard</li>
<li><strong>Implicit</strong><strong>: </strong>Éviter le « <em>Implicit grant</em> » dans la mesure du possible (et se tourner vers le <em>proxy pattern</em>)</li>
<li><strong>Authorization</strong><strong> code: </strong>Valider strictement les <em>authorization codes</em> et clients associés</li>
<li><strong>State</strong><strong> and PKCE: </strong>À utiliser pour garantir l’intégrité d’une cinématique complète</li>
<li><strong>Authorization</strong><strong> ≠ Authentication: </strong>Utiliser OpenID Connect pour authentifier, OAuth pour déléguer l’accès</li>
</ul>
<h2>Limitez les additifs</h2>
<p>À peine cette première pincée d’OAuth digérée, il faut déjà réfléchir à des solutions de sécurité permettant de répondre aux besoins que nous rencontrons le plus fréquemment.</p>
<p><strong>Le Single Sign-On mobile, ou comment permettre à des employés en mobilité ou des clients d’accéder aisément aux applications sans se réauthentifier ?</strong></p>
<p>Qu’il s’agisse d’un agent terrain en contact clientèle ou en tournée d’intervention qui peut utiliser plus d’une dizaine d’applications par jour ou qu’il s’agisse d’un client ayant installé plusieurs applications sur le store public, le besoin d’accéder à l’ensemble des applications sans avoir à se réauthentifier sur chacune est aujourd’hui très présent. Si, depuis 2008, les techniques le permettant ont varié au gré des possibilités offertes par les OS mobiles (KeyChain iOS, paramètres d’URL, Mobile Device Management…), Apple et Google ont convergé vers une solution commune en 2015 : utiliser le navigateur système comme point d’ancrage d’une session SSO. C’est maintenant une bonne pratique officielle matérialisée par la <a href="https://tools.ietf.org/html/draft-ietf-oauth-native-apps-11">BCP « OAuth2 for native applications »</a></p>
<p><strong>L’authentification contextuelle, ou comment adapter le niveau d’accès à une donnée en fonction de la criticité de celle-ci ?</strong></p>
<p>Un des nombreux enjeux concernant l’authentification est de simplifier au maximum l’accès des utilisateurs à leurs données tout en garantissant un niveau de sécurité satisfaisant. L’authentification contextuelle permet de répondre à cet enjeu, en adaptant le niveau d’accès à la nature de la transaction, à ses caractéristiques, aux habitudes utilisateurs, à son contexte…. On parle de LOA (<em>Level of Assurance</em>). Dans le cadre d’une application mobile bancaire, cela permet à l’utilisateur de consulter son compte en banque, de bénéficier de la météo de ses comptes sans avoir à se réauthentifier à chaque accès. L’application requerra toutefois une authentification au moment de réaliser une opération sensible (un virement interne par exemple), et une authentification forte au moment de réaliser une opération très sensible (ajout d’un bénéficiaire par exemple).</p>
<p>Les solutions du marché proposent aujourd’hui des solutions pensées selon une logique où le client applicatif est responsable d’initier la demande de LOA correspondant à la donnée ou au service auquel il souhaite accéder. Mais le vrai besoin consiste à définir et appliquer ces politiques d’accès aux données de manière centralisée, au sein du serveur d’autorisation. Il s’agit notamment d’un besoin essentiel lorsque l’on veut appliquer une authentification liée au niveau de risque du contexte (géolocalisation, terminal connu ou non, habitudes de transactions, etc.)</p>
<p><strong>Propagation de l’identité, ou comment transmettre un jeton d’accès entre deux applications (ou plus) ?</strong></p>
<p>Il est courant qu’un appel vers une API déclenche une cascade d’appels vers d’autres API, notamment dans le cadre d’une architecture de type micro-service. La transmission de l’identité de l’utilisateur doit alors être assurée sans créer de risque de sécurité. Et les trois premières solutions qui viennent à l’esprit présentent des limites :</p>
<ul>
<li>La transmission du token initial est évidement à proscrire, à la vue du risque de fraude interne très élevé que cela entrainerait.</li>
<li>L’authentification de l’appelant seule n’est pas suffisante non plus, car un composant compromis dans la chaîne peut usurper l’identité de n’importe quel utilisateur et compromet le reste de la chaîne.</li>
<li>La génération d’un token pour l’appelant transmis avec le token de l’utilisateur initial ne permet pas d’assurer l’intégrité de la combinaison utilisateur/API et ne permet pas de vérifier la chaine.</li>
</ul>
<p>Une ébauche avancée de solution existe aujourd’hui, proposant un nouveau grant type : <a href="https://datatracker.ietf.org/doc/draft-ietf-oauth-token-exchange/">Token Exchange</a>. Ce mécanisme permet à l’appelant de demander un jeton intermédiaire, composé notamment de l’identité de l’utilisateur, de l’identité de l’appelant et de la chaine d’appel déjà effectuée. Cette nouvelle cinématique permet de centraliser la politique d’appel entre micro-service et l’application de cette politique, et d’assurer la traçabilité des appels.</p>
<p><strong>Protection contre le vol de jeton, ou comment se prémunir du vol d’un ou d’une base de jetons ?</strong></p>
<p>Par principe, le jeton contient de nombreuses informations sur son porteur, ce qui entraîne un risque important en cas de vol. Plus impactant encore, dans certains contextes (e.g. DSP2), un tiers (agrégateur) peut se retrouver en possession de très nombreux jetons, et le propriétaire de l’API se retrouve à la merci de ce tiers et de son niveau de sécurité. La détection du vol étant très difficile, il a fallu trouver d’autres solutions comme le <em>Token Binding,</em> un mécanisme de négociation à deux ou trois composants, permettant de lier un jeton à une paire de clés cryptographiques, et dans lequel le client doit prouver qu’il possède la clé privée constituant une partie de cette paire en établissant une connexion TLS mutuelle avec l’API.</p>
<h2>Écrire la recette</h2>
<p>Dernier ingrédient de la recette, il convient de décliner une architecture de référence de OAuth pour l’adapter au contexte du SI de l’entreprise. Pour cela, il faut définir le cadre d’utilisation des API en :</p>
<ul>
<li><strong>Définissa</strong><strong>nt</strong><strong> et partageant les règles de sécurité : </strong>Les cinématiques autorisées et le cadre d’application, les checklists sécurité et l’architecture de référence doivent être formalisées.</li>
<li><strong>Formant et outillant les développeurs</strong><strong>: </strong>Des sessions de formation et de présentations des principes adoptés doivent être organisées. Les équipes projets peuvent être rendues autonomes dans leur intégration au reste du SI.</li>
<li><strong>Intégrant les ressources sécurité dans les sprints agiles</strong><strong>: </strong>Les ressources agissant en tant que coach sécurité doivent être identifiées pour accompagner la conception applicative et apporter des solutions prêtes à l’emploi et être un accélérateur</li>
</ul>
<figure id="post-9826 media-9826" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-9826 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-5.png" alt="" width="1516" height="673" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-5.png 1516w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-5-430x191.png 430w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-5-768x341.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-5-71x32.png 71w" sizes="auto, (max-width: 1516px) 100vw, 1516px" /></figure>
<p>&nbsp;</p>
<h1>En synthèse</h1>
<p>Au final, comme la recette du bon miel, sécuriser des APIs nécessite une succession d’ingrédients allant du plus basique jusqu’au plus élaboré tout en tenant compte du besoin et du contexte.</p>
<figure id="post-9828 media-9828" class="align-none"><img loading="lazy" decoding="async" class="aligncenter wp-image-9828 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6.png" alt="" width="1013" height="603" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6.png 1013w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6-120x70.png 120w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6-321x191.png 321w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6-768x457.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2017/06/API-image-6-66x39.png 66w" sizes="auto, (max-width: 1013px) 100vw, 1013px" /></figure>
<p style="text-align: center;">
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2017/06/securite-api/">La sécurité des APIs ou la recette du bon miel</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
