2018-01-12 09:16

Information och analys av Meltdown och Spectre-sårbarheterna

 

Introduktion
Denna långa text beskriver nya allvarliga sårbarheter i majoriteten av de datorsystem som används globalt. Såväl bakgrunden och konsekvenserna beskrivs, men också konsekvensen av att inte göra något.
Texten innehåller även ett avsnitt om hur detta påverkar ICS/SCADA-system och -miljöer. Något som har diskuterats väldigt litet i den offentliga diskussionen hittills.
Texten har löpande referenser till mer material och information om säkerhetsproblemen. I slutet av texten finns även sammanställning av referenser och vidare information.

Sammanfattning
Nya allvarliga sårbarheter har hittats i CPU-designen hos i princip alla moderna CPUer. Sårbarheten rapporterades först 1 juni 2017 och efter ett halvårs arbete i det tysta så har olika motåtgärder tagits fram, främst i form av olika programändringar i operativsystem eller känsliga applikationer (exempelvis webbläsare). Information om sårbarheterna och olika säkerhetsfixar släpptes kort efter årsskiftet 2017/2018.
Graden av allvarlighet hos problemet är såpass hög att den måste åtgärdas. De lösningar som finns problemet idag har alla olika typer av bieffekter, vissa har bieffekter med prestanda andra har bieffekter med möjliga programfel. Detta försätter alla som nyttjar IT i ett dilemma. Särskilt om man använder automation och IT inom ICS/SCADA. 

Det är viktigt att åtgärda felen, det är dock också viktigt att göra avvägningen när åtgärderna är lämpliga att införa, inte minst med tanke på att det finns ett antal program som är inkompatibla med de uppdateringar som finns ute. Alla system- och/eller anläggningsägare måste göra riskbedömningar tillsammans med sina leverantörer, integratörer och processautomationspecialister om hur snabbt dessa rättningar kan införas. 

Bakgrund
Kort in i januari 2018 så släpptes information om två nya sårbarheter kallade Meltdown och Spectre, den senare finns i två varianter, därför kan man prata om tre attacktyper. Dessa sårbarheter skiljer sig från de vi vanligen läser om i media och på nätet i det att de är lågnivå, hårdvarubaserade sårbarheter, sårbarheter i designen av själva CPU-komponenten i datorsystemet. Problemen finns hos alla de stora CPU-arkitekturerna från Intel, AMD och ARM (som används flitigt på mobila enheter). 

Sårbarheten hittades i mitten av 2017 av olika säkerhetsforskare och meddelades då till Intel m.fl. vilka i tysthet har arbetat med att ta fram olika skydd. Arbetet med att ta fram skydd och fixar har också bedrivits hos alla de stora operativsystemsleverantörerna. Information om sårbarheten har varit under embargo för att det skall kunna ske ett koordinerat släpp av fixar för flera av de viktigaste operativsystemet samtidigt. Datumet för frisläppandet från embargo var satt till 8:e januari. Av olika anledningar, främst på grund av att spekulationer att nya sårbarheter i det tysta hade hittats och att dessa spekulationer började komma närmare sanningen, så släpptes information om Meltdown och Spetre tidigare än originaldatumet. 

Sårbarheterna beror i korthet på något som kallas för "bransch prediction" och mer specifikt en variant som heter "speculative bransch prediction" är en metod för att snabba upp de köer av instruktioner som en CPU bearbetar.  Med denna metod så testkörs olika instruktioner, även sådana som kanske inte kommer att behövas i ett senare skede. Denna spekulativa exekvering kan leda till att CPUn skapar åtkomst till vissa minnesadresser, vars innehåll i ett specifikt skede kan kommas åt med hjälp av dessa sårbarheter. Normalt sett så skulle dessa minnesåtkomster inte vara möjliga för någon att obehörigen se, men fel i design gör att ett skadligt program med vissa tekniker ändå kan läsa minnesinnehåll.

Tekniken som används och som är sårbar finns i användning hos CPUer tillverkade under lång tid, i princip ända tillbaka till 1995 med några få undantag. Så med största sannolikhet så finns system med denna typ av sårbarhet hos de flesta organisationer och hos de flesta privatpersoner.

Trots att sårbarheterna finns på låg nivå i CPU-designen kan de missbrukas från applikationer eller skriptspråk såsom Javascript. Detta möjliggör att utföra attacker via exempelvis webbläsare som exekverar skadligt Javascript.

Meltdown och Spectre har tilldelats CVE-etiketter för att kunna lättare identifiera sårbarheterna med ett unikt sårbarhetsidentifierare. Meltdown är CVE-2017-5754 och Spectre är två sårbarheter som fått CVE-nummer CVE-2017-5753 och CVE-2017-5715. 

De stora molnleverantörerna Microsoft med Azure, Amazon med AWS och Google har rullat ut patchar i sina miljöer samt även tvingats till olika nivåer av driftstörningar genom att starta om sina miljöer, vilket går emot själva grundtanken med moln. 

Allt detta rörande dessa låg-nivå hårdvarusårbarheter kan kännas abstrakt och väldigt svårt att genomföra i realiteten. Därför kan det vara bra att se några filmer som i praktiken demonstrerar hur några av dessa attacker kan utföras. 

* Enkel video som beskriver problemet: https://www.youtube.com/watch?v=syAdX44pokE
* Enkel demo som dumpar ut datorns minne: https://youtu.be/bReA1dvGJ6Y
* Enkel demo som stjäl ett inmatat lösenord: MailScanner has detected definite fraud in the website at "youtu.be". Do not trust this website: https://youtu.be/RbHbFkh6eeE

Det finns till och med serie-strippar som beskriver Meltdown & Spectre på ett humoristiskt vis: https://m.xkcd.com/1938/

Det finns en webbplats som personerna bakom upptäckten av attackerna har skapad där det finns en mängd information om vad sårbarheten består i, vart den finns, vad man kan göra genom att nyttja sårbarheten, med mera. Besök https://meltdownattack.com/  för mer information. På webbplatsen finns dessutom en FAQ (svar på vanligt förekommande frågor) som är väldigt informativ, se https://meltdownattack.com/#faq

Tekniska beskrivningar över attackerna kan man hitta på https://meltdownattack.com/meltdown.pdf  och på https://spectreattack.com/spectre.pdf

En tabell med länkar till olika tillverkares säkerhetsvarningar finns postad här: https://meltdownattack.com/#faq-advisory

Konsekvenser av att inte lägga in uppdateringarna
I huvudsak leder sårbarheterna till att det obehörigen går att komma åt information i datorns primärminne. Mer andra ord betyder det att en av de grundläggande säkerhetsbarriärerna och principerna i moderna datorsystem har eroderat bort, så att ett körande program kan komma åt minne utanför sitt eget exekveringsutrymme. Mer detaljerat betyder det att meltdown-attacken kan användas för att läsa ut minnesinnehåll ifrån operativsystemet (separation mellan applikationer och kernel) medans spectre-attacken kan användas för att läsa ut minnesutrymme från andra körande processer (separation mellan processer), processer som kanske exekveras av en annan användare/ägare och som har andra rättigheter i systemet.

En sak som vi redan idag vet är att det finns flera exempel på så kallad PoC, proof-of-concept-kod, skriven som nyttjar sårbarheterna och att denna kod har distribuerats på olika sätt via Internet eller gjorts allmänt tillgänglig.

Förenklat kan man exemplifiera det som kan läsas ut ur minne såsom:

 * Användarnamn och lösenord
 * Krypteringsnycklar
 * Klartextinformation innan det krypterats, eller efter det att det dekrypterats
 * Känslig applikationsdata

I realiteten är det allt som finns i minnet. Och det kan vara svårt att på förhand göra bedömning om en bild, en text eller fil som finns någonstans i minnet kommer att bedömas vara känslig.

Sammantaget kan man säga att alla andra säkerhetsfunktioner i systemet blir verkningslösa i den sekund det går att exekvera kod på systemet (via ",exe"-filer, javaskript, pythonprogram, powershell, mm). Ur det perspektivet är sårbarheten väldigt allvarlig och bör därför åtgärdas. 

Konsekvenser av att lägga in uppdateringarna
Att installera programuppdateringarna kan leda till inga eller flera olika typer av bieffekter eller konsekvenser:

* Prestandaförsämringar
* Möjliga bieffekter på annan programvara i systemet
* Antivirusprogram slutar att fungera
* Windowsuppdateringar slutar att installeras om inte AV uppdaterats
* Krascher

Det är känt att uppdateringarna som skickats ut från operativsystemtillverkare i vissa fall har antingen biverkningar eller ändrar funktionalitet hos vissa applikationer och systemprogram. Det har exempelvis rapporterats om att Ubuntu Linux-system har slutat fungera med de nya patcharna. Det har i andra fall rapporterats om att mjukvaru-RAID slutat att fungera med patcharna, med mera. Exempelvis har det visat sig att patcharna för Windows som Microsoft har släppt har varit inkompatibla med vissa antivirusprogram, varpå dessa slutat fungera. Därför har Microsoft gjort beslutet att inte ändringarna som patcharna medförs automatiskt aktiveras när patchen försöks läggs på, utan ett visst Windows registervärde måste vara satt för att patchen skall gå in ordentligt. Denna flagga sätts av en uppdaterad version av det installerade antivirusprogrammet, vilket är tänkt att det är så det skall fungera så att man kan flagga att en version av AV-programmet nu är kompatibelt med patchen. Ett alternativ är att sätta flaggan manuellt.

Meltdown och Spectre i ett ICS/SCADA-perspektiv
Flera tillverkare, exempelvis Schneider-Electric, ABB och Siemens, har gått ut med varningar till sina kunder om sårbarheterna. En generell observation om dessa varningsbrev är att de dock väldigt vaga i hur de säger att kunderna skall agera, eller vilka motmedel och skydd som skall appliceras. En liknande observation är att de återigen trycker på försvar i djupled eller separation av ICS/SCADA-nät från övrig infrastruktur.

En tredje observation rörande Meltdown och Spectre-händelsen är att de få leverantörer som har uttalat sig i frågan ofta även säger "utredning pågår fortfarande", "Under Investigation". Detta kan gälla den mer allmänna frågan "finns sårbarheten hos leverantören?" till mer specifika frågor såsom "vilka produkter eller versioner är sårbara?". Denna tredje punkt är viktig då de dels inte har ett färdigt svar, dels att man förstår att de inte heller haft tillgång till den information om sårbarheterna som släppts under embargo. Just det sistnämnda är viktigt att förstå ur ett riskperspektiv, att ICS/SCADA-leverantörer nyttjar standardlösningar men att det med största sannolikhet är så att ICS/SCADA-leverantörer inte snabbt får tillgång till viktig information under känsliga tidpunkter.

Ett annat problem som berör ICS/SCADA är att det finns en hel del produkter som bygger på andra operativsystem än de som främst avhandlats i Meltdown/Spectre-sammanhang (Windows, Linux, MacOSX, Android, iOS), vilket är olika typer av realtidsoperativsystem såsom QNX, LynxOS, mfl. Det finns idag ingen eller ytterst knapphändig information från dessa leverantörer hur de arbetat med, eller arbetar med, hur de skall mitigera dessa problem. Just dessa realtidsoperativstystem kommer att få extra svårt att hantera situationen, då de fixar som används i de traditionella operativsystemen inte är direkt kompatibla med realtidsegenskaper.

Ett vanligt problem i ICS/SCADA-miljöer är att man ofta har äldre versioner av programvaror, operativsystem mm installerade och som används. I en del av de fallen så kommer det inte finnas möjligheter till att få programuppdateringar från leverantören, då dessa inte längre underhåller de äldre versionerna av programvarorna. Ett problem av den här typen kan leda till att ompröva om man inte skall uppdatera programvarorna, eller hela plattformen till en senare version som det är möjligt att programvarumässigt är möjligt att underhålla.

Det finns kända problem med vissa produkter och de rättningar och uppdateringar som släppts från operativsystemleveratörerna. Exempelvis så har Schneider Electrics gått ut och varnat om att flera versioner av det vanligt förekommande verktyget Wonderware har vissa problem. Om man använder några delar av Wonderware skall man alltså i dagsläget avvakta med uppdateringar. Tyvärr är inte Schneiders information publikt tillgänglig.

Eftersom prestanda påverkas så kan patchning påverka applikationer och system på ett sådant sätt att realtidsfunktioner drabbas. Det är viktigt att förstå hur ens system används innan programuppdateringar görs eftersom prestandan drabbas av patchningen.

Våra rekommendationer till läsare av energisäkerhetsportalen är:

1) Gå igenom inventarie- och anläggningsregister för att identifiera vilka komponenter som kan tänkas beröras. Uppdatera registret om det behövs. Om inget register finns, eller om den inte innehåller denna typ av information (hårdvara, mjukvara, versioner av dessa), så kan denna händelse vara ett startskott för att se till att register faktiskt har denna information.

2) kontakta din systemleverantör och inled en dialog med dom om hur problemet skall hanteras för just din miljö i din anläggning.

3) Var inte nöjd med ett allmänt svar som hänvisar till publicerade säkerhetsbulletiner på Internet som inte ger konkreta svar.

4) Utvärdera vilka olika mitigeringssteg som finns vid sidan av programuppdateringar, exempelvis förändringar i process- och rutinbeskrivningar för hur systemen används eller får beredas åtkomst till.

5) Se över hur test- och verifiering av uppdateringar av programvara i miljön skall kunna ske. Har ni egna testmiljöer? Eller har leverantören miljöer i vilka de kan återskapa er specifika uppsättning?

6) Testa i testmiljö att dessa mitigeringar verkligen aktiverats (se särdkilld text om detta) och är fungerande.

7) Genomför olika typer av mitigeringar.

8) Verifiera att alla ändringar fungerar och att systemet i sin helhet fungerar korrekt

Många har ju i sin ICS/SCADA-miljö, eller i direkt anslutning till den såsom i DMZ-miljöer, hoppservrar eller integrationslösningar, vanliga IT-system eller IT-produkter som behöver uppdateras. Till denna kategori räknar vi sådant som VMWare eller Citrix. Det är viktigt att även dessa inkluderas i uppdateringar och uppsäkringar för dessa attacker. Se information från dessa leverantörer om uppdateringsmöjligheter.

NCCIC (f.d. ICS-CERT) har gått ut med en skrivelse kallad "recommended practise: updating antivirus in an industrial control system", daterad 2018-01, som är relevant i sammanhanget. Den hittar du här https://ics-cert.us-cert.gov/sites/default/files/recommended_practices/RP_Updating_Antivirus_in_an_ICS_S508C.pdf

En kort sammanställning i form av en alert har kommit ut ifrån NCCIC/ICS-CERT som beskriver sårbarheterna och vissa vanliga ICS/SCADA-produkter. Mer information hittar man här: https://ics-cert.us-cert.gov/alerts/ICS-ALERT-18-011-01

Andra tips
Uppdatera de riskregister och hotkataloger som finns för organisationen, så att de även inkluderar sårbarheter i hårdvara.
Om man använder sig av webbläsaren Chrome, så kan man för att skydda sig mot spectre aktivera så kallad "site isolation". För mer information, se denna webbsida: http://www.chromium.org/Home/chromium-security/site-isolation

Referenser och vidare läsning

FAQ:
https://meltdownattack.com/#faq

Allmänt:
https://meltdownattack.com/
https://googleprojectzero.blogspot.se/2018/01/reading-privileged-memory-with-side.html
https://security-center.intel.com/advisory.aspx?intelid=INTEL-SA-00088&languageid=en-fr
https://danielmiessler.com/blog/simple-explanation-difference-meltdown-spectre/
https://www.schneier.com/blog/archives/2018/01/spectre_and_mel_1.html
https://www.enisa.europa.eu/publications/info-notes/meltdown-and-spectre-critical-processor-vulnerabilities
https://labsblog.f-secure.com/2018/01/09/some-notes-on-meltdown-and-spectre/
https://arstechnica.com/gadgets/2018/01/meltdown-and-spectre-heres-what-intel-apple-microsoft-others-are-doing-about-it/
https://www.theregister.co.uk/2018/01/05/spectre_flaws_explained/

Historien bakom upptäckten:
https://www.wired.com/story/meltdown-spectre-bug-collision-intel-chip-flaw-discovery/
Meddelandet som Google Project Zero skickade ut med varningar om den nya sårbarheterna. Daterat 1 juni 2017:
https://bugs.chromium.org/p/project-zero/issues/detail?id=1272
https://bugs.chromium.org/p/project-zero/issues/attachmentText?aid=287305

Info om leverantörer och deras uppdateringar:
https://meltdownattack.com/#faq-advisory
https://www.darkreading.com/informationweek-home/vendors-rush-to-issue-security-updates-for-meltdown-spectre-flaws/d/d-id/1330753
http://securityaffairs.co/wordpress/67431/hacking/cisco-meltdown-spectre-patches.html
https://www.bleepingcomputer.com/news/apple/apple-releases-security-updates-for-spectre-cpu-flaw/
http://www.zdnet.com/article/apple-confirms-iphone-mac-affected-by-meltdown-spectre-vulnerabilities/
https://www.vmware.com/us/security/advisories/VMSA-2018-0002.html
https://support.citrix.com/article/CTX231399

Bieffekter av installation av uppdateringar:
https://www.theregister.co.uk/2018/01/08/microsofts_spectre_fixer_bricks_some_amd_powered_pcs/
http://securityaffairs.co/wordpress/67498/hacking/microsoft-kb4056892-bricks-athlon-pcs.html
https://www.computerworld.com/article/3246286/microsoft-windows/buggy-win7-meltdown-patch-kb-4056894-throwing-blue-screens.html#tk.twt_ctw
https://threatpost.com/experts-weigh-in-on-spectre-patch-challenges/129337/
https://www.bleepingcomputer.com/news/software/meltdown-and-spectre-patches-causing-boot-issues-for-ubuntu-16-04-computers/
https://www.theregister.co.uk/2018/01/08/meltdown_fix_security_problems/
http://www.securityweek.com/microsoft-patches-cpu-flaws-break-windows-apps
https://threatpost.com/anti-virus-updates-required-ahead-of-microsofts-meltdown-spectre-patches/129371/
https://www.bleepingcomputer.com/news/microsoft/microsoft-says-no-more-windows-security-updates-unless-avs-set-a-registry-key/

 Prestanda:
http://www.securityweek.com/microsoft-intel-share-data-performance-impact-cpu-flaw-patches
https://www.darkreading.com/endpoint/microsoft-confirms-windows-performance-hits-with-meltdown-spectre-patches/d/d-id/1330778
http://www.zdnet.com/article/microsoft-says-older-windows-versions-face-greatest-meltdown-spectre-performance-issues/
https://cloudblogs.microsoft.com/microsoftsecure/2018/01/09/understanding-the-performance-impact-of-spectre-and-meltdown-mitigations-on-windows-systems/

ICS/SCADA och meltdown/spectre:
https://library.e.abb.com/public/c6c6cee60b954fb68b1245cd83a30717/9AKK107045A8219%20Cyber%20Security%20Notification%20Meltdown%20and%20Spectre.pdf?x-sign=mMpbUIjPPLP7hSOq1gBjlAiqirZWzOdukwUmV15RVz82+ZbP1Xpjs0u6vbt9OLK9
https://www.citect.schneider-electric.com/safety-and-security-central/36-security-notifications/9125-security-notification-spectre-and-meltdown
https://www.siemens.com/cert/pool/cert/siemens_security_bulletin_ssb-068644.pdfhttps://ics-cert.us-cert.gov/sites/default/files/recommended_practices/RP_Updating_Antivirus_in_an_ICS_S508C.pdf
https://ics-cert.us-cert.gov/alerts/ICS-ALERT-18-011-01

Skydd:
https://gruss.cc/files/kaiser.pdf
http://www.chromium.org/Home/chromium-security/site-isolation 

Övrigt:
https://blog.mozilla.org/security/2018/01/03/mitigations-landing-new-class-timing-attack/
https://webkit.org/blog/8048/what-spectre-and-meltdown-mean-for-webkit/
http://blog.trendmicro.com/trendlabs-security-intelligence/januarys-patch-tuesday-fixes-56-security-issues-including-meltdown-spectre/