Författare: Mattias Jadesköld

20 mars, 2020

När det gått snett i verkligheten inom Open Source

I IT-säkerhetspoddens tredje, och sista, är Linus Karlsson (Security Specialist) från Debricked med oss och pratar om när det gått snett I verkligheten. 

Riskerna att inte uppdatera Open Source och beroende applikationer

Ett vanligt fenomen är dåliga rutiner på att uppdatera sin mjukvara  (eller dependencies som det benämns i avsnittet). Linus tar fallet med Equifax som exempel. 

Equifax är ett stort kreditupplysningsföretag I USA som drabbades av en läckage där 145 miljoner människors information läckte. Ungefär hälften av USAs befolkning. Information som namn, adresser och körskortsuppgifter läckte. 

Grundorsaken berodde på att Equifax nyttjade ett bibliotek, som är väldigt vanlig, som heter Apache struts. Biblioteket används för att skapa webtjänster baserat på Java. 

Trots att Equifax upptäckte sårbarhet i Apache struts tog det ungefär ett halvår innan de presenterade detta. Anledningen vara att biblioteket inte uppdaterats och konsekvenserna blev att Equifax fick sitt varumärke svärtat samt att de fick betala tillbaka oerhört mycket pengar. De fick bland annat erbjuda gratistjänster till sina kunder. 

Om man litar på A, som litar på B, betyder det automatiskt så att man litar på B? 

Linus tar ett annat exempel som är mycket mer sofistikerat och som bygger på just att man litar på sin mjukvara och på så viss även litar på mjukvarans beroende program. 

Den här gången drabbar det registryt NPM, eller rättare sagt Event Stream som är ett populärt paket bland java-script. Paketet gör en väldigt specifik grej, och i just detta fall, strömmar av event. Paketet är oerhört populärt och nyttjas i massor av mjukvara. 

Event Streams skapare blir kontaktad av en okänd person som har ett antal förslag på förbättring och skickade dessa. Allt kändes som att personen agerade i all välmening. Förbättringarna godkändes, men ytterligare en dependencies smögs med. Det syntes men eftersom personen verkade schysst lade man ingen större notis om det, eftersom det inte innhöll något skadligt. 

Men en månad senare uppdaterades just den här dependencies med ny kod. Den här gången skadlig!  

Attacken var väldigt sofistikerad, och riktad, eftersom den skadliga koden aktiverades bara när mjukvaran hanterade Bitcoins. Dessutom om balansen på Bitcoin-plånboken hade hög likviditet. På så vis upptäcktes det inte lika lätt. 

Konsekvenserna är okända men skadliga koden skeppas tillsammans med mjukvara för Bitcoin. 

Hur kan man skydda sig mot detta? 

I första exemplet gäller det givetvis att se till att ha en tydlig patchrutin. Mjukvaran ska vara uppdaterad. Man måste också ha koll på vilka beroenden som finns i mjukvaran och att även dessa är uppdaterade. 

Det andra exemplet är knepigare eftersom det nästan är ett Social Engineering-attack där skaparen av mjukvaran luras att uppdatera sin kod. Ett tydligt svar finns inte riktigt utan det diskuteras fortfarande huruvida det är grundaren som var oansvarig medan en annan stor grupp tycker att man inte kan ha sådana förväntningar på en person som skapat mjukvaran på sin fritid. Dessutom en person som inte har tid att uppdatera mjukvaran längre. 

Vem man ska lita på kanske inte är det viktiga utan mer mekanismen hur man tar in ny mjukvara, och upprätthåller den, i sin kod. 

13 februari, 2020

Machine learning inom Open source

I IT-säkerhetspoddens andra specialavsnitt är Emil Wåreus (Head of Data Science på debricked) tillbaka. Den här gången pratar vi om hans favoritämne – machine learning

Att nyttja Maskininlärning har på sista tiden blivit betydligt billigare och det finns ramverk att arbeta med som kan tillämpas till sin mjukvara. 

Säkerhetsföretaget debricked hanterar extremt mycket data i sitt analysverktyg för att identifiera sårbarheter i open source. Därför används maskininlärning för att processa all information. 

Maskininlärning inte samma sak som AI 

Emil har tidigare byggt robotar (eller autonoma agenter), till exempel drönare som följde efter människor, och där noterade han att begreppet maskininlärning missförstås. Ofta blandas det ihop med AI fast det är helt separata saker. Så för att förtydliga: 

  • AI kan beskrivas, ur ett autonom-agent-perspektiv, som human, det vill säga en agent som kan förstå sin omgivning och ta beslut helt utan styrning. 
     
  • Maskininlärning däremot, ur samma perspektiv, kan delvis uppfatta omgivningen men är bättre på varseblivning. Den fungerar väl i en stängd miljön men om man tar drönararbetet som exempel är omgivningen fysisk. Maskininlärning som teknik kan då inte “förstå” omgivningen men däremot analysera bilder. Problem kan uppstå där till exempel maskininlärning kan tro att en ko kan vara i en hästhage (där ett AI, som förstår omgivningen, förmodligen skulle anta det är en häst eftersom den förstår att det är en hästhage). Det är således viktigt att träna sin maskininlärning. 

Processad information måste bli rätt 

Vi tar oss an den amerikanska databasen NVD igen, där Emil upptäckte att sårbarheterna som presenterades var missvisande. 

Sårbarheter presenteras som att 60% av produkter som visas endast har en sårbarhet och 90% med under sex sårbarheter. Det blir alltså svårt att se allvarligheten i de olika mjukvarorna och vilka projekt som innebär störst risk att nyttja. 

Debricked tar hjälp av sin egen maskininlärningsalgoritm för att samla NVD tillsammans med issues på Github (repository med mjukvaror) för att få kvalité på informationen. Den tittar till exempel på språkbruket i skapade issuen och vad för ord som den innehåller för att bilda sig en uppfattning. På så vis kan algoritmen avgöra vad som är en säkerhetsbrist och vad som till exempel är en bugg. 

Den guidar utvecklare i rätt riktning och att göra rätt. 

Algoritmen läser miljoner rader av text (från flera olika repositories) och förstår och kategoriserar problemet. 

Träna sin algoritm 

Maskininlärning måste hela tiden tränas på sådant den känner till och på sådant den inte känner till. Tekniken kallas Semi-supervised learning och där använder debricked Googles TensorFlow

Vi återanvänder häst-exemplet. Emil tränar sitt dataset med ett antal bilder på hästar och sådant som är markerat som “inte häst”. Sedan massor av bilder på sådant som är helt okänt. Algoritmen processar bilderna och förstår, och blir ännu mer träffsäker, på vad som är en “häst i en bild”. 

Det finns färdigtränade algoritmer för till exempel bildanalys och text men inte mycket för att upptäcka säkerhetsbrister. Där är debricked ledande och slår andra som gör liknande. 

 
Vad är en säkerhetsbrist? 

Debrickeds algoritm kan läsa nästan vilken text som helst och avgöra om det är ett säkerhetsproblem som beskrivs eller inte. Företaget arbetar vidare med att kategorisera vikten av hur allvarlig bristen är. 

Emil poängterar vikten att förstå sitt område som dataanalytiker. Man måste kunna till exempel säkerhet för att kunna utveckla maskininlärning som hanterar säkerhet. Man måste hela tiden jobba och undersöka hur träffsäker sin maskininlärning är. Det går inte att ha en algoritm som förutspår sju av tio fel och genererar för mycket falska larm (false positive). Det är viktigt att den data som levereras till kund är minst över 90% korrekt, så kunden kan fokusera på rätt saker. 

Avslutande tips 

Emil avrunda med tips inom maskininlärning 

  • Det är viktigt att ha låg false positive men att arbeta med att öka informationen att ta in utan att sänka kvalitén med hög träffsäkerhet 
  • Arbeta med erkända ramverk (t.ex. TensorFlow) 
  • Arbeta med matematiken för att optimera effektivt och för att förstå sin data 
  • Förstå din domän först (område) som maskininlärningen ska hantera 
  • Maskininlärning är ett medel för att nå ditt mål 
31 januari, 2020

Statistik inom Open source

Affärsmodell med Open source 

Allt fler företag väljer att skapa mjukvara baserat på öppen källkod (Open source). I IT-säkerhetspoddens avsnitt pratar vi med Emil Wåreus Head of Data Sience på debricked om risker kopplat till öppen mjukvara och statistik (eller fun facts).

Statistiken är viktig att förstå för att välja rätt öppen källkod och hur komplext det kan vara för att undvika säkerhetsrisker. 

   Öppen källkod kan jämförs som en rörelse där skapare nyttjar öppen källkod och publicerar sina anpassningar på internet för hela Open source-scenen. Engagemanget är stort och förslag med funktionell och säkerhetsmässiga förbättringar diskuteras inom rörelsen.  

   Det kan tyckas märkligt att företagare lämnar ut sin affärsidé och delar med sig till vem som helst och för att förstå hur det hänger ihop tar vi oss till 80-talet. Trenden var då att man såg sin mjukvara just som själva affärsidén. Resultatet blev en statisk mjukvara (eller proprietär kod) med ett hackigt community. . 

   Open source startade samtidigt på konsumentsidan där engagemanget blev stort bland användare. När det nu är utbrett på företagssidan är en vanlig affärsmodell open core där kärnan är öppen medan tilläggstjänster såsom support och konsultarbeten blir affärsmodellen. På så vis behålls engagemanget i Open source och samtidigt kan företagare vara lönsamma genom att hjälpa sina kunder med vad de faktiskt efterfrågar. 

Flera hundra beroenden 

Det många inte vet är att en öppen källkod ofta inte är just en mjukvara. Tvärtom. Vanligare är snarare att mjukvaror använder flera hundra direktimporterade mjukvaror som den är beroende av. Beroenden med sina egna öppna källkod och sårbarheter. Emil Wåreus tar ramverket React som exempel som är en plattform baserad på Java och skapat av Facebook. Verktyget är väldigt populärt just nu för att skapa webapplikationer och bygger på just öppen källkod. Men få känner till att React har ungefär 3.500 beroenden. Hur ska man ha koll på vilka man använder och vilka säkerhetsrisker det finns att nyttja ett sådant ramverk? 

   Här finns fördelen med den öppna källkodsscenen där man kan ta del av andras upptäckter och idéer till skillnad mot stängd mjukvara där tillverkaren ansvarar för att upptäcka sårbarheter och täppa till dessa. 

   För att reda ut svårigheterna finns debrickeds mjukvara som analyserar mjukvaran inom tre områden – sårbarheter, licensieringen och hälsokontroll (health check), där det sistnämnda undersöker just communityt för att analysera hur högt engagemanget såsom bidragande medlemmar. Det hela poängbedöms av debricked vilket hjälper upphovsmakarna att välja rätt öppen källkod. 

Flera datakällor för att upptäcka sårbarheter 

Debricked är integrerat med Amerikanska NISTs “National Vulnerability Database” (NVD) som är en öppen databas där man kan hitta kända sårbarheter i öppen källkod. Här rapporterar communities (till exempel Github) till NVD för analys. NVD undersöker vilken typ av sårbarhet som avses och om det är kopplat till säkerhet eller inte. Ungefär femtio nya sårbarheter registreras – per dag! 

Statistik från NVD visar vilka projekt som innehåller mest sårbarheter. Bild nedan visar de högst rankade just nu.  

   Men NVD räcker inte för att upptäcka sårbarheter så därför är databasen bara en av datakällor som debricked nyttjar. En stor del upptäcks inte eftersom NVD har koll på 50.000 projekt som har ungefär 120.000-130.000 sårbarheter. Debricked däremot hittar över 200.000 sårbarheter relaterat till säkerhet eftersom de samlar in från flera datakällor. 

   Den andra stora källan är, numera Microsoft-ägda GitHub, som debricked nyttjar som datakälla. Här undersåker debricked så kallade issues på Github. 

   Om man skapar en enkel websida baserad på öppen källkod med populära verktyg och installerar enligt standard kan man räkna med ungefär 10.000-15.000 beroende mjukvaror med hundratals sårbarheter. Nästa steg blir att analysera sårbarheten som oftast (ungefär 30%) kan täppas till genom att uppdatera. Men resten är klurigare. Man ska ställa sig frågan – använder jag den här mjukvaran? Eller kan jag bygga runt det på något vis?  

Fyra råd 

Emil Wåreus ger fyras råd för öppna källkodsprojekt.  

  • Använd debricked tidigt i processen innan du importerar mjukvara för att förstå hur säker den är och undersök poängbedömningen.  
  • Sätt policys för att blockera osäker mjukvara. På så vis hjälper man utvecklare att göra rätt och förhindra att fel kod importeras 
  • Räkna på mjukvaran som är tänkt att användas. Räkna hur mycket tid och pengar det krävs för att säkra mjukvaran 
  • Använd inte gammal mjukvara 

Man får också väga “springa framåt” mot “håll tätt bakåt” i projektet. 

28 september, 2019

SQL-Injektioner

I avsnitt nummer 45 tar vi oss an begreppet SQL Injection.

Jag och Erik verkar gilla den här sårbarheten, eftersom förutom avsnittet, finns ju Eriks bloggartikel i ämnet här.

I avsnittet pratar vi om ”OWASP Top Ten Project” och den är ju intressant att kika på. – länk.

Och så nämner vi lite fakta – 65% av alla webbattacker nyttjar SQLi som vektor. Källan finns här (https://www.cbronline.com/news/sql-injection-attacks) – en väldigt spännande vinkel i artikeln är att spelkonton är hackares nya favorit.

23 juni, 2019

Avsnitt om identitetsintrång

I avsnitt 31 om id-kapning pratar vi om Identitetsintrång och begreppet beskrivs på många olika vis från olika källor.

Polisens sida om identitetsintrång har en hyfsat bra punktlista på åtgärder för att skydda sin identitet men behöver kompletteras med några andra saker:

  • Lita på din dator om du ska göra internetköp
  • Lita på sidan du handlar ifrån
  • Aktivera adresslås (väldigt viktigt) för att undvika att obehöriga byter din bokföringsadress
  • Se till att ditt betalningskort är ”säker kortbetalning aktiverat”

Den sista punkten är olika beroende på vilken bank man använder så undersök vad som gäller för just din bank. Smart är ju givetvis att onlineköp behöver godkännas med Mobilt BankID

9 juni, 2019

Avsnittet om elektronisk röstning

Veckans avsnitt uppkom efter att jag och Erik snackade om valet efter eu.-valen och Eriks blogginlägg i ämnet.

Vi pratar om utmaningen med elektronisk röstning jämfört med hur systemet är uppbyggt idag. En del är spårningen kring pappershanteringen vilket en del menar kan lösas med blockchain-teknik – (läs här en intressant artikel i ämnet).

Är det tekniken just som är hindret att ta steget till elektronisk röstning eller är det faktumet att människor inte kanske litar på röster som genomförts på internet? Och om människor inte litar på röstningssystemet har man stora demokratiska problem…

19 maj, 2019

Cyber kill chain

I veckans avsnitt pratar vi Kill chain, eller snarare Cyber kill chain. Begreppet finns beskrivet på många olika vis men har egentligen ETT huvudsyfte – att beskriva hur en organiserad attack går till.

Jag tycker att beskrivningen på från den här bloggen är helt okej även fast vi inte håller med helt, framförallt inte Exfiltration efter Denial of Service. Det är liksom en omöjlighet att få ut information ur ett system som man precis har sänkt i fasen innan. Det kan också vara så att de menar att man redan fått ut information och nu ska sprida det vidare.

Men just DoS hör inte riktigt till en Cyber kill chain. Det är ju snarare ett sätt att attackera ett system mer än en fas.

Jag gillar också vår liknelse med ett bankrån, vilket vi snackar om initialt. Jovisst, ett organiserat westernskurkgäng gick förmodligen igenom samma faser som dagens cyberattackerare.

17 mars, 2019

Varför är lösenordet dött?

I veckans avsnitt pratar vi att NIST förkastat sina gamla rekommendationer med komplicerade lösenord som som regelbundet behöver bytas till någonting helt annat.
Det är längden på lösenordet som är avgörandet och inte hur många gånger man byter a mot @.

Lösenord i all ära men är det inte lite omodernt att logga in överallt för lösenord kommer ju alltid kunna hackas.

Vad ska man ha istället då?

Vidare tar vi upp ersättare såsom biologiska inloggningar och multifaktorautentisering.

10 mars, 2019

Mötet med Åsa

Jag var lite nervös inför veckans avsnitt eftersom vi valt att ta en ny infallsvinkel i avsnittet. Nämligen en mer personlig intervju. Tanken var att vi skulle få reda mer på personen bakom själva tekniken.

Vi har ju bjudit in många till våra avsnitt tidigare men då har vi pratat om tekniken. Nu ville jag att vi skulle prata mer om personen. Bakgrunden, kopplingen till säkerhetsbranschen och eftersom det var Åsa Schwarz vi pratade med, hennes författarskap.

I mina anteckningar, ja manus om du vill, inför intervjun skrev jag ”Det verkar som att samtidigt som du grundar bolag blir du också författare. Vad var det som fick kreativiteten att flöda? (här vägrar jag fråga ”hur har du tid som mamma till två barn, författare och säkerhetsspecialist) ”

Klassiker! Jag valde att stryka mitt lilla skämt innan jag skickade henne frågorna men faktum var att hon själv nämnde det under intervjun vilket jag tyckte var roligt.

Vi pratar en hel del om hennes böcker, naturligtvis om ”de sju nycklarna” men även hennes andra vilket ni kan finna här på (Bokus-länk).

3 mars, 2019

Veckans avsnitt om kryptering

I veckans avsnitt går vi till botten i ämnet kryptering. Och vi börjar verkligen från början. För flera tusen år sedan dolde Ceasar sina meddelande med ett så kallat ceasarschiffer.

ceasarschiffer

En annan tidig variant av kryptering är den rulle som de gamla grekerna och spartanerna använde.

Sen nämns Enigma innan vi går vidare med de nuvarande tekniker som används för att kryptera sin information.

Men är det verkligen bra i alla lägen att kryptera sina meddelanden?

Scroll to top