<?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>Blog de Aymeric Lagier</title>
	<atom:link href="https://www.aymericlagier.com/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.aymericlagier.com</link>
	<description></description>
	<lastBuildDate>Tue, 21 Nov 2017 08:30:09 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.9.3</generator>
	<item>
		<title>Introduction à l&#8217;orchestrateur de conteneurs Kubernetes</title>
		<link>https://www.aymericlagier.com/2017/11/21/introduction-a-lorchestrateur-de-conteneurs-kubernetes/</link>
		<comments>https://www.aymericlagier.com/2017/11/21/introduction-a-lorchestrateur-de-conteneurs-kubernetes/#respond</comments>
		<pubDate>Tue, 21 Nov 2017 08:30:09 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Devops]]></category>
		<category><![CDATA[devops]]></category>
		<category><![CDATA[docker]]></category>
		<category><![CDATA[k8s]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2598</guid>
		<description><![CDATA[<p>Manipuler quelques conteneurs sur des environnements de développement est une tâche facile. Lorsqu&#8217;il s&#8217;agit de faire passer ces conteneurs en production de nombreuses questions se posent : Comment gérer les dysfonctionnements ? Comment gérer les déploiements et leurs emplacements ? Comment gérer le scaling ? Comment gérer les mises à jours ? Comment gérer la communication [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/11/21/introduction-a-lorchestrateur-de-conteneurs-kubernetes/">Introduction à l&rsquo;orchestrateur de conteneurs Kubernetes</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Manipuler quelques conteneurs sur des environnements de développement est une tâche facile. Lorsqu&rsquo;il s&rsquo;agit de faire passer ces conteneurs en production de nombreuses questions se posent :</p>
<ul>
<li>Comment gérer les dysfonctionnements ?</li>
<li>Comment gérer les déploiements et leurs emplacements ?</li>
<li>Comment gérer le scaling ?</li>
<li>Comment gérer les mises à jours ?</li>
<li>Comment gérer la communication entre les conteneurs ?</li>
<li>Comment gérer le stockage nécessaire à la persistance des données ?</li>
<li>Comment gérer les secrets et la configuration ?</li>
<li>etc.</li>
</ul>
<p>Tout gérer de manière manuelle et sans surcouche au système de conteneurs n&rsquo;est pas viable, maintenable et pérenne.</p>
<p>&nbsp;</p>
<h2>Présentation de Kubernetes</h2>
<p>Kubernetes (k8s en abrégé) est un orchestrateur de conteneurs initialement développé par Google en 2015 puis offert à la <a href="https://www.cncf.io/" target="_blank" rel="noopener">CNF (Cloud Native Computing Foundation)</a>. La solution est développée avec le langage Go (aussi à l&rsquo;origine de Google).</p>
<p>k8s est leader sur le marché de l&rsquo;orchestration de conteneurs mais dispose quand même de quelques concurrents: <a href="https://docs.docker.com/engine/swarm/key-concepts/" target="_blank" rel="noopener">Docker Swarm</a> et <a href="https://mesosphere.github.io/marathon/" target="_blank" rel="noopener">Apache Mesos/Marathon</a>.</p>
<p>&nbsp;</p>
<h2>Comment fonctionne Kubernetes ?</h2>
<p>Kubernetes propose une surcouche aux moteurs de conteneurs (ex : <a href="https://www.docker.com/" target="_blank" rel="noopener">Docker</a>, <a href="https://coreos.com/rkt/" target="_blank" rel="noopener">rkt </a>ou <a href="http://cri-o.io/" target="_blank" rel="noopener">CRI</a>) en introduisant la notion de <strong>pod</strong>.</p>
<p>Un <a href="https://kubernetes.io/docs/concepts/workloads/pods/pod/" target="_blank" rel="noopener"><strong>pod</strong> </a>est un élément composé généralement d&rsquo;un conteneur, une configuration réseaux et une configuration sur le stockage. Les <strong>pods</strong> doivent être considérés comme jetable, ils sont instanciés et détruits au cours de la phase de run d&rsquo;une application.</p>
<p>Ces pods sont gérés par des <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/" target="_blank" rel="noopener"><strong>deployments</strong></a>. Un <strong>deployment</strong> définit la configuration des pods, le nombre de répliquas souhaités, la stratégie de mise à jour des pods, etc. C&rsquo;est grâce au <strong>deployment</strong> que le nombre de pods actifs demandé est maintenu sur un environnement. En cas de défaillance d&rsquo;un pod, il est supprimé et un nouveau pod est instancié.</p>
<p>Pour gérer le load balancing et la communication avec les pods, k8s introduit la notion de <a href="https://kubernetes.io/docs/concepts/services-networking/service/" target="_blank" rel="noopener"><strong>service</strong> c</a>omme point unique de communication avec plusieurs pods. Les pods étant « mortels », il n&rsquo;est pas possible de se baser directement sur leurs IPs.</p>
<p>Pour la même raison, aucune donnée persistante ne peut être stockée au niveau des pods. Pour persister de la donnée, des <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistent-volumes" target="_blank" rel="noopener"><strong>PersistentVolumes</strong> </a>pointant vers des volumes réseaux, des volumes sur AWS (EBS), Azure, <a href="https://kubernetes.io/docs/concepts/storage/volumes/#types-of-volumes" target="_blank" rel="noopener">etc</a> sont créés au niveau du cluster k8s. Une fois ces volumes créés, un <a href="https://kubernetes.io/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims" target="_blank" rel="noopener"><strong>PersistentVolumeClaim</strong> </a>doit être créé pour réserver un espace sur un <strong>PersistentVolume</strong>.</p>
<p>La vision présentée ci-dessus est une introduction. <a href="https://kubernetes.io/docs/concepts/" target="_blank" rel="noopener">De nombreux autres paramètres et concepts</a> sont proposés par k8s pour définir de manière très fine la gestion des conteneurs.</p>
<p><span style="text-decoration: underline;">Exemple concret</span> :<br />
&#8211; Création d&rsquo;un <strong>deployment </strong>spécifiant 3 répliquas de pods basés sur l&rsquo;image Docker d&rsquo;un service web en Java exposant le port 9000.<br />
&#8211; Création d&rsquo;un <strong>service</strong> exposant le port 80 et redirigeant vers le port 9000 des 3 pods du service web.<br />
&#8211; Création d&rsquo;un <strong>PersistentVolume </strong>de 100Go basé sur un volume EBS de AWS<br />
&#8211; Création d&rsquo;un <strong>PersistentVolumClaim</strong> de 10Go avec le mode d&rsquo;accès « ReadOnlyMany » permettant au volume d&rsquo;être monté en lecture seul sur plusieurs <a href="https://kubernetes.io/docs/concepts/architecture/nodes/" target="_blank" rel="noopener">nodes </a>(worker K8s).</p>
<p>&nbsp;</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/11/schema.png"><img class="aligncenter size-full wp-image-2599" src="https://www.aymericlagier.com/wp-content/uploads/2017/11/schema.png" alt="" width="673" height="1153" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/11/schema.png 673w, https://www.aymericlagier.com/wp-content/uploads/2017/11/schema-175x300.png 175w, https://www.aymericlagier.com/wp-content/uploads/2017/11/schema-598x1024.png 598w" sizes="(max-width: 673px) 100vw, 673px" /></a></p>
<p>Pour simplifier la compréhension, les exemples ci-dessus sont basés sur l&rsquo;utilisation du moteur de conteneurs Docker et de son format d&rsquo;images associé. Kubernetes gère également le runtime <a href="https://coreos.com/rkt/">rkt de CoreOS</a>.</p>
<p>Pour faciliter l&rsquo;intégration des moteurs de conteneurs, Kubernetes propose la <a href="https://github.com/kubernetes/community/blob/master/contributors/devel/container-runtime-interface.md" target="_blank" rel="noopener">CRI </a>(Container Runtime Interface) composée d&rsquo;un API, de spécifications et de librairies. <a href="http://cri-o.io/">CRI-O</a> est une implémentation de CRI proposant une alternative plus légère au runtime Docker tout en supportant son format d&rsquo;image. L&rsquo;utilisation de CRI-O dispense donc de l&rsquo;utilisation du runtime Docker au niveau des nodes k8s.</p>
<p>Concernant l&rsquo;installation de Kubernetes, il peut être installé on-premises ou sur un cloud public (AWS, Azure, IBM, etc.). Un bon moyen de tester Kubernetes est de l&rsquo;installer sur un poste local via <a href="https://kubernetes.io/docs/getting-started-guides/minikube/" target="_blank" rel="noopener">minikube</a>.</p>
<p>&nbsp;</p>
<h2>Comment Kubernetes répond aux questions posées en introduction ?</h2>
<p>Les <strong>Deployments</strong> répondent aux problématiques :</p>
<ul>
<li>de dysfonctionnement en assurant que le nombre de répliquas actifs demandé soit toujours respecté.</li>
<li>de déploiement sur des emplacements spécifiques (node) avec la notion d&rsquo;<a href="https://kubernetes.io/docs/concepts/configuration/assign-pod-node/" target="_blank" rel="noopener">affinity et de nodeSelector</a></li>
<li>de scaling en ajustant le nombre de répliquas en fonction des besoins</li>
<li>de mise à jour en spécifiant la <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy" target="_blank" rel="noopener">stratégie</a> adéquate et en utilisant les <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-back-a-deployment" target="_blank" rel="noopener">mécanismes de rollback</a></li>
</ul>
<p>Les <strong>Services</strong> répondent aux problématiques de communication avec les conteneurs.</p>
<p>Les <strong>PersistentVolumes</strong> et <strong>PersistentVolumeClaims</strong> répondent aux problématiques de persistance des données.</p>
<p>Les <strong><a href="https://kubernetes.io/docs/tasks/configure-pod-container/configmap/#create-configmaps-from-directories" target="_blank" rel="noopener">ConfigMaps</a></strong> répondent aux problématiques de configuration en sortant ces éléments liés aux environnements (préproduction, production, etc.) des conteneurs.</p>
<p>Enfin, la notion de <strong><a href="https://kubernetes.io/docs/concepts/configuration/secret/" target="_blank" rel="noopener">Secrets</a></strong> permet de garder le contrôle sur les données sensibles de type mot de passe, clé d&rsquo;API, etc.</p>
<p>&nbsp;</p>
<h2>Ressources</h2>
<ul>
<li><a href="https://kubernetes.io" target="_blank" rel="noopener">Site officiel</a></li>
<li><a href="http://cri-o.io/" target="_blank" rel="noopener">CRI-O</a></li>
<li><a href="https://github.com/kubernetes/kubernetes" target="_blank" rel="noopener">GitHub</a></li>
</ul>
<h2></h2>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/11/21/introduction-a-lorchestrateur-de-conteneurs-kubernetes/">Introduction à l&rsquo;orchestrateur de conteneurs Kubernetes</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2017/11/21/introduction-a-lorchestrateur-de-conteneurs-kubernetes/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] OpenSAMM, modèle de maturité pour le développement d&#8217;applications sécurisées</title>
		<link>https://www.aymericlagier.com/2017/09/27/cybersecurite-opensamm-modele-de-maturite-developpement-dapplications-securisees/</link>
		<comments>https://www.aymericlagier.com/2017/09/27/cybersecurite-opensamm-modele-de-maturite-developpement-dapplications-securisees/#respond</comments>
		<pubDate>Wed, 27 Sep 2017 08:00:45 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[cybersécurité]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2577</guid>
		<description><![CDATA[<p>OpenSAMM (Software Assurance Maturity Model) est un des projets « Flagship » de l&#8217;OWASP (Open Web Application Security Project) permettant d&#8217;évaluer, définir et mettre en place une stratégie de sécurité pour les applications. Le projet propose de découper le développement logiciel en 4 domaines divisés en 12 sous-domaines. On retrouve globalement les différentes étapes du SDLC. &#160; Fonctionnement [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/09/27/cybersecurite-opensamm-modele-de-maturite-developpement-dapplications-securisees/">[Cybersécurité] OpenSAMM, modèle de maturité pour le développement d&rsquo;applications sécurisées</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>OpenSAMM (Software Assurance Maturity Model) est un des projets « Flagship » de l&rsquo;OWASP (Open Web Application Security Project) permettant d&rsquo;évaluer, définir et mettre en place une stratégie de sécurité pour les applications.</p>
<p>Le projet propose de découper le développement logiciel en 4 domaines divisés en 12 sous-domaines. On retrouve globalement les différentes étapes du <a href="https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/">SDLC</a>.</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/categories.png"><img class="aligncenter size-full wp-image-2578" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/categories.png" alt="Catégories OpenSAMM" width="1339" height="420" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/categories.png 1339w, https://www.aymericlagier.com/wp-content/uploads/2017/09/categories-300x94.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/categories-768x241.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/categories-1024x321.png 1024w" sizes="(max-width: 1339px) 100vw, 1339px" /></a></p>
<p>&nbsp;</p>
<h2>Fonctionnement</h2>
<p>Chaque sous domaine est divisé en 4 niveaux de maturité.</p>
<ul>
<li><strong>0</strong> : Niveau implicite de départ</li>
<li><strong>1</strong> : Compréhension initiale et mise en place de pratiques de sécurité</li>
<li><strong>2</strong> : Amélioration de l&rsquo;efficacité/efficience des pratiques de sécurité</li>
<li><strong>3</strong> : Maîtrise complète des pratiques de sécurité</li>
</ul>
<p>Pour chaque sous-domaine, plusieurs éléments sont associés à chaque niveau de maturité :</p>
<blockquote><p>Note : les exemples associés ci-dessous proviennent du niveau de maturité 1 du sous-domaine « Education and Guidance » du domaine « Governance ».</p></blockquote>
<ul>
<li><strong>L&rsquo;objectif à atteindre pour compléter le niveau de maturité<br />
</strong><em><u>exemple</u> :<br />
&#8211; Fournir aux collaborateurs des ressources documentaires sur le développement et de déploiement sécurisés d&rsquo;applications</em></li>
</ul>
<ul>
<li><strong>Les activités à mener pour atteindre l&rsquo;objectif<br />
</strong><em><u>exemple</u> :<br />
&#8211; Faire une formation de sensibilisation à la sécurité<br />
</em><em>&#8211; Ecrire et maintenir des guides techniques</em></li>
</ul>
<ul>
<li><strong>Les questions à se poser pour évaluer la stratégie de sécurité en place<br />
</strong><em><u>exemple</u> : </em><br />
<em>&#8211; Les développeurs ont-ils reçu une sensibilisation à la sécurité ?</em><br />
<em>&#8211; Les membres des équipes projet savent-elles où chercher les guides et bonnes pratiques de développement sécurisé ?</em></li>
</ul>
<ul>
<li><strong>Résultats attendus après avoir satisfait les objectifs</strong><br />
<em><u>exemple</u> : </em><br />
<em>&#8211; Prise de conscience des développeurs sur les problèmes de développement les plus communs</em><br />
<em>&#8211; Application des règles de sécurité de base sur les logiciels</em><br />
<em>&#8211; Définition d&rsquo;un niveau de connaissance minimum en sécurité pour les collaborateurs techniques</em><br />
<em>&#8211; Mise en place de contrôles de ce niveau minimum de sécurité</em></li>
</ul>
<ul>
<li><strong>Les métriques à mesurer et leurs seuils d&rsquo;acceptation</strong><br />
<u>exemple</u> :<br />
<em>&#8211; Plus de 50% des développeurs a été sensibilisé durant la dernière année</em><br />
<em>&#8211; Plus de 75% des développeurs seniors/architectes a été sensibilisé durant la dernière année</em><br />
<em>&#8211; Commencer le guide technique dans les 3 mois après la 1re formation</em></li>
</ul>
<ul>
<li><strong>Les coûts associés</strong><br />
<em><u>exemple</u> :</em><br />
<em>&#8211; </em><i>Coût de la formation (à construire ou via une prestation)<br />
</i><em>&#8211; Maintenance du guide technique</em></li>
</ul>
<ul>
<li><strong>Les acteurs impliqués</strong><br />
<em><u>exemple</u> :</em><br />
<em>&#8211; Développeurs<br />
</em>&#8211; <em>Architectes</em></li>
</ul>
<ul>
<li><strong>Les autres sous-domaines liés avec les niveaux associés</strong><br />
<em><u>exemple</u> :</em><br />
<em>&#8211; Policy &amp; Compliance niveau 2</em><br />
<em>&#8211; Security Requierement niveau 1</em><br />
<em>&#8211; Secure Architecture niveau 1</em></li>
</ul>
<p>&nbsp;</p>
<h2>Comment mettre en place OpenSAMM ?</h2>
<p>Pour mettre en place OpenSAMM il faut suivre les différentes étapes proposées :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/cycle.png"><img class="aligncenter size-full wp-image-2582" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/cycle.png" alt="Etapes OpenSAMM" width="963" height="725" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/cycle.png 963w, https://www.aymericlagier.com/wp-content/uploads/2017/09/cycle-300x226.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/cycle-768x578.png 768w" sizes="(max-width: 963px) 100vw, 963px" /></a></p>
<ul>
<li><strong>1 &#8211; Prepare &#8211; Préparer</strong><br />
<em><u>objectif</u> : s&rsquo;assurer de bien démarrer le projet</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Définir le périmètre</em><br />
<em>&#8211; Identifier les collaborateurs</em><br />
<em>&#8211; Communiquer sur l&rsquo;initiative</em></li>
</ul>
<ul>
<li><strong>2 &#8211; Assess &#8211; Evaluer</strong><br />
<em><u>objectif</u> : identifier et comprendre le niveau de maturité actuel</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Evaluer les pratiques déjà en place</em><br />
<em>&#8211; Déterminer le niveau de maturité actuel</em></li>
</ul>
<ul>
<li><strong>3 &#8211; Set the target &#8211; Définir la cible souhaitée</strong><br />
<em><u>objectif</u> : définir le niveau cible dans chaque sous-domaine</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Définir la cible souhaitée</em><br />
<em>&#8211; Estimer les impacts</em></li>
</ul>
<ul>
<li><strong>4 &#8211; Define the plan &#8211; Définir le plan</strong><br />
<em><u>objectif</u> : définir le plan pour arriver à l&rsquo;objectif souhaité</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Définir le nombre de phases pour atteindre l&rsquo;objectif</em><br />
<em>&#8211; Définir le planning</em></li>
</ul>
<ul>
<li><strong>5 &#8211; Implement &#8211; Mettre en place</strong><br />
<em><u>objectif</u> : réaliser le plan défini</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Mettre en place les mesures nécessaires</em></li>
</ul>
<ul>
<li><strong>6 &#8211; Roll-out &#8211; Mettre à disposition</strong><br />
<em><u>objectif</u> : S&rsquo;assurer que ce qui a été mis en place est utilisé</em><br />
<em><u>activités</u> :</em><br />
<em>&#8211; Communiquer sur les améliorations</em><br />
<em>&#8211; Mesurer l&rsquo;efficacit</em></li>
</ul>
<p>&nbsp;</p>
<h2>Calcul du niveau de maturité d&rsquo;une organisation</h2>
<p>Le niveau de maturité se définit par sous-domaine (« Education &amp; Guidance » par exemple). Il est calculé en fonction d&rsquo;un barème lié aux réponses aux questions de chaque niveau de maturité.</p>
<p>L&rsquo;exemple ci-dessous expose le nombre de points à ajouter pour chaque réponse.</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm.png"><img class="aligncenter size-full wp-image-2583" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm.png" alt="Barèmes OpenSAMM" width="1416" height="486" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm.png 1416w, https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm-300x103.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm-768x264.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/score_opensamm-1024x351.png 1024w" sizes="(max-width: 1416px) 100vw, 1416px" /></a></p>
<p>Pour le sous-domaine « Education &amp; Guidance », un exemple de réponses serait  :</p>
<ul>
<li>Have developers been given high-level security awareness training?<br />
<em>réponse : <strong>Once </strong>=&gt; 0,2 point</em></li>
<li>Does each project team understand where to find secure development best-practices and guidance?<br />
<em>réponse : <strong>Half</strong>=&gt; 0,5 point</em></li>
<li>Are those involved in the development process given role-specific security training and guidance?<br />
<em>réponse : <strong>No </strong>=&gt; 0 point</em></li>
<li>Are stakeholders able to pull in security coaches for use on projects?<br />
<em>réponse : <strong>Some </strong>=&gt; 0,2 point</em></li>
<li>Is security-related guidance centrally controlled and consistently distributed throughout the organization?<br />
<em>réponse : <strong>Per Team </strong>=&gt; 0,2 point</em></li>
<li>Are developers tested to ensure a baseline skillset for secure development practices?<br />
<em>réponse : <strong>No </strong>=&gt; 0 point</em></li>
</ul>
<p>Dans ce cas le score est de <strong>1,1</strong>, ce qui se traduit par un niveau de maturité <strong>1+</strong>.</p>
<h2></h2>
<h2>Aide à la mise en place</h2>
<p>Pour aider à la mise en place d&rsquo;OpenSAMM, l&rsquo;OWASP met à disposition un fichier Excel permettant de :</p>
<ul>
<li>Evaluer le niveau de maturité par sous-domaine en répondant aux questions. En fonction des réponses, le score par sous-domaine est automatiquement calculé.</li>
</ul>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement.png"><img class="aligncenter size-full wp-image-2584" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement.png" alt="Evaluation Excel OpenSAMM" width="1247" height="310" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement.png 1247w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement-300x75.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement-768x191.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_assessement-1024x255.png 1024w" sizes="(max-width: 1247px) 100vw, 1247px" /></a></p>
<ul>
<li>Proposer en fonction des réponses données ci-dessus une roadmap pour améliorer les scores. Cette roadmap est composée de 4 phases et propose dans chaque itération d&rsquo;améliorer un ou plusieurs point. L&rsquo;évolution du score par phase est indiqué.</li>
</ul>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution.png"><img class="aligncenter size-full wp-image-2585" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution.png" alt="Roadmap Excel OpenSAMM" width="1501" height="363" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution.png 1501w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-300x73.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-768x186.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1024x248.png 1024w" sizes="(max-width: 1501px) 100vw, 1501px" /></a></p>
<ul>
<li>Proposer des statistiques sur la situation actuelle et la situation cible.</li>
</ul>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score.png"><img class="aligncenter size-full wp-image-2586" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score.png" alt="Statistiques Excel OpenSAMM" width="1363" height="470" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score.png 1363w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score-300x103.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score-768x265.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_score-1024x353.png 1024w" sizes="(max-width: 1363px) 100vw, 1363px" /></a></p>
<p>Ainsi que des graphiques sur l&rsquo;avancement proposé par la roadmap</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1.png"><img class="aligncenter size-full wp-image-2587" src="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1.png" alt="Statistiques Roadmap Excel OpenSAMM" width="1501" height="363" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1.png 1501w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1-300x73.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1-768x186.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/09/excel_opensamm_roadmap_evolution-1-1024x248.png 1024w" sizes="(max-width: 1501px) 100vw, 1501px" /></a></p>
<p>&nbsp;</p>
<h2>Ressources</h2>
<ul>
<li><a href="http://www.opensamm.org/" target="_blank" rel="noopener">Site du projet</a></li>
<li><a href="https://www.owasp.org/index.php/OWASP_SAMM_Project" target="_blank" rel="noopener">Page sur le site de l&rsquo;OWASP</a></li>
<li><a href="https://github.com/OWASP/samm" target="_blank" rel="noopener">Github du projet</a></li>
<li><a href="https://github.com/OWASP/samm/blob/master/v1.5/Final/SAMM_Core_V1-5_FINAL.pdf" target="_blank" rel="noopener">Contenu du modèle</a> (définitions, barèmes, questions, etc.)</li>
<li><a href="https://github.com/OWASP/samm/blob/master/v1.5/Final/SAMM_How_To_V1-5_FINAL.pdf" target="_blank" rel="noopener">How to</a></li>
<li><a href="https://github.com/OWASP/samm/blob/master/v1.5/Final/SAMM_Quick_Start_V1-5_FINAL.pdf" target="_blank" rel="noopener">Guide de démarrage</a></li>
<li><a href="https://github.com/OWASP/samm/blob/master/v1.5/Final/SAMM_Assessment_Toolbox_v1.5_FINAL.xlsx" target="_blank" rel="noopener">Fichier Excel de calcul</a></li>
<li><a href="https://github.com/OWASP/samm/blob/master/v1.5/Final/SAMM_Assessment_Toolbox_v1.5-Example_FINAL.xlsx" target="_blank" rel="noopener">Fichier Excel d&rsquo;exemple</a></li>
</ul>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/09/27/cybersecurite-opensamm-modele-de-maturite-developpement-dapplications-securisees/">[Cybersécurité] OpenSAMM, modèle de maturité pour le développement d&rsquo;applications sécurisées</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2017/09/27/cybersecurite-opensamm-modele-de-maturite-developpement-dapplications-securisees/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] Secure Software Development Life Cycle (SSDLC)</title>
		<link>https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/</link>
		<comments>https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/#respond</comments>
		<pubDate>Mon, 18 Sep 2017 20:09:15 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[Développement]]></category>
		<category><![CDATA[cybersécurité]]></category>
		<category><![CDATA[OWASP]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2572</guid>
		<description><![CDATA[<p>Le cycle de de vie du développement d&#8217;un application est l&#8217;ensemble des étapes de réalisation d&#8217;un logiciel dans le but de construire un produit de qualité. L&#8217;intégration de la sécurité dans le SDLC intervient à chaque étape de celui-ci et se matérialise de plusieurs manières (threat modeling, review, SAST, DAST, etc.). Ci-dessous, une liste non-exhaustive [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/">[Cybersécurité] Secure Software Development Life Cycle (SSDLC)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Le cycle de de vie du développement d&rsquo;un application est l&rsquo;ensemble des étapes de réalisation d&rsquo;un logiciel dans le but de construire un produit de qualité.</p>
<p>L&rsquo;intégration de la sécurité dans le SDLC intervient à chaque étape de celui-ci et se matérialise de plusieurs manières (threat modeling, review, SAST, DAST, etc.).</p>
<p>Ci-dessous, une liste non-exhaustive d&rsquo;actions à mener au sein du SDLC pour délivrer une application sécurisée.</p>
<p><iframe style="border: 1px solid #CCC; border-width: 1px; margin-bottom: 5px; max-width: 100%;" src="//www.slideshare.net/slideshow/embed_code/key/AU4vx0jmiEFCaz" width="595" height="485" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" allowfullscreen="allowfullscreen"> </iframe></p>
<div style="margin-bottom: 5px;"><strong> <a title="Secure Software Development Life Cycle (SSDLC)" href="//www.slideshare.net/aymericlagier/secure-software-development-life-cycle-ssdlc" target="_blank" rel="noopener">Secure Software Development Life Cycle (SSDLC)</a> </strong> de <strong><a href="https://www.slideshare.net/aymericlagier" target="_blank" rel="noopener">Aymeric Lagier</a></strong></div>
<div style="margin-bottom: 5px;"></div>
<h2 style="margin-bottom: 5px;">Ressources</h2>
<ul>
<li style="margin-bottom: 5px;">Secure Agile Development
<ul>
<li style="margin-bottom: 5px;"><a href="https://www.owasp.org/images/5/54/Owasp_stuttgart_agile_secure_20150803.pdf">https://www.owasp.org/images/5/54/Owasp_stuttgart_agile_secure_20150803.pdf</a></li>
<li style="margin-bottom: 5px;"><a href="https://www.owasp.org/images/3/33/OWASP_Application_Security_Verification_Standard_3.0.1.pdf">https://www.owasp.org/images/3/33/OWASP_Application_Security_Verification_Standard_3.0.1.pdf</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">Code reviews
<ul>
<li style="margin-bottom: 5px;"><a href="https://www.owasp.org/images/5/53/OWASP_Code_Review_Guide_v2.pdf">https://www.owasp.org/images/5/53/OWASP_Code_Review_Guide_v2.pdf</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">SAST/DAST
<ul>
<li style="margin-bottom: 5px;"><a href="http://www.veracode.com/solutions/by-need/streamlining-compliance">http://www.veracode.com/solutions/by-need/streamlining-compliance</a></li>
<li style="margin-bottom: 5px;"><a href="https://www.checkmarx.com/2015/04/29/sast-vs-dast-why-sast-3">https://www.checkmarx.com/2015/04/29/sast-vs-dast-why-sast-3</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">Analyse de dépendances
<ul>
<li style="margin-bottom: 5px;"><a href="https://info.blackducksoftware.com/rs/872-OLS-526/images/OSSAReportFINAL.pdf">https://info.blackducksoftware.com/rs/872-OLS-526/images/OSSAReportFINAL.pdf</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">Plan de réponse à incident
<ul>
<li style="margin-bottom: 5px;"><a href="https://www.owasp.org/images/9/92/Top10ConsiderationsForIncidentResponse.pdf">https://www.owasp.org/images/9/92/Top10ConsiderationsForIncidentResponse.pdf</a></li>
<li style="margin-bottom: 5px;"><a href="https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Security_Guide/s1-response-plan.html">https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/3/html/Security_Guide/s1-response-plan.html</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">OpenSAMM
<ul>
<li style="margin-bottom: 5px;"><a href="https://github.com/OWASP/samm/tree/master/v1.5/Final">https://github.com/OWASP/samm/tree/master/v1.5/Final</a></li>
</ul>
</li>
<li style="margin-bottom: 5px;">ASVS
<ul>
<li style="margin-bottom: 5px;"><a href="https://www.owasp.org/images/3/33/OWASP_Application_Security_Verification_Standard_3.0.1.pdf">https://www.owasp.org/images/3/33/OWASP_Application_Security_Verification_Standard_3.0.1.pdf</a></li>
</ul>
</li>
</ul>
<div style="margin-bottom: 5px;"></div>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/">[Cybersécurité] Secure Software Development Life Cycle (SSDLC)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2017/09/18/cybersecurite-secure-software-development-life-cycle-ssdlc/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] Surveiller vos dépendances avec Dependency Check de l&#8217;OWASP</title>
		<link>https://www.aymericlagier.com/2017/08/10/cybersecurite-surveiller-vos-dependances-dependency-check-de-lowasp/</link>
		<comments>https://www.aymericlagier.com/2017/08/10/cybersecurite-surveiller-vos-dependances-dependency-check-de-lowasp/#respond</comments>
		<pubDate>Thu, 10 Aug 2017 11:55:12 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[cybersécurité]]></category>
		<category><![CDATA[OWASP]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2560</guid>
		<description><![CDATA[<p>Selon le Gartner, dans une application, 80% du code est fourni par des dépendances (spring, ORM, parsing de XML/JSON, etc.). Sur 95% des applications qui contiennent des dépendances opensource, 65% contiennent des dépendances vulnérables. Malheureusement, lorsqu&#8217;une dépendance est installée pour un besoin spécifique, le suivi est rarement fait pour se tenir à jour des nouvelles [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/08/10/cybersecurite-surveiller-vos-dependances-dependency-check-de-lowasp/">[Cybersécurité] Surveiller vos dépendances avec Dependency Check de l&rsquo;OWASP</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Selon le Gartner, dans une application, 80% du code est fourni par des dépendances (spring, ORM, parsing de XML/JSON, etc.). Sur 95% des applications qui contiennent des dépendances opensource, 65% contiennent des dépendances vulnérables.</p>
<p>Malheureusement, lorsqu&rsquo;une dépendance est installée pour un besoin spécifique, le suivi est rarement fait pour se tenir à jour des nouvelles versions et encore moins des vulnérabilités qui pouvant l&rsquo;affecter.</p>
<h2>Dependency Check</h2>
<p>L&rsquo;<a href="https://www.owasp.org" target="_blank" rel="noopener">OWASP</a> propose un outil nommé <a href="https://www.owasp.org/index.php/OWASP_Dependency_Check" target="_blank" rel="noopener">Dependency Check</a> permettant de lister et vérifier automatiquement pour toutes les dépendances d&rsquo;une application si une CVE (Common Vulnerabilities and Exposures) a été publiée pour la version utilisée. La base de données utilisée par Dependency Check est le <a class="external text" href="http://nvd.nist.gov/download.cfm" target="_blank" rel="nofollow noopener">NVD Data Feeds</a> proposée par le <a href="https://www.nist.gov" target="_blank" rel="noopener">NIST</a>.</p>
<p>Dependency Check est actuellement mature pour Java, .NET et expérimental pour Ruby, Node.js, Python et C/C++. Il est disponible sur la forme d&rsquo;un plugin Maven, un plugin Gradle, une tâche Ant, un plugin Jenkins ou un executable en ligne de commande. Il existe également un plugin Sonarqube permettant d&rsquo;intégrer directement les résultats dans les « issues » et les « measures ».</p>
<h2>Glossaire</h2>
<ul>
<li><span style="text-decoration: underline;"><strong>CVE (Common Vulnerabilities and Exposures)</strong></span> : Dictionnaire public maintenu par le <a href="https://www.mitre.org" target="_blank" rel="noopener">MITRE </a>et permettant d&rsquo;identifier des vulnérabilités sur des composants logiciel</li>
</ul>
<p><span style="text-decoration: underline;">Exemple</span> :</p>
<p><a href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-9787" target="_blank" rel="noopener">CVE-2017-9787</a> &#8211; When using a Spring AOP functionality to secure Struts actions it is possible to perform a DoS attack when user was properly authenticated. Solution is to upgrade to Apache Struts version 2.5.12 or 2.3.33.</p>
<ul>
<li><span style="text-decoration: underline;"><strong>CWE (Common Weakness Enumeration)</strong></span> : Classe de vulnérabilités</li>
</ul>
<p>Exemple : SQL Injection</p>
<ul>
<li><span style="text-decoration: underline;"><strong>CPE Confidence</strong></span> : Indice de confiance sur la reconnaissance d&rsquo;une dépendance et de sa version</li>
<li><span style="text-decoration: underline;"><strong>Evidence</strong></span> : Preuve permettant de déterminer le nom et la version d&rsquo;une dépendance</li>
</ul>
<h2>Exécution via Jenkins</h2>
<p>En intégrant le <a href="https://wiki.jenkins.io/display/JENKINS/OWASP+Dependency-Check+Plugin" target="_blank" rel="noopener">plugin Jenkins</a> (mode job et pipleline disponibles), Dependency Check peut être exécuté à chaque fois qu&rsquo;une build est déclenchée.</p>
<p>Les résultats sont ensuite mis à disposition via un lien sur la page « status » de la build :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc.png"><img class="aligncenter size-full wp-image-2564" src="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc.png" alt="" width="1278" height="591" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc.png 1278w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-300x139.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-768x355.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-1024x474.png 1024w" sizes="(max-width: 1278px) 100vw, 1278px" /></a></p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail.png"><img class="aligncenter size-full wp-image-2563" src="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail.png" alt="" width="1278" height="673" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail.png 1278w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail-300x158.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail-768x404.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/08/jenkins-dc-detail-1024x539.png 1024w" sizes="(max-width: 1278px) 100vw, 1278px" /></a></p>
<p>L&rsquo;intégration peut être directement faite dans Sonarqube via un <a href="https://github.com/stevespringett/dependency-check-sonar-plugin" target="_blank" rel="noopener">plugin </a>:</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar.png"><img class="aligncenter size-full wp-image-2565" src="https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar.png" alt="" width="1245" height="368" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar.png 1245w, https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar-300x89.png 300w, https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar-768x227.png 768w, https://www.aymericlagier.com/wp-content/uploads/2017/08/dc-sonar-1024x303.png 1024w" sizes="(max-width: 1245px) 100vw, 1245px" /></a></p>
<p>Les métriques sont disponibles dans l&rsquo;onglet « Measures » de chaque projet. Suite aux changements intervenus sur Sonarqube 6.x, le détail des vulnérabilités ne peut pas être consulté directement en cliquant sur les liens proposés mais doit être accédé depuis l&rsquo;onglet « Issues ».</p>
<p>Les métriques Dependency Check peuvent également être intégrées dans le calcul des « quality gates ».</p>
<h2>Ligne de commande</h2>
<p>Pour télécharger l&rsquo;exécutable, rendez-vous <a href="https://bintray.com/jeremy-long/owasp/dependency-check" target="_blank" rel="noopener">ici</a>.</p>
<p>Pour lancer une analyse sur une application java, utilisez la commande suivante :</p>
<pre><code>$ ./bin/dependency-check.sh --project Testing --out . --scan [path to jar files to be scanned]</code></pre>
<p>Le résultat est un fichier HTML. Exemple : <a href="https://jeremylong.github.io/DependencyCheck/general/SampleReport.html">dependency-check-report</a></p>
<p>On retrouve une vue un peu plus détaillée que dans les rapports Jenkins ou Sonarqube avec notamment la notion de « confiance » dans l&rsquo;analyse d&rsquo;une dépendance.</p>
<p>Pour déterminer qu&rsquo;un projet utilise ou non une dépendance dans une version donnée, Dependency Check va analyser certains éléments de l&rsquo;application (pom.xml, Manifest, nom des jars, etc.) et récolter des preuves (evidence) permettant de dresser une liste des dépendances avec leurs versions.</p>
<p>Le nombre de preuves (Evidence Count) est donc mentionné dans les rapports ainsi qu&rsquo;un indice de confiance dans l&rsquo;identification de la dépendance et de sa version.</p>
<h2>Conclusion</h2>
<p>La mise en place d&rsquo;un outil comme Dependency Check dans une plateforme d&rsquo;intégration continue permet d&rsquo;être alertée sans effort sur la présence de vulnérabilités liées à des dépendances au sein d&rsquo;un application. N&rsquo;oubliez pas qu&rsquo;environ 80% du code de votre application n&rsquo;a pas été écrit par vous.</p>
<h2>Ressources</h2>
<ul>
<li><a href="https://jeremylong.github.io/DependencyCheck/index.html" target="_blank" rel="noopener">https://jeremylong.github.io/DependencyCheck/index.html</a></li>
<li><a href="https://www.owasp.org/index.php/OWASP_Dependency_Check" target="_blank" rel="noopener">https://www.owasp.org/index.php/OWASP_Dependency_Check</a></li>
<li><a href="https://github.com/jeremylong/DependencyCheck" target="_blank" rel="noopener">https://github.com/jeremylong/DependencyCheck</a></li>
</ul>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/08/10/cybersecurite-surveiller-vos-dependances-dependency-check-de-lowasp/">[Cybersécurité] Surveiller vos dépendances avec Dependency Check de l&rsquo;OWASP</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2017/08/10/cybersecurite-surveiller-vos-dependances-dependency-check-de-lowasp/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Retour sur l&#8217;AWS Summit Paris du 27 juin 2017</title>
		<link>https://www.aymericlagier.com/2017/07/18/retour-laws-summit-paris-27-juin-2017/</link>
		<comments>https://www.aymericlagier.com/2017/07/18/retour-laws-summit-paris-27-juin-2017/#respond</comments>
		<pubDate>Tue, 18 Jul 2017 20:54:56 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cloud]]></category>
		<category><![CDATA[AWS]]></category>
		<category><![CDATA[cloud]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2549</guid>
		<description><![CDATA[<p>Le 27 juin dernier s&#8217;est déroulé l&#8217;AWS Summit 2017 d&#8217;Amazon à Paris dédié à la présentation des services AWS et aux retours d&#8217;expériences de différents clients sur l&#8217;utilisation de ces services. Voici des notes sur quelques-unes des sessions présentées : #Keynote Vidéo : https://www.youtube.com/watch?v=Fn5jpD_Utn4 Mise en avant Clients d&#8217;AWS mis en avant : Société Générale, Danone, Veolia, [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/07/18/retour-laws-summit-paris-27-juin-2017/">Retour sur l&rsquo;AWS Summit Paris du 27 juin 2017</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292.jpg"><img class="aligncenter size-full wp-image-2556" src="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292.jpg" alt="" width="1920" height="537" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292.jpg 1920w, https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292-300x84.jpg 300w, https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292-768x215.jpg 768w, https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0292-1024x286.jpg 1024w" sizes="(max-width: 1920px) 100vw, 1920px" /></a></p>
<p>Le 27 juin dernier s&rsquo;est déroulé l&rsquo;AWS Summit 2017 d&rsquo;Amazon à Paris dédié à la présentation des services AWS et aux retours d&rsquo;expériences de différents clients sur l&rsquo;utilisation de ces services.</p>
<p>Voici des notes sur quelques-unes des sessions présentées :</p>
<h2>#Keynote</h2>
<p>Vidéo : <a href="https://www.youtube.com/watch?v=Fn5jpD_Utn4">https://www.youtube.com/watch?v=Fn5jpD_Utn4</a></p>
<h4>Mise en avant</h4>
<ul>
<li>Clients d&rsquo;AWS mis en avant : Société Générale, Danone, Veolia, Engie</li>
<li>80% des entreprises du CAC40 utiliseraient AWS</li>
<li>L&rsquo;ouverture d&rsquo;un datacenter en France est toujours prévu pour la fin 2017</li>
</ul>
<h4>Retour d&rsquo;expérience Radio France</h4>
<ul>
<li>Suite aux attentats de Charlie Hebdo, l&rsquo;infrastructure en place n&rsquo;a pas supporté le trafic et les services ont été dégradés pendant 3 semaines</li>
<li>Suite à ces incidents l&rsquo;ensemble de l&rsquo;infrastructure est maintenant sur AWS</li>
<li>Chiffres :
<ul>
<li><span style="text-decoration: underline;">Base de données</span> : 1,5 millions de pages, 1,4 millions de sons et plus de 10To de données</li>
<li><span style="text-decoration: underline;">Sur un mois</span> : 170 millions d&rsquo;écoutes, 1000To d&rsquo;audio écoutés, 150 millions de visites et plus de 20 millions d&rsquo;internautes</li>
</ul>
</li>
</ul>
<h4>Produits</h4>
<ul>
<li>AWS Shield pour la protection contre les DDOS : <a href="https://aws.amazon.com/fr/shield/">https://aws.amazon.com/fr/shield/</a></li>
<li>Athena : Système de requêtes SQL pour interroger S3 (stockage de données) : <a href="https://aws.amazon.com/fr/athena/">https://aws.amazon.com/fr/athena/</a></li>
</ul>
<h2>Session#1 Casser son application pour construire l&rsquo;esprit devops de son équipe ?</h2>
<ul>
<li>Retour d&rsquo;expérience fait par Veolia sur l&rsquo;organisation de « gameday » pour construire un esprit devops</li>
<li><span style="text-decoration: underline;">Constat initial</span> : « Everything fails all the time »</li>
</ul>
<h4>Organisation d&rsquo;un gameday</h4>
<ul>
<li><span style="text-decoration: underline;">Objectifs</span> : Casser certains éléments d&rsquo;un environnement dédié et voir comme se comportent les équipes</li>
<li>Un gameday doit être ludique</li>
</ul>
<h4>Etapes</h4>
<ul>
<li><span style="text-decoration: underline;">Préparer</span> : création des scenarii, kickoff, cadrage du périmètre, planning</li>
<li><span style="text-decoration: underline;">Faire</span></li>
<li><span style="text-decoration: underline;">Débriefer</span> :
<ul>
<li>Comment améliorer l&rsquo;architecture, le monitoring, la configuration des services AWS, etc.</li>
<li>Un exemple intéressant : Ils se sont rendus compte dans un scenario que toute l&rsquo;application était hors service, sauf le endpoint monitoré. Aucune alerte n&rsquo;était remontée.</li>
<li></li>
</ul>
</li>
</ul>
<h4>Exemples de scenarii</h4>
<ul>
<li>DROP Table d&rsquo;une table au hasard</li>
<li>Arrêt d&rsquo;un service AWS</li>
<li>Problème de permission sur un bucket S3</li>
<li>Charge soudaine sur l&rsquo;application</li>
<li>Crash applicatif</li>
</ul>
<h2>Session#2 Patterns et bonnes pratiques des architectures Big Data en Serverless</h2>
<h4>3 manières d&rsquo;utiliser le cloud AWS</h4>
<ul>
<li><span style="text-decoration: underline;">EC2</span>
<ul>
<li>Création de VM, installation, gestion du scaling, etc. à la charge de l&rsquo;utilisateur</li>
</ul>
</li>
<li><span style="text-decoration: underline;">Services managés classique (ex:  Hadoop)</span>
<ul>
<li>L&rsquo;infrastructure et l&rsquo;installation sont gérés par Amazon mais l&rsquo;infrastructure utilisée reste visible de l&rsquo;utilisateur. Il lui reste des éléments à gérer lui même (scaling par exemple).</li>
</ul>
</li>
<li><span style="text-decoration: underline;">Serverless (ex: Lambda)</span>
<ul>
<li>L&rsquo;infrastructure est complètement masquée de l&rsquo;utilisateur.</li>
</ul>
</li>
</ul>
<h4> Lambda</h4>
<ul>
<li>L&rsquo;instanciation et l&rsquo;exécution des fonctions est faite sur base d&rsquo;événements (ex : ajout d&rsquo;un objet dans S3)</li>
<li>Les fonctions doivent être stateless</li>
<li>Les fonctions pouvant être supprimées à tout moment, il faut faire attention au temps d&rsquo;initialisation engendré par un démarrage à froid (cold start)</li>
<li>Il est recommandé de n&rsquo;utiliser les VPC (réseau virtuel) qu&rsquo;en cas de nécessité pour éviter les problèmes de performance</li>
<li>Si des erreurs se produisent avec Lambda, elles sont remontées dans Cloudwatch</li>
<li>Utiliser les <a href="https://aws.amazon.com/fr/step-functions/">step functions</a> pour coordonner les functions Lambda</li>
</ul>
<h4>Big data/Machine learning</h4>
<ul>
<li>Démonstration faite par Corexpert sur la reconnaissance faciale avec Amazon Rekognition.</li>
<li><a href="https://www.youtube.com/watch?v=1slFnGeTzfQ">Vidéo disponible ici</a></li>
</ul>
<h2>Session#3 Le continuous delivery au service de la performance</h2>
<ul>
<li><span style="text-decoration: underline;">Objectif</span> : Ajuster le dimensionnement de l&rsquo;infrastructure en fonction des événements. Par exemple, la finale de la ligue des champions.</li>
<li>Retour d&rsquo;expérience de la part de BeINSport</li>
</ul>
<ul>
<li><span style="text-decoration: underline;">Chiffres</span> : En 2016, ils ont fait 121 MEP et fait 813 créations de VM</li>
</ul>
<ul>
<li><span style="text-decoration: underline;">A retenir, le déploiement doit être</span> :
<ul>
<li>un non-événement</li>
<li>indolore</li>
<li>pas consommateur en temps</li>
</ul>
</li>
</ul>
<h2>Session#4 Intégrez votre Amazon Lex Chatbot avec vos services de messagerie</h2>
<ul>
<li>Amazon Lex : interface de création de Chatbot pour de multiples plateformes (SMS, Messenger, Slack, etc.)</li>
<li>Amazon Polly : Text to Speech</li>
<li>Ces 2 services ne sont actuellement disponibles que pour l&rsquo;anglais</li>
</ul>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0294.jpg"><img class="aligncenter wp-image-2552 size-large" src="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0294-1024x768.jpg" alt="" width="648" height="486" srcset="https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0294-1024x768.jpg 1024w, https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0294-300x225.jpg 300w, https://www.aymericlagier.com/wp-content/uploads/2017/07/IMG_0294-768x576.jpg 768w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<h4>Etapes</h4>
<p>1- Traduction de la voix en texte<br />
2- Découpage des mots<br />
3- Reconnaissance de mots clés pour correspondre à un scénario (ex : « hôtel » =&gt; scénario de réservation d’hôtel)<br />
4- Reconnaissance de mots clé pour pré-remplir certains paramètres nécessaires au déroulement du scénario (ex : Paris =&gt; localisation)<br />
5- Pose des questions pour remplir les autres paramètres attendus (ex : date de départ et d&rsquo;arrivée)<br />
6- Confirmation<br />
7- Amazon Polly pour Text to Speech et pour répondre</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2017/07/18/retour-laws-summit-paris-27-juin-2017/">Retour sur l&rsquo;AWS Summit Paris du 27 juin 2017</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2017/07/18/retour-laws-summit-paris-27-juin-2017/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] Scanner les vulnérabilités d&#8217;un site web avec Arachni</title>
		<link>https://www.aymericlagier.com/2016/11/14/cybersecurite-scanner-vulnerabilites-dun-site-web-arachni/</link>
		<comments>https://www.aymericlagier.com/2016/11/14/cybersecurite-scanner-vulnerabilites-dun-site-web-arachni/#comments</comments>
		<pubDate>Mon, 14 Nov 2016 09:00:50 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[cybersécurité]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2521</guid>
		<description><![CDATA[<p>Arachni est un scanneur de vulnérabilités web écrit en Ruby (cross-plateforme) par Tasos Laskos et permettant d&#8217;automatiser la détection d&#8217;un grand nombre de failles (XSS, SQL Injection, Local File Injection, Remote File Injection, etc.). Il est disponible sous la forme d&#8217;une interface web, une application console et une API REST. Types de scans Arachni permet [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/11/14/cybersecurite-scanner-vulnerabilites-dun-site-web-arachni/">[Cybersécurité] Scanner les vulnérabilités d&rsquo;un site web avec Arachni</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p class="ProfileHeaderCard-name">Arachni est un scanneur de vulnérabilités web écrit en Ruby (cross-plateforme) par <a class="ProfileHeaderCard-nameLink u-textInheritColor js-nav" href="https://twitter.com/Zap0tek">Tasos Laskos</a> et permettant d&rsquo;automatiser la détection d&rsquo;un grand nombre de failles (XSS, SQL Injection, Local File Injection, Remote File Injection, etc.). Il est disponible sous la forme d&rsquo;une interface web, une application console et une API REST.</p>
<h2>Types de scans</h2>
<p>Arachni permet de faire des scans actifs ou passifs.</p>
<h3>Scans actifs</h3>
<p>Ils testent la présence de failles sur les pages web visitées, par exemple :</p>
<ul>
<li>Envoie de code malicieux dans les formulaires pour tester les injections SQL ou XSS</li>
<li>Injection de chemins vers des fichiers locaux dans les URLs (/etc/passwd par exemple)</li>
</ul>
<h3>Scan passifs</h3>
<p>Ils sont non intrusifs et ne laissent pas de traces dans les bases de données des application testées. Ils se décomposent en 3 types de détection :</p>
<ul>
<li>Vérification de configuration (utilisation de HSTS, présence du flag HTTP_ONLY sur les cookies, etc.)</li>
<li>Récupération d&rsquo;informations (méthodes HTTP autorisées, dossiers communs, listing de répertoires, etc.)</li>
<li>Présence d&rsquo;informations sensibles (présence d&rsquo;adresses IP, de numéros de sécurité sociales américains, emails dans les pages HTML)</li>
</ul>
<h2>Configuration</h2>
<p>La configuration d&rsquo;Arachni fonctionne avec des « checks » et des profils.</p>
<h3>Checks</h3>
<p>Les checks correspondent aux actions qui seront effectuées par Arachni. Ils sont divisés en 2 catégories : Actif et Passif</p>
<h3>Actifs</h3>
<ul>
<li>Code injection</li>
<li>Code injection (php://input wrapper)</li>
<li>Code injection (timing)</li>
<li>CSRF</li>
<li>File Inclusion</li>
<li>LDAPInjection</li>
<li>NoSQL Injection</li>
<li>Blind NoSQL Injection (differential analysis)</li>
<li>OS command injection</li>
<li>OS command injection (timing)</li>
<li>Path Traversal</li>
<li>Response Splitting</li>
<li>Remote File Inclusion</li>
<li>Session fixation</li>
<li>Source code disclosure</li>
<li>SQL Injection</li>
<li>Blind SQL Injection (differential analysis)</li>
<li>Blind SQL injection (timing attack)</li>
<li>Trainer</li>
<li>Unvalidated redirect</li>
<li>Unvalidated DOM redirect</li>
<li>XPath Injection</li>
<li>XSS</li>
<li>DOM XSS</li>
<li>DOM XSS in script context</li>
<li>XSS in HTML element event attribute</li>
<li>XSS in path</li>
<li>XSS in script context</li>
<li>XSS in HTML tag</li>
<li>XML External Entity</li>
</ul>
<p><a href="https://github.com/Arachni/arachni#active" target="_blank">Plus d&rsquo;informations sur Github</a></p>
<h3>Passifs</h3>
<ul>
<li>Allowed methods</li>
<li>Backdoors</li>
<li>Backup directories</li>
<li>Backup files</li>
<li>CAPTCHA</li>
<li>Common administration interfaces</li>
<li>Common directories</li>
<li>Common files</li>
<li>Cookie set for parent domain</li>
<li>Credit card number disclosure</li>
<li>CVS/SVN users</li>
<li>Directory listing</li>
<li>E-mail address</li>
<li>Form-based File Upload</li>
<li>HTTP Strict Transport Security</li>
<li>.htaccess LIMIT misconfiguration</li>
<li>HTML objects</li>
<li>HttpOnly cookies</li>
<li>HTTP PUT</li>
<li>Insecure client-access policy</li>
<li>Insecure cookies</li>
<li>Insecure CORS policy</li>
<li>Insecure cross-domain policy (allow-access-from)</li>
<li>Insecure cross-domain policy (allow-http-request-headers-from)</li>
<li>Interesting responses</li>
<li>localstart.asp</li>
<li>Mixed Resource</li>
<li>Origin Spoof Access Restriction Bypass</li>
<li>Password field with auto-complete</li>
<li>Private IP address finder</li>
<li>SSN</li>
<li>Unencrypted password forms</li>
<li>WebDAV</li>
<li>Missing X-Frame-Options header</li>
<li>XST</li>
</ul>
<p><a href="https://github.com/Arachni/arachni#passive" target="_blank">Plus d&rsquo;informations sur Github</a></p>
<h3>Profils</h3>
<p>Les profiles rassemblent ensuite un ou plusieurs « checks » au sein de la configuration d&rsquo;un scan. Parmi les autres options disponibles, on retrouve par exemple :</p>
<ul>
<li>Exclure des paths</li>
<li>Configuration de l&rsquo;audit du site web</li>
<li>Configuration du fingerprinting pour ne jouer que les payloads correspondants aux applications ou technologies utilisées sur le site web audité (gain de performance)</li>
<li>Gestion des plugins</li>
<li>Gestion des paramètres HTTP (proxy, nombre de requêtes, etc.)</li>
</ul>
<p>Lors du lancement d&rsquo;un scan, il suffit ensuite de renseigner l&rsquo;URL a auditée et le profil choisi.</p>
<h2>Interfaces web</h2>
<p>L&rsquo;interface web est complète en permettant les actions suivantes :</p>
<ul>
<li>Configuration des comptes utilisateurs</li>
<li>Gestion des profiles</li>
<li>Gestion des agents permettant de déporter la charge sur d&rsquo;autres machines</li>
<li>Planification des scans</li>
<li>Lancement et consultation des scans</li>
</ul>
<h3>Lancement d&rsquo;un scan</h3>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan.png"><img class="aligncenter wp-image-2527 size-large" src="https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan-1024x619.png" alt="start_scan" width="648" height="392" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan-1024x619.png 1024w, https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan-300x181.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan-768x464.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/11/start_scan.png 1439w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>A noter qu&rsquo;il est possible de déporter la charge du scan sur une ou plusieurs autres machines en fonction des agents configurés (dispatchers).</p>
<p>&nbsp;</p>
<h3>Liste des vulnérabilités détectées</h3>
<p>&nbsp;</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites.png"><img class="aligncenter wp-image-2526 size-large" src="https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites-1024x662.png" alt="liste_vulnerabilites" width="648" height="419" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites-1024x662.png 1024w, https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites-300x194.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites-768x497.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/11/liste_vulnerabilites.png 1437w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>Les vulnérabilités sont regroupées en fonction de leurs sévérités et de leurs types.</p>
<p>&nbsp;</p>
<h3>Détails d&rsquo;une vulnérabilité</h3>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1.png"><img class="aligncenter wp-image-2524 size-large" src="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1-1024x658.png" alt="details_vulnerabilite_1" width="648" height="416" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1-1024x658.png 1024w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1-300x193.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1-768x493.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_1.png 1439w" sizes="(max-width: 648px) 100vw, 648px" /></a><a href="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2.png"><img class="aligncenter wp-image-2525 size-large" src="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2-1024x657.png" alt="details_vulnerabilite_2" width="648" height="416" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2-1024x657.png 1024w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2-300x193.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2-768x493.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/11/details_vulnerabilite_2.png 1438w" sizes="(max-width: 648px) 100vw, 648px" /></a></p>
<p>Dans chaque détail, il y a la requête HTTP envoyée ainsi que la réponse reçue avec une mise en évidence de la faille détectée (ici du XSS).</p>
<h2>Mon avis</h2>
<p>J&rsquo;ai testé initialement Arachni pour effectuer une recherche automatisée de failles XSS sur une application volontairement vulnérable. Après avoir tester <a href="https://www.owasp.org/index.php/OWASP_Zed_Attack_Proxy_Project" target="_blank">ZAP </a>et <a href="http://tools.kali.org/web-applications/xsser" target="_blank">xsser</a>, Arachni semble être l’outil qui a détecté les failles que j&rsquo;attendais. Attention toutefois à correctement configurer les profiles pour ne sélectionner que les éléments pertinents. Sans une configuration spécifique, le scan pourra durer plusieurs heures pour un site très simple. Les rapports sont complets et permettent l&rsquo;identification et la correction rapide des problèmes.</p>
<h2>Sources</h2>
<ul>
<li>Github : <a href="https://github.com/Arachni" target="_blank">https://github.com/Arachni</a></li>
<li>Site web : <a href="http://www.arachni-scanner.com/" target="_blank">http://www.arachni-scanner.com/</a></li>
<li>wiki : <a href="https://github.com/Arachni/arachni/wiki" target="_blank">https://github.com/Arachni/arachni/wiki</a></li>
<li>benchmarks avec les autres outils : <a href="http://sectoolmarket.com/wivet-score-unified-list.html" target="_blank">http://sectoolmarket.com/wivet-score-unified-list.html</a></li>
</ul>
<h2>Notes</h2>
<p>Attention, les tests automatisés ne remplacent pas les tests manuels</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/11/14/cybersecurite-scanner-vulnerabilites-dun-site-web-arachni/">[Cybersécurité] Scanner les vulnérabilités d&rsquo;un site web avec Arachni</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2016/11/14/cybersecurite-scanner-vulnerabilites-dun-site-web-arachni/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Retours sur le livre surveillance:// de Tristan Nitot</title>
		<link>https://www.aymericlagier.com/2016/10/26/retours-livre-surveillance-de-tristan-nitot/</link>
		<comments>https://www.aymericlagier.com/2016/10/26/retours-livre-surveillance-de-tristan-nitot/#respond</comments>
		<pubDate>Wed, 26 Oct 2016 09:41:28 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Vie privée]]></category>
		<category><![CDATA[Livre]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2506</guid>
		<description><![CDATA[<p>Dans un monde ou internet est omniprésent, les smartphones sont devenus des objets utilisés à outrance, le nombre d&#8217;objets connectés augmentent et ou les GAFAM (Google, Amazon, Facebook, Apple, Microsoft) nous connaissent mieux que nous même, la question de la protection de la vie privée est de plus présente dans les esprits. Je suis gêné [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/10/26/retours-livre-surveillance-de-tristan-nitot/">Retours sur le livre surveillance:// de Tristan Nitot</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Dans un monde ou internet est omniprésent, les smartphones sont devenus des objets utilisés à outrance, le nombre d&rsquo;objets connectés augmentent et ou les GAFAM (Google, Amazon, Facebook, Apple, Microsoft) nous connaissent mieux que nous même, la question de la protection de la vie privée est de plus présente dans les esprits.</p>
<p>Je suis gêné quand Google lit mes emails lorsque je réserve un hotel ou un avion et me propose les informations sur le terminal de l&rsquo;aéroport ou l&rsquo;heure à laquelle je dois partir de chez moi pour ne pas rater mon vol. Ces services sont certes pratiques mais très intrusifs dans ma vie. De la même manière, lorsque je fais des recherches sur un produit qui m’intéresse (ex : une perceuse), je me retrouve avec des pubs de perceuses sur tous les sites que je visite.</p>
<p>Beaucoup de questions peuvent ainsi être posées : Où partent mes données ? Qui peut y avoir accès ? En suis-je encore le propriétaire ? Les services liés à ces informations qui me sont proposés ne sont-ils pas qu&rsquo;un leurre ? Pourquoi Google, Facebook, etc. sont-ils gratuits ? Pourquoi dit-on de plus en plus souvent « Si c&rsquo;est gratuit, c&rsquo;est toi le produit » ?</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/CuE_gmMXgAAT2n7.jpg-large.jpg"><img class="aligncenter wp-image-2507 size-medium" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/CuE_gmMXgAAT2n7.jpg-large-225x300.jpg" alt="surveillance://" width="225" height="300" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/CuE_gmMXgAAT2n7.jpg-large-225x300.jpg 225w, https://www.aymericlagier.com/wp-content/uploads/2016/10/CuE_gmMXgAAT2n7.jpg-large-768x1024.jpg 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/CuE_gmMXgAAT2n7.jpg-large.jpg 1080w" sizes="(max-width: 225px) 100vw, 225px" /></a></p>
<p>Le livre surveillance proposé par Tristan Nitot tente de répondre à une bonne partie de ces questions en illustrant les réponses avec beaucoup d&rsquo;exemples concrets et compréhensibles par tous.</p>
<p>Le livre est présenté en 2 axes majeurs. Le premier dresse un bilan de la réalité concernant les données personnelles (données collectées par les GAFAM, la NSA, pourquoi dois-je me préoccuper de mes données, les lois en vigueur, etc.). Le deuxième axe donne les outils et les philosophies à adopter pour contrôler nos données (l&rsquo;open source, les outils à utiliser, les configurations à mettre en place, les projets à suivre, etc.).</p>
<p>J&rsquo;ai trouvé ce livre intéressant pour les raisons suivantes :</p>
<ul>
<li>Il peut être lu et être utile aussi bien à un ingénieur en informatique qu&rsquo;à une mère au foyer</li>
<li>Il n&rsquo;est pas extrémiste, c&rsquo;est à dire que le but n&rsquo;est pas d’empêcher complétement la collecte des données et donc de se priver d&rsquo;un outils formidable qu&rsquo;est internet mais de prendre conscience et reprendre le contrôle</li>
<li>La liste des contre-mesures est intéressante et bien détaillée</li>
<li>Tout est illustré par des exemples concrets</li>
</ul>
<p>Bref, ce livre est à mettre entre toutes les mains.</p>
<p>Vous pouvez le commander sur <a href="https://www.amazon.fr/Surveillance-libertés-numériques-Tristan-Nitot/dp/2915825653" target="_blank">Amazon </a>et sur le site de l&rsquo;<a href="http://cfeditions.com/surveillance/" target="_blank">éditeur C&amp;F</a>.</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/10/26/retours-livre-surveillance-de-tristan-nitot/">Retours sur le livre surveillance:// de Tristan Nitot</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2016/10/26/retours-livre-surveillance-de-tristan-nitot/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] Principe et implémentation de HSTS (HTTP Strict Transport Security)</title>
		<link>https://www.aymericlagier.com/2016/10/09/cybersecurite-principe-et-implementation-de-hsts-http-strict-transport-security/</link>
		<comments>https://www.aymericlagier.com/2016/10/09/cybersecurite-principe-et-implementation-de-hsts-http-strict-transport-security/#comments</comments>
		<pubDate>Sun, 09 Oct 2016 12:34:54 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[cybersécurité]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2447</guid>
		<description><![CDATA[<p>HTTPS est devenu quasiment obligatoire sur tous les sites web et particulièrement sur ceux contenant des formulaires. Même si ce n&#8217;est pour le moment qu&#8217;une indication non bloquante, Firefox émet une erreur lors de la visite d&#8217;une page non sécurisée contenant des formulaires (en savoir plus). Pour rappel, la mise en place du protocole HTTPS [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/10/09/cybersecurite-principe-et-implementation-de-hsts-http-strict-transport-security/">[Cybersécurité] Principe et implémentation de HSTS (HTTP Strict Transport Security)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>HTTPS est devenu quasiment obligatoire sur tous les sites web et particulièrement sur ceux contenant des formulaires. Même si ce n&rsquo;est pour le moment qu&rsquo;une indication non bloquante, Firefox émet une erreur lors de la visite d&rsquo;une page non sécurisée contenant des formulaires (<a href="https://developer.mozilla.org/fr/docs/S%C3%A9curit%C3%A9/MotsdepasseInsecuris%C3%A9s" target="_blank">en savoir plus</a>).</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/warning_http_firefox.png"><img class="aligncenter wp-image-2453 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/warning_http_firefox.png" alt="Warning Firefox formulaire HTTP" width="760" height="106" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/warning_http_firefox.png 760w, https://www.aymericlagier.com/wp-content/uploads/2016/10/warning_http_firefox-300x42.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/warning_http_firefox-750x106.png 750w" sizes="(max-width: 760px) 100vw, 760px" /></a></p>
<p>Pour rappel, la mise en place du protocole HTTPS est maintenant facilitée par l&rsquo;initiative <a href="https://letsencrypt.org/" target="_blank">Let&rsquo;s Encrypt</a>.</p>
<h2>Problématique</h2>
<p>Traditionnellement, sur un site web implémentant HTTPS, un utilisateur qui souhaite accéder à la version HTTP est redirigé via une HTTP 301 sur la version HTTPS :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https.png"><img class="aligncenter wp-image-2458 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https.png" alt="Redirection HTTP vers HTTPS avec HTTP 301" width="1093" height="522" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https.png 1093w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https-300x143.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https-768x367.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https-1024x489.png 1024w" sizes="(max-width: 1093px) 100vw, 1093px" /></a></p>
<p>&nbsp;</p>
<p>Par exemple sur LinkedIn :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin.png"><img class="aligncenter wp-image-2461 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin.png" alt="Redirection HTTP vers HTTPS Linkedin" width="1149" height="272" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin.png 1149w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin-300x71.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin-768x182.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/http_to_https_linedin-1024x242.png 1024w" sizes="(max-width: 1149px) 100vw, 1149px" /></a></p>
<p>Ce scenario sera répété à chaque fois que l&rsquo;utilisateur tente d&rsquo;accéder au site web en utilisant le protocole HTTP.</p>
<p>Le problème avec ce mécanisme de redirection c&rsquo;est que la première requête sur http://monsite.com est transmise en clair sur le réseau. On imagine qu&rsquo;elle peut contenir des cookies sans le flag « secure », des données de formulaires, etc. Toutes ces données peuvent être interceptées par une attaque de type « Man in the middle ».</p>
<p>Pour éviter cet aller/retour, il faut indiquer au navigateur que le site souhaité doit être accédé en HTTPS et qu&rsquo;il doit donc remplacer le HTTP par le HTTPS.</p>
<h2>Implémentation</h2>
<p>Pour avertir le navigateur que le site doit être utilisé en HTTPS, il faut rajouter le header « Strict-Transport-Security » dans les réponses HTTP renvoyées par le site web.</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header.png"><img class="aligncenter size-full wp-image-2469" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header.png" alt="hsts_header" width="1120" height="381" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header.png 1120w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header-300x102.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header-768x261.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_header-1024x348.png 1024w" sizes="(max-width: 1120px) 100vw, 1120px" /></a></p>
<p>Ce header dispose de plusieurs paramètres :</p>
<ul>
<li><span style="text-decoration: underline;">max-age</span> (obligatoire) : durée pendant laquelle le navigateur va accéder au site web uniquement en HTTPS. La valeur conseillée étant généralement de 1an (31536000s).</li>
<li><span style="text-decoration: underline;">includeSubDomains</span> (facultatif) : permet d&rsquo;appliquer HSTS aux sous-domaines</li>
<li><span style="text-decoration: underline;">preload</span> (facultatif) : permet d&rsquo;être ajouté à la liste de preloading</li>
</ul>
<p>Le scenario est donc maintenant le suivant :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts.png"><img class="aligncenter wp-image-2474 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts.png" alt="Scenario HSTS" width="1093" height="850" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts.png 1093w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts-300x233.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts-768x597.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts-1024x796.png 1024w" sizes="(max-width: 1093px) 100vw, 1093px" /></a></p>
<p>Grâce à ce mécanisme, seul le premier accès au site web contient un aller/retour en HTTP. Tout le reste se fait en HTTPS. Afin d&rsquo;éliminer ce dernier échange non sécurisé, nous allons utiliser le preloading.</p>
<p>Les navigateurs Chrome, Firefox, IE et Edge intègre une liste de sites web implémentant HSTS. Ils savent donc que ces sites web doivent être accédés uniquement en HTTPS. Pour s&rsquo;inscrire sur cette liste, il faut se rendre sur la page mise à disposition par l&rsquo;équipe Chromium : <a href="https://hstspreload.appspot.com" target="_blank">https://hstspreload.appspot.com</a>.</p>
<p>Certains pré-requis doivent être satisfaits pour être éligible :</p>
<ul>
<li>Avoir un certificat valide</li>
<li>Rediriger le HTTP vers le HTTPS (comme décrit ci-dessus)</li>
<li>Tous les sous-domaines doivent être en HTTPS</li>
<li>le sous-domaine www doit exister</li>
<li>Avoir le header HSTS (comme décrit ci-dessus) avec les paramètres « includeSubDomains » et « preload ».</li>
</ul>
<p>Une fois inscrit, il faut attendre la mise à jour de chaque navigateur. Une fois chargé dans les différents navigateurs, le scenario est le suivant :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload.png"><img class="aligncenter wp-image-2476 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload.png" alt="HSTS avec preload" width="1093" height="725" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload.png 1093w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload-300x199.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload-768x509.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_preload-1024x679.png 1024w" sizes="(max-width: 1093px) 100vw, 1093px" /></a></p>
<h2>Compatibilité</h2>
<p>HSTS est supporté par les derniers navigateurs (<a href="http://caniuse.com/#feat=stricttransportsecurity" target="_blank">http://caniuse.com/#feat=stricttransportsecurity</a>):</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts.png"><img class="aligncenter wp-image-2477 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts.png" alt="Compatibilité HSTS" width="1273" height="468" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts.png 1273w, https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts-300x110.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts-768x282.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/10/caniuse_hsts-1024x376.png 1024w" sizes="(max-width: 1273px) 100vw, 1273px" /></a></p>
<p>Sur les navigateurs ne supportant par HSTS, le header est simplement ignoré.</p>
<h2>Vérification</h2>
<p>Pour vérifier que le site web dispose d&rsquo;un header HSTS valide et qu&rsquo;il est bien préloadé dans les différents navigateurs, il est possible d&rsquo;utiliser des outils en ligne comme <a href="https://www.ssllabs.com" target="_blank">https://www.ssllabs.com.</a></p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_check.png"><img class="aligncenter wp-image-2479 size-full" src="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_check.png" alt="Vérification HSTS" width="531" height="68" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_check.png 531w, https://www.aymericlagier.com/wp-content/uploads/2016/10/hsts_check-300x38.png 300w" sizes="(max-width: 531px) 100vw, 531px" /></a></p>
<h2>Liens utiles</h2>
<ul>
<li>Documentation : <a href="https://developer.mozilla.org/fr/docs/S%C3%A9curit%C3%A9/HTTP_Strict_Transport_Security" target="_blank">https://developer.mozilla.org/fr/docs/S%C3%A9curit%C3%A9/HTTP_Strict_Transport_Security</a></li>
<li>Vérification HTTPS : <a href="https://www.ssllabs.com" target="_blank">https://www.ssllabs.com</a></li>
<li>Observatoire Mozilla : <a href="https://observatory.mozilla.org" target="_blank">https://observatory.mozilla.org</a></li>
</ul>
<p>&nbsp;</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/10/09/cybersecurite-principe-et-implementation-de-hsts-http-strict-transport-security/">[Cybersécurité] Principe et implémentation de HSTS (HTTP Strict Transport Security)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2016/10/09/cybersecurite-principe-et-implementation-de-hsts-http-strict-transport-security/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>[Cybersécurité] Se protéger des failles XSS avec les headers CSP (Content Security Policy)</title>
		<link>https://www.aymericlagier.com/2016/06/30/cybersecurite-se-proteger-des-failles-xss-avec-les-headers-csp-content-security-policy/</link>
		<comments>https://www.aymericlagier.com/2016/06/30/cybersecurite-se-proteger-des-failles-xss-avec-les-headers-csp-content-security-policy/#respond</comments>
		<pubDate>Thu, 30 Jun 2016 15:17:17 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Cybersécurité]]></category>
		<category><![CDATA[CSP]]></category>
		<category><![CDATA[CSRF]]></category>
		<category><![CDATA[cybersécurité]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[XSS]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2399</guid>
		<description><![CDATA[<p>Les failles XSS (Cross-Site Scripting), étant classées en troisième position du dernier TOP 10 de l&#8217;OWASP, sont une porte d&#8217;entrée dans les systèmes d&#8217;information (scan de ports, exploits, etc.) et une menace pour les utilisateurs (vol d&#8217;information d&#8217;identifications).  Les traditionnelles contre mesures mises en place sont le filtrage des données entrantes sur le serveur (input [&#8230;]</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/06/30/cybersecurite-se-proteger-des-failles-xss-avec-les-headers-csp-content-security-policy/">[Cybersécurité] Se protéger des failles XSS avec les headers CSP (Content Security Policy)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Les failles <a href="https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)" target="_blank">XSS</a> (Cross-Site Scripting), étant classées en troisième position du dernier <a href="https://www.owasp.org/index.php/Category:OWASP_Top_Ten_Project#tab=OWASP_Top_10_for_2013" target="_blank">TOP 10 de l&rsquo;OWASP</a>, sont une porte d&rsquo;entrée dans les systèmes d&rsquo;information (scan de ports, exploits, etc.) et une menace pour les utilisateurs (vol d&rsquo;information d&rsquo;identifications).  Les traditionnelles contre mesures mises en place sont le filtrage des données entrantes sur le serveur (input filtering) et l&rsquo;encodage des données sortantes (output encoding) afin d&rsquo;éviter l&rsquo;exécution de scripts malveillants sur les postes clients.</p>
<h3>Principe</h3>
<p>Une autre manière de se protéger de ce type de faille est de mettre en place le header HTTP <em>Content-Security-Policy</em> définissant la stratégie mise en place pour contrôler les contenus récupérés et envoyés par une page web côté client. Le principe du CSP est de définir quelles sources pourront être utilisées pour les scripts javascript, les styles CSS, les fonts, les POST de formulaires, les requêtes AJAX, etc.</p>
<p>Les sources disponibles sont les suivantes :</p>
<ul>
<li><span style="text-decoration: underline;">self</span>  : domaine courant</li>
<li><span style="text-decoration: underline;">none</span> : aucun domaine</li>
<li><span style="text-decoration: underline;">all</span> : tous les domaines</li>
<li>liste de domaines séparés par un espace.</li>
</ul>
<p>Si un élément n&rsquo;a pas de configuration, la valeur du paramètre <em>default-src</em> sera utilisée.</p>
<p><em>default-src</em> dispose de 2 valeurs supplémentaires disponibles :</p>
<ul>
<li><span style="text-decoration: underline;">unsafe-inline</span> : autorise l&rsquo;exécution de scripts inline (&lt;script&gt;&lt;/script). Avec CSP ils sont par défaut interdits</li>
<li><span style="text-decoration: underline;">unsafe-eval</span> : autorise l&rsquo;utilisation de la méthode <em>eval()</em></li>
</ul>
<p>En plus des types de ressources énumérés ci-dessus, d&rsquo;autres options sont disponibles, entre autres :</p>
<ul>
<li>Manipulation du module Anti-XSS des navigateurs</li>
<li>Gestion de nonce pour les scripts inline (CSP v2)</li>
</ul>
<h3>Récupération de contenu</h3>
<p>La quasi totalité des éléments (font, fichiers de style CSS, fichiers javascript, images, iframe, etc.) pouvant être téléchargés et/ou exécutés par une page web peuvent être contrôlés par CSP. Pour chacun de ces éléments il est possible de définir une ou plusieurs sources de confiance.</p>
<p>Par exemple :</p>
<ul>
<li><span style="text-decoration: underline;">Javascript et CSS</span> : tous les fichiers doivent provenir du domaine suivant : http<span style="text-decoration: underline;"><strong>s</strong></span>://cdn.azure.com</li>
<li><span style="text-decoration: underline;">Images</span> : toutes les images doivent provenir du domaine : http://images.azure.com</li>
<li>Les scripts inline (&lt;script&gt;&lt;/script&gt;) sont interdits</li>
<li>Pour tous les autres contenus, n&rsquo;autoriser que le domaine de la page courante</li>
</ul>
<p>Se traduira par le header HTTP suivant :</p>
<div id="policy">
<div class="alert alert-success"><em>Content-Security-Policy: default-src &lsquo;self&rsquo; ; script-src https://cdn.azure.com; style-src https://cdn.azure.com; img-src http://images.azure.com;</em></div>
</div>
<p>La liste des paramètres est disponible <a href="http://content-security-policy.com/" target="_blank">ici</a>.</p>
<h3>Envoi de contenu</h3>
<p>De la même manière, il est possible de définir une politique pour l&rsquo;émission de requêtes depuis la page cliente. C&rsquo;est principalement le cas pour les requêtes AJAX et les formulaires (CSP v2).</p>
<p>Par exemple :</p>
<ul>
<li><span style="text-decoration: underline;">Requêtes AJAX/WebSocket</span> : N&rsquo;autoriser les requêtes que vers les domaines : http<span style="text-decoration: underline;"><strong>s</strong></span>://api.monsite.com et http<span style="text-decoration: underline;"><strong>s</strong></span>://api.sitetiers.com</li>
<li><span style="text-decoration: underline;">Envoi de formulaire</span> : N&rsquo;autoriser les requêtes que vers le domaine courant</li>
</ul>
<p>Se traduira par le header HTTP suivant :</p>
<div id="policy">
<div class="alert alert-success"><em>Content-Security-Policy: connect-src https://api.sitetiers.com https://api.monsite.com; form-action &lsquo;self&rsquo; ;</em></div>
</div>
<p>Les paramètres sont cumulables avec l&rsquo;exemple précédent.</p>
<h3>Mode reporting</h3>
<p>Mettre en place CSP avec une mauvaise configuration peut avoir de lourdes conséquences sur un site web. Si une source est oubliée, on peut facilement se retrouver avec des fichiers javascript qui ne se chargent pas, un site sans style CSS ou sans images par exemple.</p>
<p>A des fins de tests, le header <em>Content-Security-Policy-Report</em> est disponible. Il se comporte comme le header <em>Content-Security-Policy</em> mais ne bloque pas réellement les ressources.</p>
<p>Exemple :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report.png"><img class="aligncenter wp-image-2412 size-full" title="Content-Security-Policy-Report" src="https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report.png" alt="content-security-policy-report" width="1284" height="277" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report.png 1284w, https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report-300x65.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report-768x166.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/06/content-security-policy-report-1024x221.png 1024w" sizes="(max-width: 1284px) 100vw, 1284px" /></a></p>
<p>CSP met également à disposition un paramètre <em>report-uri</em> pour notifier une url des violations de stratégies CSP via une requête POST.</p>
<p>Exemple de requête report reçue :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri.png"><img class="aligncenter wp-image-2411 size-full" title="report-uri" src="https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri.png" alt="report-uri" width="1870" height="594" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri.png 1870w, https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri-300x95.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri-768x244.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/06/report-uri-1024x325.png 1024w" sizes="(max-width: 1870px) 100vw, 1870px" /></a></p>
<h3>Compatibilité et versions</h3>
<p>En terme de compatibilité, la version 1 de ce header est pris en charge par les dernières versions de principaux navigateurs :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP.png"><img class="aligncenter wp-image-2400 size-full" title="CSP v1 compatibilité" src="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP.png" alt="Compatibilite_CSP" width="1269" height="527" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP.png 1269w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP-300x125.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP-768x319.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP-1024x425.png 1024w" sizes="(max-width: 1269px) 100vw, 1269px" /></a></p>
<p>Source : <a href="http://caniuse.com/#feat=contentsecuritypolicy" target="_blank">http://caniuse.com/#feat=contentsecuritypolicy</a></p>
<p>La version 2 n&rsquo;est quant à elle pas encore disponible partout :</p>
<p><a href="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2.png"><img class="aligncenter wp-image-2401 size-full" title="CSP v2 compatibilité" src="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2.png" alt="Compatibilite_CSP2" width="1266" height="490" srcset="https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2.png 1266w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2-300x116.png 300w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2-768x297.png 768w, https://www.aymericlagier.com/wp-content/uploads/2016/06/Compatibilite_CSP2-1024x396.png 1024w" sizes="(max-width: 1266px) 100vw, 1266px" /></a></p>
<p>Source : <a href="http://caniuse.com/#feat=contentsecuritypolicy2" target="_blank">http://caniuse.com/#feat=contentsecuritypolicy2</a></p>
<p>Sur les navigateurs non compatibles, le header est simplement ignoré.</p>
<p>Un draft de la version 3 est sorti et est disponible <a href="https://w3c.github.io/webappsec-csp/" target="_blank">ici</a>.</p>
<h3>Implémentation</h3>
<p>Pour implémenter le CSP sur un site web, il suffit de rajouter des headers HTTP personnalisés sur les réponses faites par notre serveur. Ce type de mécanisme est intégré à la plupart des frameworks de développement web.</p>
<p>Afin de faciliter la mise en place et la maintenabilité des règles CSP, certaines librairies sont disponibles en fonction des frameworks. Par exemple :</p>
<ul>
<li>ASP.NET : <a href="http://www.nwebsec.com/" target="_blank">NWebSec</a></li>
<li>Node.JS : Helmet (pour <a href="https://github.com/helmetjs/helmet" target="_blank">Express</a> et <a href="https://github.com/venables/koa-helmet" target="_blank">Koa</a>)</li>
</ul>
<p>Le serveur web peut également être configuré pour ajouter automatiquement ce header HTTP à toutes les requêtes sortantes.</p>
<h3>Liens utiles</h3>
<ul>
<li>Documentation : <a href="http://content-security-policy.com/" target="_blank">http://content-security-policy.com/</a></li>
<li>Générateur : <a href="https://report-uri.io/home/generate" target="_blank">https://report-uri.io/home/generate</a></li>
<li>CheatSheet : <a href="https://scotthelme.co.uk/csp-cheat-sheet/" target="_blank">https://scotthelme.co.uk/csp-cheat-sheet/</a></li>
<li>Article sur le blog de GitHub : <a href="http://githubengineering.com/githubs-csp-journey/" target="_blank">http://githubengineering.com/githubs-csp-journey/</a></li>
<li>Articles sur le blog de DropBox :
<ul style="margin-left: 50px;">
<li><a href="https://blogs.dropbox.com/tech/2015/09/on-csp-reporting-and-filtering/" target="_blank">https://blogs.dropbox.com/tech/2015/09/on-csp-reporting-and-filtering/ </a></li>
<li><a href="https://blogs.dropbox.com/tech/2015/09/unsafe-inline-and-nonce-deployment/" target="_blank">https://blogs.dropbox.com/tech/2015/09/unsafe-inline-and-nonce-deployment/ </a></li>
<li><a href="https://blogs.dropbox.com/tech/2015/09/csp-the-unexpected-eval/" target="_blank">https://blogs.dropbox.com/tech/2015/09/csp-the-unexpected-eval/ </a></li>
<li><a href="https://blogs.dropbox.com/tech/2015/09/csp-third-party-integrations-and-privilege-separation/" target="_blank">https://blogs.dropbox.com/tech/2015/09/csp-third-party-integrations-and-privilege-separation/</a></li>
</ul>
</li>
</ul>
<p>&nbsp;</p>
<p>&nbsp;</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/06/30/cybersecurite-se-proteger-des-failles-xss-avec-les-headers-csp-content-security-policy/">[Cybersécurité] Se protéger des failles XSS avec les headers CSP (Content Security Policy)</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2016/06/30/cybersecurite-se-proteger-des-failles-xss-avec-les-headers-csp-content-security-policy/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>ASCII Folding dans Elasticsearch et appel de _analyze</title>
		<link>https://www.aymericlagier.com/2016/05/04/ascii-folding-dans-elasticsearch-et-appel-de-_analyze/</link>
		<comments>https://www.aymericlagier.com/2016/05/04/ascii-folding-dans-elasticsearch-et-appel-de-_analyze/#respond</comments>
		<pubDate>Wed, 04 May 2016 15:33:37 +0000</pubDate>
		<dc:creator><![CDATA[Aymeric]]></dc:creator>
				<category><![CDATA[Elasticsearch]]></category>
		<category><![CDATA[elasticsearch]]></category>

		<guid isPermaLink="false">https://www.aymericlagier.com/?p=2380</guid>
		<description><![CDATA[<p>Dans Elasticsearch, pour une faire une recherche sur un mot contenant un caractère unicode non présent dans la table ASCII (un accent par exemple) sans avoir à rechercher spécifiquement le mot avec ce caractère, une phase d'ASCII folding est nécessaire pour convertir ces caractères unicodes en leurs équivalents ASCII (si possible). Par exemple "ê" devient "e".</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/05/04/ascii-folding-dans-elasticsearch-et-appel-de-_analyze/">ASCII Folding dans Elasticsearch et appel de _analyze</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></description>
				<content:encoded><![CDATA[<p>Dans Elasticsearch, pour une faire une recherche sur un mot contenant un caractère unicode non présent dans la table ASCII (un accent par exemple) sans avoir à rechercher spécifiquement le mot avec ce caractère, une phase d&rsquo;ASCII folding est nécessaire pour convertir ces caractères unicodes en leurs équivalents ASCII (si possible). Par exemple « ê » devient « e ».</p>
<p>Pour réaliser cette étape, le mapping du champ contenant ces caractères doit spécifier le filtre « <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-asciifolding-tokenfilter.html" target="_blank">asciifolding</a> » fourni nativement par le moteur Elasticsearch.</p>
<p>Exemple de création d&rsquo;index avec déclaration de notre analyzer avec asciifolding :</p>
<pre>PUT /my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "filter":  [ "standard", "<span style="color: #ff0000;">asciifolding</span>" ]
        }
      }
    }
  }
}</pre>
<p>On créé ensuite le type en indiquant que notre champ utilisera notre nouvel analyzer :</p>
<pre>PUT /my_index/_mapping/fruit
{
  "properties": {
    "name": {
      "type": "string",
      "fields": {
        "asciifolding": {
          "type": "string",
          <span style="color: #ff0000;">"analyzer": "my_analyzer"</span>
        }
      }
    }
  }
}</pre>
<p>Enfin, on ajoute un document contenant une valeur accentuée dans le champ « name » :</p>
<pre>POST my_index/fruit 
{
  "name": "pêche"
}</pre>
<p>Les exemples de recherche suivants illustrent l&rsquo;utilité de notre analyzer.</p>
<table  class=" table table-hover" >
<tbody>
<tr>
<th>Requête</th>
<th>Réponses</th>
</tr>
<tr>
<td>
<pre>GET my_index/fruit/_search
{
  "query": {
    "match": {
      "<span style="color: #ff0000;">name</span>": "peche"
    }
  }
}</pre>
</td>
<td>
<pre>{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 0,
      "max_score": null,
      <span style="color: #ff0000;">"hits": []</span>
   }
}

</pre>
</td>
</tr>
<tr>
<td>
<pre>GET my_index/fruit/_search
{
  "query": {
    "match": {
      "<span style="color: #ff0000;">name.asciifolding</span>": "peche"
    }
  }
}

</pre>
</td>
<td>
<pre>{
   "took": 1,
   "timed_out": false,
   "_shards": {
      "total": 5,
      "successful": 5,
      "failed": 0
   },
   "hits": {
      "total": 1,
      "max_score": 1,
      <span style="color: #ff0000;">"hits": [
         {
            "_index": "my_index",
            "_type": "fruit",
            "_id": "AVR4VgBfRZI8D8Bc982h",
            "_score": 1,
            "_source": {
               "name": "pêche"
            }
         }
      ]</span>
   }
}

</pre>
</td>
</tr>
</tbody>
</table>
<p>A noter que si on est en présence de mots français, il est plus intéressant d&rsquo;utiliser l&rsquo;analyzer « french » fourni dans Elasticsearch qui procède aussi à cette étape d&rsquo;asciifolding mais ajoute également le stemming, les stopwords, etc. (<a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html">analyzers de langues</a>).</p>
<p>Pour tester un analyzer (ou un tokenizer ou un filtre), il est possible d&rsquo;appeler « <a href="https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-analyze.html">_analyze</a> » sur un index via une requête HTTP GET.</p>
<p>Par exemple :</p>
<pre>http://localhost:9200/my_index/_analyze?analyzer=my_analyzer&amp;text=pêche</pre>
<p>va renvoyer</p>
<pre>{
  "tokens": [
    {
      "token": "peche",
      "start_offset": 0,
      "end_offset": 5,
      "type": "&lt;ALPHANUM&gt;",
      "position": 1
    }
  ]
}</pre>
<p>Alors que</p>
<pre>http://localhost:9200/my_index/_analyze?analyzer=standard&amp;text=pêche</pre>
<p>va renvoyer</p>
<pre>{
  "tokens": [
    {
      "token": "pêche",
      "start_offset": 0,
      "end_offset": 5,
      "type": "&lt;ALPHANUM&gt;",
      "position": 1
    }
  ]
}</pre>
<p>Attention, n&rsquo;exécutez pas la requête « _analyze » dans Sense. L&rsquo;encodage ne sera pas correct lors de la requête et la réponse sera fausse.</p>
<pre>Requête :

GET /my_index/_analyze?analyzer=my_analyzer&amp;text=pêche

Réponse :
{
   "tokens": [
      {
         "token": "p",
         "start_offset": 0,
         "end_offset": 1,
         "type": "&lt;ALPHANUM&gt;",
         "position": 1
      },
      {
         "token": "che",
         "start_offset": 2,
         "end_offset": 5,
         "type": "&lt;ALPHANUM&gt;",
         "position": 2
      }
   ]
</pre>
<p>&nbsp;</p>
<p>Cet article <a rel="nofollow" href="https://www.aymericlagier.com/2016/05/04/ascii-folding-dans-elasticsearch-et-appel-de-_analyze/">ASCII Folding dans Elasticsearch et appel de _analyze</a> est apparu en premier sur <a rel="nofollow" href="https://www.aymericlagier.com">Blog de Aymeric Lagier</a>.</p>
]]></content:encoded>
			<wfw:commentRss>https://www.aymericlagier.com/2016/05/04/ascii-folding-dans-elasticsearch-et-appel-de-_analyze/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
