<?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>PLC - RiskInsight</title>
	<atom:link href="https://www.riskinsight-wavestone.com/tag/plc/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.riskinsight-wavestone.com/tag/plc/</link>
	<description>Le blog cybersécurité des consultants Wavestone</description>
	<lastBuildDate>Mon, 07 Nov 2022 10:13:15 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://www.riskinsight-wavestone.com/wp-content/uploads/2024/02/Blogs-2024_RI-39x39.png</url>
	<title>PLC - RiskInsight</title>
	<link>https://www.riskinsight-wavestone.com/tag/plc/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Top 20 Secure PLC Coding Practices</title>
		<link>https://www.riskinsight-wavestone.com/2022/11/top-20-secure-plc-coding-practices/</link>
					<comments>https://www.riskinsight-wavestone.com/2022/11/top-20-secure-plc-coding-practices/#respond</comments>
		
		<dc:creator><![CDATA[Arnaud Soullié]]></dc:creator>
		<pubDate>Mon, 07 Nov 2022 16:00:00 +0000</pubDate>
				<category><![CDATA[Eclairage]]></category>
		<category><![CDATA[Manufacturing & Industry 4.0]]></category>
		<category><![CDATA[code]]></category>
		<category><![CDATA[PLC]]></category>
		<guid isPermaLink="false">https://www.riskinsight-wavestone.com/?p=18952</guid>

					<description><![CDATA[<p>Si vous travaillez dans la cybersécurité, vous avez probablement entendu parler de l’OWASP TOP 10: un document de sensibilisation à la sécurité des applications web qui présente les 10 familles de vulnérabilités les plus fréquentes. Cependant, dans le domaine des...</p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2022/11/top-20-secure-plc-coding-practices/">Top 20 Secure PLC Coding Practices</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p style="text-align: justify;">Si vous travaillez dans la cybersécurité, vous avez probablement entendu parler de l’<a href="https://owasp.org/Top10/">OWASP TOP 10</a>: un document de sensibilisation à la sécurité des applications web qui présente les 10 familles de vulnérabilités les plus fréquentes.</p>
<p style="text-align: justify;">Cependant, dans le domaine des SI industriels, on ne parle quasiment jamais de la sécurité du code automate qui contrôle le procédé industriel. Pourquoi ?</p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;">Genèse du projet</h1>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Le projet a débuté avec la présentation de <a href="https://www.youtube.com/watch?v=JtsyyTfSP1I">Jake Browdsky lors de la conférence S4</a> en 2019 </p>
<p style="text-align: justify;">Dans cette conférence, le concept de sécurisation du processus industriel par l&rsquo;application de pratiques de programmation sécurisée dans le code de l&rsquo;automate est discuté et plusieurs exemples sont mentionnés.</p>
<p style="text-align: justify;">Cette idée a ensuite été transformée en un projet collaboratif par Sarah Fluchs et Vivek Ponnada, auquel plus de 900 personnes ont contribué avec leurs idées !</p>
<p style="text-align: justify;"><a href="https://www.youtube.com/watch?v=JtsyyTfSP1I"><img fetchpriority="high" decoding="async" class="aligncenter wp-image-18967 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image6.png" alt="" width="703" height="395" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image6.png 703w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image6-340x191.png 340w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image6-69x39.png 69w" sizes="(max-width: 703px) 100vw, 703px" /></a></p>
<h1 style="text-align: justify;"> </h1>
<h1 style="text-align: justify;">Automates Programmables Industriels</h1>
<p style="text-align: justify;">Les automates programmables industriels (<em>Programmable Logic Controller</em> en anglais) sont situés au cœur de l&rsquo;automatisation, au niveau 1 du modèle de Purdue.</p>
<p style="text-align: center;"><img decoding="async" class="aligncenter wp-image-18957 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image1.png" alt="" width="624" height="351" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image1.png 624w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image1-340x191.png 340w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image1-69x39.png 69w" sizes="(max-width: 624px) 100vw, 624px" /><em>Représentation ISA du modèle de Purdue</em></p>
<p style="text-align: center;"><a href="https://dale-peterson.com/2019/02/11/is-the-purdue-model-dead/https:/dale-peterson.com/2019/02/11/is-the-purdue-model-dead/">Le modèle de Purdue est-il mort ? &#8211; Dale Peterson : ICS Security Catalyst (dale-peterson.com)</a></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">Les automates programmables sont des ordinateurs embarqués avec un système temps-réel qui interagissent directement avec les capteurs et les actionneurs pour surveiller et contrôler une partie du processus industriel.</p>
<p style="text-align: justify;">Ils exécutent une boucle infinie, composée de 4 étapes :</p>
<p style="text-align: justify;"><img decoding="async" class="aligncenter wp-image-18959 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image2.png" alt="" width="458" height="323" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image2.png 458w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image2-271x191.png 271w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image2-55x39.png 55w" sizes="(max-width: 458px) 100vw, 458px" /></p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;">La « logique », ou code de l&rsquo;automate, peut être écrite dans différents langages, tels que définis dans la norme CEI 61131-3 :</p>
<ul style="text-align: justify;">
<li>Ladder Diagram</li>
<li>Function Block Diagram</li>
<li>Structured Text</li>
<li>Instruction List [désormais obsolète]</li>
<li>Sequential Function Chart</li>
</ul>
<h1> </h1>
<h1 style="text-align: justify;">Le document TOP20</h1>
<p> </p>
<p style="text-align: justify;">Le document TOP20 est le résultat des échanges en ligne visant à identifier les 20 pratiques de programmation les plus importantes et peut être téléchargé sur le <a href="https://plc-security.com/">site du projet</a>.</p>
<p style="text-align: justify;">Comme le TOP10 de l&rsquo;OWASP, il ne vise pas à décrire toutes les pratiques de programmation sécurisée possibles, du moins pour le moment.</p>
<p style="text-align: justify;">Chacune des pratiques du TOP20 est détaillée avec les mêmes informations :</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18961 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image3.png" alt="" width="975" height="498" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image3.png 975w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image3-374x191.png 374w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image3-71x36.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image3-768x392.png 768w" sizes="auto, (max-width: 975px) 100vw, 975px" /></p>
<p> </p>
<p style="text-align: justify;">Les 20 pratiques peuvent être organisées en trois catégories principales :</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18963 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image4.png" alt="" width="624" height="323" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image4.png 624w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image4-369x191.png 369w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image4-71x37.png 71w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p style="text-align: justify;"> </p>
<h1> </h1>
<h1 style="text-align: justify;">Quelques exemples</h1>
<p> </p>
<p style="text-align: justify;">Voyons un exemple de chaque catégorie. Pour cela, nous utiliserons un automate d&rsquo;entrée de gamme de notre laboratoire, un feu de signalisation ainsi qu&rsquo;une supervision SCADA.</p>
<p style="text-align: justify;">Malheureusement, chaque fournisseur d&rsquo;automates &#8211; et même chaque famille d&rsquo;automates &#8211; utilise son propre logiciel de programmation ; les exemples présentés ici ne peuvent donc pas être copiés-collés dans le code d&rsquo;une autre marque d&rsquo;automates et nécessiteront une implémentation différente.</p>
<p style="text-align: justify;">Le code de l&rsquo;automate ainsi que le projet SCADA utilisé pour la démonstration peuvent être téléchargés depuis notre <a href="https://github.com/wavestone-cdt/plc-code-security">page github</a>.</p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Règle n°13 : Désactiver les ports et protocoles de communication inutiles / inutilisés</h2>
<p style="text-align: justify;">Cette pratique consiste à durcir l&rsquo;automate. La plupart des automates d&rsquo;aujourd&rsquo;hui offrent un support pour plusieurs protocoles industriels, ainsi qu&rsquo;une variété de services supplémentaires comme un serveur de fichier FTP, un serveur web et bien d&rsquo;autres.</p>
<p style="text-align: justify;">Désactiver les services non utilisés et renforcer la sécurité de ceux qui sont activés (changer les identifiants par défaut, etc.) est une étape nécessaire pour réduire la surface d&rsquo;attaque et, par conséquent, limiter le nombre de correctifs de sécurité à appliquer à l&rsquo;avenir (moins il y a de fonctionnalités activées, plus les vulnérabilités sont pertinentes, facilitant l’effort pour les corriger).</p>
<p style="text-align: justify;"><em>Jetons un coup d&rsquo;œil à la vidéo :</em></p>
<p style="text-align: justify;"><a href="https://youtu.be/uFhJaOEXh5w"><img loading="lazy" decoding="async" class="aligncenter wp-image-18972 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-093944.png" alt="" width="1279" height="724" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-093944.png 1279w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-093944-337x191.png 337w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-093944-69x39.png 69w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-093944-768x435.png 768w" sizes="auto, (max-width: 1279px) 100vw, 1279px" /></a></p>
<h2> </h2>
<h2 style="text-align: justify;">Règles n°6 et n°8 : Vérification des entrées au niveau de l&rsquo;automate.</h2>
<p style="text-align: justify;">Ces deux règles peuvent être démontrées dans le même exemple car elles suivent le même principe : ne pas faire aveuglément confiance aux entrées externes ! Pour quelqu&rsquo;un comme moi qui a fait sa part de test d’intrusion d&rsquo;applications web, je ne pourrais être plus d&rsquo;accord !</p>
<p style="text-align: justify;">Les plages valides pour les valeurs d&rsquo;entrée sont souvent mises en œuvre au niveau SCADA, laissant la possibilité à un attaquant d&rsquo;écrire directement une valeur hors plage dans le bon registre de l&rsquo;automate.</p>
<p style="text-align: justify;">Cela est particulièrement vrai pour les compteurs et les chronomètres, qui doivent être vérifiés pour s&rsquo;assurer qu&rsquo;ils sont supérieurs ou égaux à zéro, et que la valeur est inférieure à une limite supérieure qui a du sens pour le processus.</p>
<p style="text-align: justify;"><em>Jetons un coup d&rsquo;œil à la vidéo :</em></p>
<p style="text-align: justify;"><a href="https://youtu.be/Rut6evMsvXA"><img loading="lazy" decoding="async" class="aligncenter wp-image-18974 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045.png" alt="" width="1285" height="715" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045.png 1285w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045-343x191.png 343w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045-71x39.png 71w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045-768x427.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094045-1170x650.png 1170w" sizes="auto, (max-width: 1285px) 100vw, 1285px" /></a></p>
<p style="text-align: justify;"> </p>
<h2 style="text-align: justify;">Surveillance de l&rsquo;automate programmable règles n°2 et n°5</h2>
<p style="text-align: justify;">Nous pouvons exploiter les données opérationnelles de l&rsquo;automate pour essayer de détecter des situations anormales qui pourraient être des incidents de cybersécurité.</p>
<h3 style="text-align: justify;">État de l&rsquo;automate</h3>
<p style="text-align: justify;">S&rsquo;assurer que l&rsquo;automate est en mode « RUN » est essentiel pour la sûreté et la sécurité des opérations. Un automate à l&rsquo;arrêt pourrait empêcher l&rsquo;IHM SCADA d&rsquo;afficher les bonnes informations à l&rsquo;opérateur, ce qui entraînerait de mauvaises décisions.</p>
<p style="text-align: justify;">De même, des fonctions telles que le « forçage » des entrées et des sorties peuvent empêcher l&rsquo;IHM SCADA d&rsquo;afficher l&rsquo;état réel du processus, et doivent être détectées et clairement affichées à l&rsquo;opérateur.</p>
<p style="text-align: justify;"><em>Jetons un coup d&rsquo;œil à la vidéo :</em></p>
<p style="text-align: justify;"><a href="https://youtu.be/_Ta35tFAWyY"><img loading="lazy" decoding="async" class="aligncenter wp-image-18976 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122.png" alt="" width="1278" height="721" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122.png 1278w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122-339x191.png 339w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122-69x39.png 69w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122-768x433.png 768w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094122-800x450.png 800w" sizes="auto, (max-width: 1278px) 100vw, 1278px" /></a></p>
<p style="text-align: justify;">Cette technique peut également être utilisée pour détecter les automates en mode « PROGRAM », ce qui permet de programmer l&rsquo;automate à distance.</p>
<p> </p>
<h3 style="text-align: justify;">Firmware de l&rsquo;automate et version du code</h3>
<p style="text-align: justify;">Ne serait-il pas formidable de pouvoir interroger la version du firmware de votre automate directement à partir d&rsquo;un registre Modbus ? Eh bien, c&rsquo;est possible !</p>
<p style="text-align: justify;">En outre, sur notre automate, nous pouvons également obtenir une somme de contrôle du code de l&rsquo;automate, ce qui signifie que nous pouvons détecter si quelqu&rsquo;un a altéré le code de l&rsquo;automate, déclencher une alarme et enquêter si nous ne pouvons pas faire correspondre cela à une entrée dans le registre de gestion des modifications.</p>
<p style="text-align: justify;"><em>Jetons un coup d&rsquo;œil à la vidéo :</em></p>
<p style="text-align: justify;"><a href="https://youtu.be/E9Ml2kVWgDM"><img loading="lazy" decoding="async" class="aligncenter wp-image-18978 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094352.png" alt="" width="663" height="630" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094352.png 663w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094352-201x191.png 201w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Screenshot-2022-11-07-094352-41x39.png 41w" sizes="auto, (max-width: 663px) 100vw, 663px" /></a></p>
<p style="text-align: justify;"> </p>
<h1 style="text-align: justify;"> </h1>
<h1 style="text-align: justify;">Alors, que pouvez-vous faire ?</h1>
<p style="text-align: justify;">Le document sur le top 20 est facilement disponible, mais comment l&rsquo;utiliser ?</p>
<p style="text-align: justify;"><img loading="lazy" decoding="async" class="aligncenter wp-image-18965 size-full" src="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image5.png" alt="" width="624" height="325" srcset="https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image5.png 624w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image5-367x191.png 367w, https://www.riskinsight-wavestone.com/wp-content/uploads/2022/11/Image5-71x37.png 71w" sizes="auto, (max-width: 624px) 100vw, 624px" /></p>
<p style="text-align: justify;">Si vous souhaitez en savoir plus sur la sécurité du code automate, vous pouvez également consulter le contenu que nous avons présenté lors de nos ateliers à <a href="https://github.com/wavestone-cdt/plc-code-security/tree/main/dc30">DEFCON</a> et <a href="https://github.com/wavestone-cdt/plc-code-security/tree/main/brucon0x0E">BruCON</a> sur notre page <a href="https://github.com/wavestone-cdt/plc-code-security">Github</a>.</p>
<p style="text-align: justify;"> </p>
<p style="text-align: justify;"> </p>
<p>Cet article <a href="https://www.riskinsight-wavestone.com/2022/11/top-20-secure-plc-coding-practices/">Top 20 Secure PLC Coding Practices</a> est apparu en premier sur <a href="https://www.riskinsight-wavestone.com">RiskInsight</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.riskinsight-wavestone.com/2022/11/top-20-secure-plc-coding-practices/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
