När komplexiteten blir ett hot

2012-02-09

Jag skulle vilja kategorisera frågan ”Vilket är det största säkerhetshotet?” som en retorisk fråga. Det är givetvis en omöjlig fråga att besvara utan en djupare definition på vad som efterfrågas eller i vilket samanhang det gäller.

Detta till trots finns det en faktor som står ut när det gäller att skapa säkerhetsproblem. Jag känner inte till ett snabbare sätt att minska säkerheten omedvetet än genom att öka komplexiteten.

Det handlar verkligen om antalet möjliga kombinationer. Många säkerhetsarkitekter gillar att bygga system där säkerhetsfunktioner staplas på varandra och sedan sälja det med ”defense in depth” (säkerhet på djupet) som slogan. Som jag ser det är det tragiska att de utgår från ett helt korrekt antagande vad det gäller säkerhet och dessutom i grund och botten tänker rätt. Säkerhet ska byggas in i varje del av systemet och inte bara som ett enkelt skal. Problemet kommer när varje nytt säkerhetskoncept möter en verklighet där saker måste fungera och resultatet blir eftergifter som ökar riskerna istället för att minska dem. Ett exempel: du isolerar några servrar till ett skyddat nätverk men måste ändå ha tillgång till användaruppgifter så att användare kan logga in till systemet. Detta gör att du antingen måste öppna för trafik från det isolerade nätet till autentiserings-servrar på det interna nätet eller sätta upp en lokal autentiserings-resurs på det isolerade nätet. Denna typ av eftergifter kan till en början göras utan att ställa till stora säkerhetsproblem om man följer en plan och håller hårt på reglerna.

Problemet kommer när fler och fler system införs för att kunna hantera nya funktioner och för att göra det möjligt för dessa att funka trots säkerhetsnedlåsningen. De servrar, nätverksenheter, intrångslarm (IDS/IDP) och mellansystem (proxies) som man installerar är i sig maskiner med beräknings- och datalagringskapacitet. Och det är just möjligheten att på samma system kunna lagra data, göra beräkningar och kommunicera på nätverket som är den farliga kombinationen. Varje ny ”låda” är i sig en väg in djupare i nätverket. Mitt sätt att bedöma riskerna utgår från att försöka vaska fram vilka upplägg som ökar säkerheten utan att i sig lägga till för stora nya risker. Min erfarenhet är att nätverkssegmentering generellt är en lösning som ger många fördelar med relativt liten risk, medan t.ex. virusskydd på servrar är en mer knepig fråga. Betänk att virusskydd körs med de högsta privilegier ett system kan ge och därför skulle kunna användas för att ta över systemet om man hittar ett användbart säkerhetshål i virusskyddet. Detta innebär inte nödvändigtvis att virusskydd är en dålig idé i sig själv, men det ger en hint om att det inte är så enkelt som att säga att mer skydd är bra.

För att få en förståelse för problematiken bör en säkerhetsarkitekt läsa böcker om intrång. Jag tycker ”Art of intrusion” av Kevin Mitnick är en ögonöppnare. Han försöker inte gräva ner sig i tekniken, utan beskriver hur ”vanliga människor” tagit sig in i system med tålamod och en osviklig vilja som enda vapen. En väldigt djuplodande bok för den som är seriöst intresserad av säkerhet är ”Security Engineering” av Ross Anderson. Med sina över 1000 sidor är den både metaforiskt och reellt en ”säkerhetsbibel”.

En sak återkommer hela tiden när man beskriver lyckade attacker mot system: möjligheten att använda system för saker de inte var avsedda för. Teknikerna och deras styrkor och svagheter är egentligen inte särskilt intressanta. Men det blir uppenbart att ju fler system som finns inom en organisation, desto fler språngbrädor för en driven attackerare. Till syvende och sist handlar det om antalet möjligheter och hög komplexitet ger många möjligheter.
Till sist en kort och lista på attacker som använder systemens komplexitet som ett vapen för att bekämpa dem:

- Dörrar med kortläsare är relativt vanliga och kan vara mycket säkra. Det finns en del dörrar där man valt att låta en värmedetektor öppna dörren från insidan för de som ska ut. Detta kräver givetvis inget kort. En relativt vanliga attack mot ett sådant system handlar om att från utsidan skjuta in någonting med en värmesignatur igenom springan mellan dörren och tröskeln och röra det fram och tillbaka framför sensorn som då öppnar dörren.

- Vissa IDS (Intrusion detection systems) kan luras att släppa igenom skadlig trafik genom att man skickar ip-paketen i duplikat. En sårbar IDS tittar bara igenom ett av de duplicerade paketen. Problemet är att beroende på vilket operativsystemet som körs i botten, väljer den antingen ut det första eller sista paketet för varje duplikat. Systemet som trafiken ska vidare till kan mycket väl beroende på sitt operativsystem välja att acceptera det paket som IDS-maskinen inte titta på.

- En http-proxy används ofta för att publicera webservrar på ett säkert sätt mot internet. Då och då hittas det säkerhetshål i programvaran som kör proxyn som gör det möjligt att använda den för att nå valfri server, vilket kan ge tillgång till resurser som förväntas vara interna.

- Moderna operativsystem och applikationer varnar ofta för mindre risker, men gör det så ofta att användarna till sist vänjer sig vid att klicka bort varningarna för att komma vidare. Detta gör att varningarna inte läses. I de fall där användarna faktiskt läser meddelandena, har de svårt att avgöra hur de ska förhålla sig till dem. Exempel: vet dina föräldrar vad felmeddelandet ”certifikatets CRL-fil kunde inte laddas ner” betyder? Komplexiteten i detta fall ligger i att förstå det underliggande problemet som ger upphov till varningen. Dessutom tillkommer ”Ropa på vargen-effekten” och ökar oviljan att befatta sig med varningsmeddelandena.

Denna kortlista borde ge ett smakprov på problemet och jag avslutar med bevingade ord från en man som varken brydde sig om att kamma sig eller om vetenskapens heliga kor:

- ”Allt bör göras så enkelt som möjligt, men inte enklare.”
 – Einstein.