Det finns mycket dåligt man kan säga om Microsoft, deras produkter och deras affärsmetoder, men här tänker jag fokusera på deras bristande säkerhet.
Microsoft kan per definition inte göra säkra produkter. Varför?
Microsofts problem har många orsaker:
- Bristande kompetens. Visst, det finns säkert kompetens inom företaget, men med de senaste anställningsrusherna så har den blivit på tok för utspädd. Och nej, att köpa upp Bryce Cogswell och Mark Russinovitch är inte nog för att rädda dem.
- Farlig focus. Microsoft har alltid valt användarvänlighet och features framför säkerhet, och många av de mest korkade och farligaste säkerhetsluckorna kommer direkt från denna doktrin. Några exempel är hur Outlook hjälpsamt okritiskt körde bifogade filer eller hur IIS hjälpsamt körde okänd kod den fick utifrån.
- Deras tillit till retroaktiv säkerhet. Om Microsoft byggde hus så skulle man inte ha några lås eller alarm förrän någon faktiskt bröt sig in, och inte ens då skulle man fixa annat än just den ingången och det skulle dröja ett tag innan man fixade den. Troligen skulle huset rasa några gånger innan man ens fick det att förbli upprätt. Det här är fel tankesätt. Säkerhet måste alltid finnas med i tanken och den måste bli designad in i produkten från början.
- Byggande på en kass grund. Delar av Windows är 20 år gamla, innan den här typen av problem ens existerade. Visst, de har blivit omkompilerade för 32-bits hårdvara och några fixar har gjorts, men den underliggande designen och tanken är fortfarande 20 år gammal. Jag tror inte att de har stake nog för det, men Windows är i ett enormt behov av en dump-and-rewrite. Förhoppningsvis kommer trenden med open source-kloner av Windows att tvinga dem till det.
- Man förlitar sig på extra produkter för säkerhet. Varför behövs en brandvägg? Glöm marknadsföringssnacket om hur bra brandväggar är och tänk själv istället. Ett säkert operativsystem behöver ingen brandvägg. En brandvägg är som att säga "Jag var för lat för att sätta ett lås på husdörren, så jag byggde en hög mur runt tomten istället". Låt oss vara väldigt tydliga här, en brandvägg skyddar bara mot defekter i operativsystem och de prodkter man kör, och oftast inte ens det eftersom de flesta attacker är väldigt lika de legitima anrop som datorn förväntas svara på. Det är som att ha nummerupplysning för att inte behöva svara på samtal från en person som bor i samma hus som en person som man vill prata med. Tänk dessutom på att brandväggen kan ha precis samma brister som de produkter de ska skydda.
- Drivrutiner körs utanför operativsystemets kärna. Det innebär att de körs utanför operativsystemets kontroll, vilket tillåter eländen som rootkits och riktigt otäcka virus. Jämför detta med moderna operativsystem som har drivrutinerna under stadig kontroll, under kärnan i operativsystemet. Det här är förresten också anledningen till att Windows måste startas om så ofta efter att man installerar eller ändrar en drivrutin, något som de flesta OS inte behöver. Att ändra detta är ett större omtänk som inte är troligt att man vågar göra. Tvärtom, XP har lagt drivrutinerna ännu mer utanför normal exekvering.
- Framtida versioner av Windows kommer att ta bort möjligheten för användare att ha full kontroll över vad som körs och vad som händer. Tidigare under kodnamnet Palladium, numera under namnet Next-Generation Secure Computing Base (http://en.wikipedia.org/wiki/Next_Generation_Secure_Computing_Base). Kamouflerat som ett försök att öka säkerheten, men egentligen med helt andra motiv. Säkerhet genom att dölja (security through obscurity) har blivit bevisad som osäker. Att inte veta vad som körs på ens dator är en enorm säkerhetsrisk. Visst, de flesta användare bryr sig inte eller har inte kompetensen att kontrollera det, men ibland funkar det inte. Det är viktigt att man har total kontroll över vad som händer med sin maskin, för det finns folk som faktiskt kontrollerar att programmen sköter sig. Se hur Mark Russinovitch blåste locket av Sonys rootkit för ett tag sedan för att se hur viktigt detta är.
- Microsoft update. Det här är en stor fuckup från början till slut. De talar inte tydligt om vad en service pack kommer att göra (som tex att lägga tillbaka IE efter att jag spenderat en halv dag med att göra den okörbar), de har enorma säkerhetsproblem (två gånger har jag fått virus via MS update, lyckligtvis knep jag dem innan de gjorde någon skada), de installerar saker man inte behöver (varför behövs Office-uppdateringar och Windows Media Player på en Windows 2000 Server?). De flesta kör den helt automatiskt, vilket innebär att de inte har någon aning alls om vad de får och vad som händer med deras maskin. Att acceptera okänd kod utifrån och köra den är som att spela rysk roulette.
- 9 av 10 Microsoft-anställda äter små barn (enligt skattningar gjorda av Linux-förespråkare). Detta ger dem väldigt lite tid att fundera på säkerhet.
- Mer om MS Update. En paradox med den är att den mer eller mindre krävs för att fixa allt som inte var säkert från början, samtidigt som dess "svarta låda"-modell och det konstanta behovet av att starta om gör det omöjligt att köra den på de flesta servers. Servers behöver köra kontinuerligt och tillförlitligt, då kan man inte starta om dem och ändra förutsättningarna hela tiden med mysterieuppdateringar. Den kan inte kräva konstant micklande. Lär från Novell Netware. Man behövde sällan uppdatera den och man behövde bara starta om den om man kopplade i eller ur fysisk hårdvara.
- Windows är closed source. Det finns alltså inget sätt att verifiera säkerheten. Ingen oberoende kan kontrollera att det är säkert, utan man måste lite på Microsofts ord och kompetens, något som vi gång på gång sett hur mycket det är värt. Detta innebär också att säkerhetsluckor oftast inte upptäcks förrän någon utnyttjar dem, till skillnad från open source-operativsystem där sådant upptäcks innan koden släpps i en release. I open source så är det många som granskar koden och fel fixas fort, oftast av den som hittar dem. Har man tvivel så kan man alltid kontrollera den själv, något som Microsoft inte erbjuder. Det här är samma anledning som att man alltid ska använda välkända publicerade krypteringsalgoritmer framför okända som påstås vara "supersäkra". De publicerade har testats av de skarpaste hjärnorna på området, vilka dessutom haft inblick i detaljerna kring hur den funkar, och befunnits vara säker. De icke publicerade är otestade och det enda man har att gå på är leverantörens eget ord.
- Microsoft har "utbildat" sina användare till att tro att en konstant anstormning av fixar betyder säkerhet, när verkligheten egentligen är den omvända. Behovet av fixar kommer från ett osäkert system i botten. Problemet nu är att folk tror att operativsystem som inte har detta flöde av fixar är osäkra. Korkat, men så är det.
Update: Det cirkulerar två rykten på internet just nu:
1. Microsoft tror på fullt allvar att Vista är säkert.
2. Microsoft delar ut gratis laptops till bloggare för att få positiva omdömen om Vista. Läs vad Joel Spolsky säger om detta här.
Nå, Microsoft, betrakta det här som en officiell utmaning. Skicka mig en av de där laptopsen och jag ska skriva en utförlig utvärdering av Vista. Var dock medvetna om att jag säger som det är, och det jag ser är det jag säger, så, beroende på om Vista håller måttet eller inte så kan utvärderingen bli bra eller dålig för er. Jag har kompetensen att göra en seriös utvärdering, med en bakgrund som innehåller 15 år av programutveckling och systemadmin för Windows.
Litar ni på er produkt tillräckligt mycket för en oberoende bedömning? Att jag säger som det är innebär naturligtvis en risk för er om produkten inte visar sig hålla måttet, men desto större vinst om den faktiskt gör det. Tar ni upp handsken?