2021-06-22

Säker PLC?

Kan säkerheten påverkas av hur vi programmerar våra styrsystem? Kan det till och med leda till stabilare funktion? Svaret är ett rungande "Ja" på båda frågorna. Nu finns det en sprillans ny topplista med 20 goda råd för dig som programmerar PLC:er!

Mats Karlsson Landré
Mats Karlsson Landré Säkerhetsrådgivare

Jag har teasat om det här ögonblicket tidigare i mitt nyhetsbrev kring OT-säkerhet och nu är det här! Den 15:e juni släpptes det första skarpa resultatet från projektet "The Top 20 Secure PLC Coding Practices Project". Det här får väl sägas vara ett unikt, viktigt och roligt projekt som tydligen uppstod i samband med S4-konferensen förra året. Det har varit en rejäl gruppinsats som Sarah Fluchs var en av ledarna för. Jag rekommenderar att du läser hennes egna ord för att verkligen förstå bakgrunden och storheten i detta projekt!

OT-säkerhet på riktigt!

Det här är verkligen ett OT-säkerhetsprojekt ända ut i fingerspetsarna. De har skapat en samling goda idéer för hur man programmerar sina PLCer med målet att höja säkerhet och tillförlitlighet ur en massa olika perspektiv. Det allmänna tänket är faktiskt lite likt CIS Controls på IT-sidan även om innehåll och fokus är helt annorlunda. Syftet ligger väl egentligen närmare OWASPs rekommendationer för säker programmering.

Hur menar du?

Missförstå nu inte det här som att PLCn plötsligt ska kunna försvara sig mot en hacker! Nej, det handlar i första hand om att låta PLCn gör lite mer av det den redan är bra på, att hålla koll på att saker beter sig rätt och att vara väldigt stabil. Man kan väl grovt summera de tjugo punkterna i tre kategorier:

Validera att det som händer i den fysiska processen faktiskt borde kunna hända och att information som hanteras är korrekt. Tar rörelser rätt tid? I vilket tillstånd ska vi sätta processen efter en omstart? Är de indata vi får fysiskt möjliga? Är de inställningar som operatören gör rimliga? Här är det väldigt likt vad OWASP gör för säker IT-programmering.

Hur man skriver PLC-kod: modularisering, hantering av registerblock men också att faktiskt använda PLCn för all hantering istället för att som man ser ibland, låta MES-system eller liknande ta över delar av den fysiska hanteringen.

Härdning och robusthet: Kontroll av checksummor, blockering av oanvända ingångar och protokoll eller att begränsa åtkomst till funktioner från andra system.

Men sedan finns det faktiskt en del möjligheter till självförsvar också. En del moderna PLCer kan exempelvis hålla koll på sin egen minnesanvändning eller på cykeltiderna för programmen. Eftersom de tenderar att vara väldigt stabila över tid så kan det vara värt att larma om de plötsligt förändras, eftersom det skulle vara ett tydligt tecken på att någon förändrat någonting.

Går det att förstå?

Dokumentet är föredömligt lättläst och kortfattat. Det är i egentligen en lista rätt och upp ner där var och en av de tjugo rekommendationerna på en till fyra sidor var. För var och en beskrivs:Själva rekommendationen

Vad syftet med den är 

Vem den vänder sig till 

Väldigt jordnära vägledning 

Exempel på hur den kan implementeras i PLCer från olika tillverkare 

Argument för varför detta är en god idé för säkerhet, pålitlighet och underhåll 

Referenser till MITRE ATT&CK for ICS och ISA 62443.

Vad händer nu?

Peka dina kollegor som hanterar PLCer i vardagen till den här bloggen och till projektet. De kanske inte ser sig som programmerare men det är de faktiskt. Vivek Ponnada skrev en bra artikel om just det: https://www.linkedin.com/pulse/what-has-ladder-logic-got-do-cwe-vivek-ponnada/. Du hittar projektet på deras sprillans nya sida: https://www.plc-security.com/ . Vill du läsa vad andra skriver om projektet finns en bra artikel av Kelly Jackson Higgins på DarkReading.

Det här är ett projekt som kommer påverka hur PLC-tillverkarna beter sig framöver. Vi kan nog räkna med att de kommer göra allt för att underlätta användningen av de tjugo åtgärderna.

Tydligen diskuterar man med gruppen som driver "MITRE CWE" om att samarbeta mer framåt vilket ju skulle kunna vara både smart och spännande. Det finns ju en del uppenbara beröringspunkter. I dokumentet hittar du apropå det även en bra korsreferenslista till ISA 62443, MITRE ATT&CK och till CWE som kan vara värdefull.

Vem är Mats Karlsson Landré?

Mats Karlsson-Landré

Jag är till vardags säkerhetsrådgivare på Atea i Västerås. Det innebär att jag stöttar våra kunder kring alla former av säkerhetsutmaningar, exempelvis informationssäkerhet, IT-säkerhet, OT-säkerhet, fysiskt skydd, säkerhetsskydd och personalsäkerhet. 

Området OT-säkerhet har ett speciellt fokus där jag också ger ut ett nyhetsbrev på www.ot-säkerhet.se. OT står för Operational Technology vilket är ett syskon till IT, Information Technology. Med IT använder man teknik för att hantera information. Inom OT använder man liknande teknik men för "Operations", alltså att få fysiska saker under kontroll. Det kan exempelvis vara att styra maskiner i en fabrik, elproduktionen i ett kraftverk eller kemiska processer i ett raffinaderi. Inom IT är fokus ofta på att skydda hemligheter men inom OT blir det oftast viktigast att hålla en funktion tillgänglig och korrekt. Det innebär att säkerhetsarbetet behöver se väldigt annorlunda ut.

Du är välkommen att kontakta mig på mats.karlsson-landre@atea.se.

Mer läsning?

Den här artikeln är ett utdrag från mina nyhetsbrev kring OT-säkerhet som du hittar här.