Examensarbete Kandidatexamen mikrodataanalys Analys av sårbarheter från national vulnerability databas Analysis of vulnerabilities from national vulnerability database Författare: Dennis Blomberg Handledare: Rueben Laryea Examinator: Hassan Fleyeh Ämne/huvudområde: Mikrodataanalys Kurskod: GMI2C8 Poäng: 15hp Examinationsdatum: 2020-06-02 Vid Högskolan Dalarna finns möjlighet att publicera examensarbetet i fulltext i DiVA. Publiceringen sker open access, vilket innebär att arbetet blir fritt tillgängligt att läsa och ladda ned på nätet. Därmed ökar spridningen och synligheten av examensarbetet. Open access är på väg att bli norm för att sprida vetenskaplig information på nätet. Högskolan Dalarna rekommenderar såväl forskare som studenter att publicera sina arbeten open access. Jag/vi medger publicering i fulltext (fritt tillgänglig på nätet, open access): Ja ☒ Nej ☐ Högskolan Dalarna – SE-791 88 Falun – Tel 023-77 80 00
50
Embed
Examensarbete - trafikverket.se · Examensarbete Kandidatexamen mikrodataanalys Analys av sårbarheter från national vulnerability databas Analysis of vulnerabilities from national
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Examensarbete
Kandidatexamen mikrodataanalys
Analys av sårbarheter från national vulnerability databas
Analysis of vulnerabilities from national vulnerability database
Författare: Dennis Blomberg
Handledare: Rueben Laryea
Examinator: Hassan Fleyeh
Ämne/huvudområde: Mikrodataanalys
Kurskod: GMI2C8
Poäng: 15hp
Examinationsdatum: 2020-06-02
Vid Högskolan Dalarna finns möjlighet att publicera examensarbetet i fulltext i DiVA.
Publiceringen sker open access, vilket innebär att arbetet blir fritt tillgängligt att läsa
och ladda ned på nätet. Därmed ökar spridningen och synligheten av examensarbetet.
Open access är på väg att bli norm för att sprida vetenskaplig information på nätet.
Högskolan Dalarna rekommenderar såväl forskare som studenter att publicera sina
arbeten open access.
Jag/vi medger publicering i fulltext (fritt tillgänglig på nätet, open access):
Today, digital development is happening at such a high rate that security is not as prioritized as it should be. When security is prioritized away, there is a high risk that vulnerabilities arise that malicious actors would like to exploit. It can be for accessing sensitive information, financial gain or simply bringing harm. In order for IT-security personnel to be able to more easily prevent and focus efforts on the vulnerabilities that are current today, this study aims to answer the following question: What is the trend of the most prevalent vulnerabilities? What is the trend of product owners with the most vulnerabilities? What is the trend based on the severity linked to the vulnerabilities? What is the trend of the impact on confidentiality, integrity, and accessibility? To answer the questions, a quantitative data analysis was done on the database from the National Vulnerability Database (NVD) together with the dataset from the Common Weakness Enumeration (CWE). The data set from CWE has been used to name and classify the vulnerabilities in NVD. Trends that have been identified in the analysis are as follows: injection, insufficient data authentication and uncontrolled resource consumption are vulnerabilities that have increased percentage every year since 2016. The impact of availability on the reported vulnerabilities declines as a percentage over the years. Vulnerabilities with a high impact on integrity, accessibility and confidentiality has decreased as a percentage. Keywords: trend analysis, vulnerability trends
Sammanfattning
I dagens samhälle sker den digitala utvecklingen i en sådan hög takt att säkerheten inte blir lika prioriterad som den borde. När säkerheten bortprioriteras finns det stor risk att sårbarheter uppstår som illasinnade aktörer gärna vill utnyttja. Det kan vara för att komma åt känslig information, ekonomisk vinning eller för att helt enkelt bringa skada. För att IT-säkerhetspersonal lättare ska kunna förebygga och fokusera insatser på de sårbarheter som är aktuella idag, ämnar den här studien till att svara på följande frågeställning: Hur ser trenden ut av de flest förekommande sårbarheterna? Hur ser trenden ut av produktägare med flest sårbarheter? Hur ser trenden ut utifrån allvarlighetsgraden kopplad till sårbarheterna? Hur ser trenden ut av påverkan utav konfidentialitet, integritet och tillgänglighet? För att besvara frågeställningen har en kvantitativ dataanalys gjorts på databasen från National Vulnerability Database (NVD) ihop med datasetet från Common Weakness Enumeration (CWE). Datasetet från CWE har använts för att namnge och klassificera sårbarheterna i NVD. Trender som har identifierats i analysen är följande: sårbarheterna injektion, otillräcklig verifiering av data autenticitet och okontrollerad resursförbrukning, har alla ökat procentuellt varje år sedan 2016. Påverkan av tillgänglighet på de rapporterade sårbarheterna sjunker procentuellt med åren. Sårbarheter med hög påverkan av integritet, tillgänglighet och konfidentialitet har procentuellt minskat. Nyckelord: trendanalys, sårbarhetstrender
Definitioner
För att underlätta läsningen presenteras några förekommande ord, begrepp och
termer som förekommer i uppsatsen.
Digitalisering - avser den omvandlingen som sker från analog till digital
representation i samhället (Nationalencyklopedin, u.å).
Python – är ett objektorienterat programmeringsspråk med ett stort utbud av
bibliotek (Python, u.å).
Pandas – är ett bibliotek till Python som används för dataanalys (Pandas, u.å).
Databas – är en organiserad samling av strukturerad information (Oracle, 2020)
som i den här rapporten avser data som är lagrad i ett datorsystem.
JSON – står för JavaScript Object Notation och är ett textbaserat format som
används för datautbyte (json, u.å).
CSV – står för Comma Separated value och är ett textfilsformat där varje värde separeras av ett kommatecken (Internet Engineering Task Force, 2005).
Bilaga A ............................................................................................................. 36
Bilaga B .............................................................................................................. 36
Bilaga C .............................................................................................................. 40
1
1 INLDENING
Den digitaliserade utvecklingen i samhället accelererar i takt med teknikens möjligheter, samtidigt flyttas samhällets förväntningar fram på den service som ska erbjudas. Den kombinationen av digitaliseringen och förväntningarna skapar en situation där hastighet och förändringsdriv går före säkerhet och kontroll. (Myndigheten för samhällsskydd och beredskap, 2019) Datorprogramvara i produkter finns i olika former och körs på olika plattformar, det förekommer allt ifrån enklare applikationer som körs på handhållna mobila enheter till sofistikerade distributionsprogramvarusystem. Denna mjukvara produceras med många olika metoder, baserade på en mängd olika tekniker, var och en med sina egna fördelar och begränsningar. Ett viktigt problem i denna enorma kritiska globala industri och inom datasäkerhet, är problemet med sårbarheter i programvaran. (Ghaffarian & Shahriari, 2017) Common vulnerability and exposure (CVE) är en industristandard för publikt kända sårbarheter. Alla deras sårbarhetsrapporter är offentligt tillgängliga, vilket gör det möjligt för vem som helst att ladda hem. CVE används i en mängd olika säkerhetsverktyg såsom intrångsdetekteringssystem, penetrationstestning och sårbarhets scannrar (Mitre, 2017). National vulnerability database (NVD) definierar en sårbarhet som en svaghet i beräkningslogiken som finns i programvaru- och hårdvarukomponenter. Utnyttjas sårbarheten resulteras det i en negativ inverkan på konfidentialitet, integritet eller tillgänglighet (National Institute of Standards and Technology (Nist), 2020a). Samhällets snabba ökning av digitaliseringen har medfört en ökning av cyberattacker. År 2018 ökade antalet unika incidenter utav cyberattacker med 27 % jämfört med året innan (Positive technologies, 2018). 2019 ökade dessa incidenter med 19% (Positive technologies, 2019). Både år 2018 och 2019 rapporter visar att malware är den attacken som ökar mest, hela 56 % år 2018 och 66 % 2019, dessa cyberattacker har på något sätt utnyttjat sårbarheter i programvara. Sårbarheter hittas hela tiden av både säkerhets forskare, illasinnade aktörer och mjukvaruleverantörer. IT-incidenter kommer alltid att inträffa, det är hur väl organisationer, såväl offentliga som privata, hanterar de inträffade incidenterna som avgör hur allvarliga konsekvenserna blir (MSB, 2019).
1.1 Bakgrund
År 1999 lanserades CVE av The MITRE Corporation, som är en icke vinstdrivande organisation finansierad av U.S Department of Homeland Security. Vilket gjordes för att ta itu med problemet att det inte fanns någon gemensam namnkonvention för kända sårbarheter. När olika cybersäkerhets verktyg använde egna databaser och egna namn för sårbarheter blir interoperabilitet mellan olika säkerhetsverktyg och databaser väldigt svår (Mitre, 2019a). MITRE ville skapa ett system för att hantera sårbarhetsinformation från olika källor i en centraliserad databas (Mann & Christey, 1999). vilket skulle göra det betydligt lättare att dela information över olika organisationer. MITRE har gjort det genom att skapa en standardiserad identifierare för en given sårbarhet.
2
Totalt har 143,467 sårbarheter rapporterats in till NVD (Nist, 2020b). Bara mellan åren 2019–2020 har 17,013 sårbarheter rapporterats. Den senaste version av common vulnerability scoring system v3.1 som används för att ge en allvarlighetsgrad till sårbarheter har 5 olika kategorier, ingen, låg, medium, hög och kritisk. 15,42 % av de inrapporterade sårbarheterna 2019 var av den högsta allvarlighetsgraden (Nist, 2020c). Den högsta allvarlighetsgraden innebär oftast att konfidentialitet, integritet och tillgänglighet är alla exponerade vid en attack. Från 2016–2019 har en kraftig ökning av sårbarheter visat sig i NVD databas (Cvedetails, 2020). I det här projektet kommer fokuset vara att analysera databasen från 2016–2019 för att se hur trenden ser ut av sårbarheter. Projektet kommer att göras hos och med ett samarbete av trafikverket.
1.2 Problemformulering
Så fort en CVE släpps publikt är attackerarna väldigt snabba med att skapa program för att exploatera sårbarheten, detta gäller speciellt när konfidentialitet, integritet och tillgänglighet är alla utsatta. Samtidigt som attackerarna försöker utnyttja sårbarheterna i IT-system, så jobbar IT-säkerhetspersonalen med att göra det så svårt som möjligt. Att förstå sårbarhets trender kan ha en väldigt betydelsefull fördel för IT-säkerhetspersonal, för att de bättre ska kunna förbereda sig att förebygga och mildra inverkan av en attack. Trend analyser av sårbarheter är också viktig för att i tid kunna sätta in motåtgärder för trender som blir för stora och skapar problem. Tidigare forskning om sårbarhets trender av NVD databas behöver uppdateras, då det finns mycket data tillgänglig idag som ger en mer relevant bild av dagens sårbarhetstrender. Chang, Zavarsky, Ruhl & Lindskog (2011) har analyserat CVE sårbarhetstrender från 2007–2010 och Neuhaus & Zimmermann (2010) analyserade alla sårbarheter fram till 2009.
1.3 Syfte
Syftet med studien kommer att vara att analysera sårbarheter från NVD databas för att uppdatera tidigare forskning med nya data, för att ta fram hur trenden har sett ut mellan 2016–2019.
1.4 Frågeställning
Frågeställningen som visas nedan har sammanställts för att analysen ska ge så relevant information som möjligt, för att förebygga och fokusera insatser på de sårbarheter som är mest aktuella idag. Hur ser trenden ut:
• av de flest förekommande sårbarheterna?
• av produktägare med flest sårbarheter?
• utifrån allvarlighetsgraden kopplad till sårbarheter?
• av påverkan utav konfidentialitet, integritet och tillgänglighet?
3
1.5 Avgränsningar
De avgränsningar som valts att göras är följande.
• Sårbarheter kommer endast att hämtas från National vulnerability
database.
• Endast topp 5 produktleverantörer kommer att analyseras för varje
sårbarhet.
• Data som analyseras kommer att vara från 2016–2019.
• Endast topp 15 sårbarheter kommer att analyseras.
4
2 TEORI
I detta kapitel presenteras den teori läsaren behöver ta del av, för att få en helhetsbild om hur sårbarheter tilldelas en allvarlighetsgrad samt vad common weakness enumeration är för något och hur det används. Detta för att läsaren ska få en bättre förståelse över analysen.
2.1 Common vulnerability scoring system
2.1.1 Introduktion
2005 publicerades första versionen av common vulnerability scoring system (CVSS) av US national infrastructure assurance council som ett öppet poängsystem för sårbarheter i mjukvara, hårdvara och firmware. Ansvaret av CVSS ligger nu hos FIRST men ett nära samarbete sker med både CERT/CC och MITRE (Forum of Incident Response and Security Teams (First), 2005). CVSS används till att producera ett numeriskt poäng som ska återspegla en sårbarhets allvarlighetsgrad, det åstadkommas genom att fånga de viktigaste egenskaperna av sårbarheten. Den numeriska poängen kan sedan översättas till en kvalitativ representation som låg, medel, hög och kritisk för att hjälpa organisationer att bedöma och prioritera sina sårbarhetshanteringsprocesser korrekt (First, 2020). Poängen som tilldelas en sårbarhet kan göras om till dess kvalitativa representation enligt tabell 1. Tabell 1 Allvarlighetsgraden som kvalitativ representation
Låg Medel Hög Kritisk
0.1–3.9 4.0–6.9 7.0–8.9 9.0–10.0
2.1.2 Common vulnerability scoring system metrik
Nedan beskrivs de grupper från den senaste versionen av CVSS, v3.1. De är uppdelade i bas, temporär och miljö.
• Bas Basgruppen representerar egenskaper hos en sårbarhet som är konstant över tid och över olika användarmiljöer. Baspoängen sätts vanligtvis av den organisation som har den sårbara produkten (First, 2019).
• Temporär Temporära gruppen ska återspegla de egenskaper hos en sårbarhet som kan förändras över tid men inte över användarmiljöer (First, 2019).
• Miljö Miljögruppen representerar egenskaper hos en sårbarhet som är unik för användarens egen miljö. Beräknas av organisationen som använder den sårbara mjukvaran för att få ett mer specifikt poäng för organisationens egen miljö (First, 2019).
5
I analysen av data från NVD kommer poängen från CVSS att användas från basgruppen. Temporär och miljögruppen kommer inte att beskrivas mer än ovan. Basgruppen har 8 uppsättningar av mätvärden för att ta fram en allvarlighetsgrad, den är också uppdelad i två subgrupper, exploaterbarhet och påverkan. Exploaterbarhet är enkelheten och det tekniska sättet sårbarheten kan utnyttjas. Påverkan reflekterar den direkta konsekvensen av ett framgångsrikt utnyttjande av sårbarheten (First, 2019). I subgruppen exploaterbarhet tillhör mätvärdena attackvektor, attack komplexitet, behövande privilegier och användarinteraktion. Subgruppens påverkan innehåller påverkan av konfidentialitet, integritet och tillgänglighet. Ihop med exploaterbarhet och påverkan räknas omfattningen av sårbarheten med till det sammanlagda poänget. Nedan beskrivs de 8 uppsättningarna av mätvärden för att ta fram en allvarlighetsgrad till sårbarheten. Attackvektor Attackvektorn visar på möjligheten att utnyttja sårbarheten, baspoängen blir högre ju mer avlägsen logiskt och fysiskt angriparen kan vara för att utnyttja sårbarheten. Mätvärdena för att beräkna allvarlighetsgraden är: nätverk, intilliggande, lokal och fysisk. (First, 2019) Attack komplexitet Attack komplexiteten har alternativen hög och låg. Om Låg så har angriparen inga specialiserade åtkomstvillkor. Om hög så kan inte en framgångsrik attack utföras utan att angriparen på något sätt exempelvis skaffar sig mer information kring miljön eller att utföra en man-in-the-middle attack för att komma in i det logiska nätverket. (First, 2019) Behövande privilegier Behövande privilegier är uppdelad i ingen, låg och hög. Om ingen så behöver attackeraren inga privilegier för att kunna utföra attacken, vilket är det alternativet som höjer baspoängen mest. Låg så behöver attackeraren åtkomst till grundläggande användarfunktioner, eller så är attackeraren begränsad till icke känsliga resurser. Det som sänker baspoängen mest är alternativet hög, attackeraren behöver då ha privilegier som ger en betydande kontroll över den sårbara komponenten, till exempel administrativa privilegier. (First, 2019) Användarinteraktion Om attackeraren behöver en separat användare eller användarinitierad process för att utföra attacken så sänks baspoänget. I andra fallet så kan attackeraren angripa sårbarheten efter sin egen vilja. (First, 2019) Omfattning Omfattningen av en sårbarhet kan vara förändrad eller oförändrad. Om omfattningen är förändrad så kan en attackerare utnyttja resurser utanför den sårbara komponentens säkerhetsmyndighet. En säkerhetsmyndighet kan till
6
exempel vara en applikation, ett operativsystem eller firmware som definierar och upprätthåller åtkomstkontroll i termer av hur vissa ämnen / aktörer kan komma åt vissa begränsade objekt. Sårbarheten kan ha andra komponenter som tillhandahåller funktionalitet, de kommer då att ingå i sårbarhetens säkerhetsomfång, även om dessa andra komponenter har en egen säkerhetsmyndighet. Detta kommer att resultera i att baspoänget kommer att öka tillskillnad om omfattningen skulle vara oförändrad (First, 2019). Konfidentialitet, tillgänglighet och integritet är viktiga delar i alla digitala system. Confidentiality, integrity och availability (CIA) är en känd säkerhetsmodell som generellt används inom informationssäkerhet. Modellen syftar till att vägleda organisationer genom att belysa de mest centrala delarna en verksamhet bör fokusera på för att hålla känslig information skyddad. CVSS poängsätter CIA genom mätvärdena hög, låg och ingen. Nedan följer en beskrivning om vad dessa innebär. Konfidentialitet
• Hög så kommer alla de resurser inom den sårbara komponenten att lämnas till angriparen, vilket är en total förlust av konfidentialitet.
• Låg så kan attackeraren få tillgång till en viss begränsad information, men attackeraren kan inte kontrollera vilken information som erhålls.
• Ingen så finns det ingen förlust av konfidentialitet i den sårbara komponenten.
Integritet
• Hög så har attackeraren möjlighet att ändra exempelvis filer som skyddas av den sårbara komponenten.
• Låg är modifiering av data möjligt men modifieringen har inte en allvarlig inverkan på den sårbara komponenten.
• Ingen så finns det ingen förlust av integritet i den sårbara komponenten. Tillgänglighet
• Hög så finns en total förlust av tillgänglighet, vilket resulterar i att angriparen helt kan neka tillgång till resurser i den påverkade komponenten
• Låg så finns det ingen direkt, allvarlig konsekvens för den påverkade komponenten. Men en attackerare kan minska prestandan eller skapa ett avbrott i resurstillgången.
• Ingen så finns det ingen inverkan på tillgängligheten i den sårbara komponenten
2.2 Common weakness enumeration
Common weakness enumeration (CWE) är en samhällsutvecklad lista över vanliga typer av mjukvara och hårdvara som har svagheter. Svagheter är brister, fel, buggar, sårbarheter eller andra fel i implementering av programvara, hårdvara, kod, design eller arkitektur som om den inte blir adresserad kan leda till att system, nätverk eller hårdvara är sårbara för attacker (Mitre, 2019a). På CWE webbplats (Mitre, 2020e) finns det möjligheten att använda olika hierarkiska representationer
7
för att enklare navigera sig i en lista av sårbarheter utifrån en viss synvinkel. Det kan vara programutvecklingsrepresentationen som grupperar svagheter kring koncept som ofta används eller stöter på i mjukvaruutveckling. Eller Forskningskonceptpresentation som underlättar forskning om svaghetstyper och organiserar objekt efter beteenden med flera nivåer av abstraktion. I Analysen har dessa olika nivåer av abstraktion används från Forskningskonceptpresentation, för att klassificera sårbarheterna till så nära som möjligt, samma nivå av abstraktion. De olika abstraktionsnivåerna i Forskningskonceptpresentation visar en graf med ett träd liknande förhållanden där pelare, klasser, basnivå, variant, kedja och komposit beskriver de olika nivåerna. Pelare är svagheter som beskrivs på det mest abstrakta sättet. Klasser är också mycket abstrakt beskrivna och oftast oberoende av ett specifikt programmeringsspråk eller teknik. Basnivå används för att beskriva en mer specifik typ av svaghet. Variant beskriver svagheten på en mycket låg detaljnivå, oftast begränsad till ett visst språk eller teknik. En kedja är en uppsättning av svagheter som måste kunna nås i följd för att skapa en utnyttjbar sårbarhet. komposit är en uppsättning av svagheter som alla måste vara närvarande samtidigt för att skapa en utnyttjbar sårbarhet. Nedan beskrivs de 15 flest förekommande sårbarheterna från analysen av typen klass eller pelare, med rankad numrering och ID. Sårbarheter som är av typ basnivå kommer att beskrivas om de representerar en större andel en 10 % av alla sårbarheter i datasetet. Övriga sårbarheter på basnivå presenteras med CWE ID och namn under respektive klass/pelare. Information om respektive sårbarhets kategori har hämtats från MITRE (Mitre, 2020g). 1. CWE-74: Improper Neutralization of Special Elements in Output Used by a
Downstream Component ('Injection'). CWE-74 är en klass som beskriver flera typer av injektions problem. Problemet kommer ifrån att programvaran brister i verifieringen av indata, som är användarkontrollerat. Det betyder att användare kan ändra utförandet av en process genom att skicka exekverbar kod till en egentlig legitim datakanal. CWE-79: Cross-site Scripting (XSS). Det finns tre typer av XSS, reflekterad XSS, lagrad XSS och dom-Baserad XSS. Reflekterad XSS inträffar när en angripare inkluderar skadlig kod i en URL som sedan görs publik eller skickas direkt till ett offer via exempelvis mejl. Om offret öppnar länken kommer den skadliga koden att reflekteras i webbläsaren som nu visar ett felaktigt innehåll. CWE-89: SQL Injection. En angripare kan modifiera ett SQL-kommando så att det infogar ytterligare uttalanden som påverkar databasen. Det kan också användas för att ändra frågelogiken för att kringgå säkerhetskontroller. Detta går att utföra om programvaran inte neutraliserar eller felaktigt neutraliserar specialelement. CWE -78: OS Command Injection, CWE-77: Command Injection, CWE-88: Argument Injection, CWE-91: Blind XPath Injection, CWE-94: Code Injection, CWE-113: HTTP Response Splitting, CWE-75: Special Element Injection, CWE-99: Resource Injection, CWE-93: CRLF Injection, CWE-943: Improper Neutralization of Special Elements in Data Query Logic, CWE-90: LDAP Injection.
8
2. CWE-119: Improper Restriction of Operations within the Bounds of a Memory
Buffer. Mjukvaran utför operationer på en minnesbuffert, men den kan läsa från eller skriva till en minnesplats som ligger utanför den avsedda gränsen för bufferten. Det kan göra att läs eller skrivoperationer utförs på minnesplatser som ej är avsedda för de operationerna. Det kan vara andra variabler, datastrukturer eller interna programdata som utnyttjas. Detta är möjligt då vissa språk tillåter direkt adressering av minnesplatser, men automatiskt inte garanterar att de är giltiga. CWE-125: Out-of-bounds Read. En angripare skulle kunna läsa känslig information eller orsaka en krasch. Detta har att göra med att mjukvaran läser data förbi slutet eller före början av den avsedda bufferten. Det kan göras vi avsaknad av en vaktpost som ska stoppa läsoperationen om den går utanför gränserna. fler specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-787: Out-of-bounds Write, CWE-120: Classic Buffer Overflow, CWE-824: Access of Uninitialized Pointer, CWE-123: Write-what-where Condition.
3. CWE-200: Exposure of Sensitive Information to an Unauthorized Actor. CWE-
200 är en klass som beskriver flera typer av sårbarheter, som på något sätt exponerar känslig information till någon som saknar behörigheten. Beroende på vilket sammanhanget i vilket produkten arbetar i, typ av känslig information och vilka fördelar det kan ge en angripare, så varierar allvarlighetsgraden mycket i den här sårbarheten. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-532: Insertion of Sensitive Information into Log File, CWE-203: Observable Discrepancy, CWE-209: Generation of Error Message Containing Sensitive Information, CWE-538: Insertion of Sensitive Information into Externally Accessible File or Directory.
4. CWE-20: Improper Input Validation. Den här klassen beskriver sårbarheter om produkter som inte validerar eller felaktigt validerar indata. Det kan ha en påverkan på ett programs styr eller dataflöde. Om produkten felaktigt validerar indata så kan en angripare producera indata som applikationen inte förväntar sig. Det kan leda till tillfällig exekvering av kod eller att angriparen får kontroll över en resurs. Mer specifikt beskriven sårbarhet från analysen som är kopplade till denna klass är: CWE-129: Improper Validation of Array Index.
5. CWE-287: Improper Authentication. När en aktör påstår sig ha en viss identitet, bevisar inte programvaran eller bevisar inte tillräckligt att påståendet är korrekt. CWE-295: Improper Certificate Validation En angripare skulle kunna störa kommunikationsvägen mellan en värd och klient och på så sätt förfalska en betrodd enhet. Detta är möjligt om programvaran inte validerar eller felaktigt validerar ett certifikat. Fler specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är:CWE-798: Use of Hard-coded Credentials, CWE-522: Insufficiently Protected Credentials, CWE-290: Authentication Bypass by Spoofing, CWE-294: Authentication Bypass by Capture-replay, CWE-306:
9
Missing Authentication for Critical Function, CWE-307: Improper Restriction of Excessive Authentication Attempts, CWE-521: Weak Password Requirements, CWE-640: Weak Password Recovery Mechanism for Forgotten Password, CWE-297: Improper Validation of Certificate with Host Mismatch, CWE-321: Use of Hard-coded Cryptographic Key, CWE-288: Authentication Bypass Using an Alternate Path or Channel, CWE-257: Storing Passwords in a Recoverable Format, CWE-603: Use of Client-Side Authentication.
6. CWE-264: Permissions, Privileges, and Access Controls. Sårbarheter i denna kategori är relaterade till hantering av behörighet, rättigheter och andra säkerhetsfunktioner för att genomföra åtkomstkontroll. CWE-264 är egentligen en kategori som inte ska beskriva en sårbarhet, trots det används den ofta mot CWE vägledning om att inte göra det.
7. CWE-672: Operation on a Resource after Expiration or Release. När en resurs
har gått ut, återkallats eller precis släppts använder mjukvaran åtkomst till, eller på annat sätt opererar på resursen. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-415: Double Free, CWE-416: Use After Free, CWE-413: Improper Resource Locking, CWE-613: Insufficient Session Expiration.
8. CWE-345: Insufficient Verification of Data Authenticity. Informationens
ursprung eller äkthet verifieras inte tillräckligt av mjukvaran, ogiltiga data kan då accepteras. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-346: Origin Validation Error, CWE-347: Improper Verification of Cryptographic Signature, CWE-352: Cross-Site Request Forgery (CSRF), CWE-354: Improper Validation of Integrity Check Value, CWE-924: Improper Enforcement of Message Integrity During Transmission in a Communication Channel.
9. CWE-284: Improper Access Control. När programvaran inte kan bevisa en persons identitet, se till att den personen har tillgång till rätt resurs eller att spåra de aktiviteter som utfördes, så kan en angripare äventyra säkerheten. Angriparen skulle kunna få privilegier, läsa känslig information, utföra kommandon och undvika upptäckt. Sårbarheten är av abstraktionsnivå pelare och har inga sårbarheter på klass eller basnivå kopplade till sig.
10. CWE-706: Use of Incorrectly Resolved Name or Reference. En resurs kan
kommas åt som inte ligger I det avsedda Kontrollerade området. Det kan göras om programvaran felaktigt använder ett namn eller en referens som pekar mot en resurs utanför det kontrollerade området. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-178: Improper Handling of Case Sensitivity, CWE-22: Path Traversal, CWE-59: Link Following
11. CWE-682: Incorrect Calculation. Resultaten av en felaktig beräkning skulle
kunna leda till att skyddsmekanismer inte fungerar som de ska eller att kod kan
10
exekveras. Detta skulle kunna inträffa om programvaran använder felaktiga eller oavsiktliga resultat i säkerhetskritiska beslut. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna pelare är: CWE-131: Incorrect Calculation of Buffer Size, CWE-190: Integer Overflow or Wraparound, CWE-191: Integer Underflow, CWE-193: Off-by-one Error, CWE-369: Divide By Zero.
12. CWE-610: Externally Controlled Reference to a Resource in Another Sphere. En resurs som ligger utanför det avsedda kontrollområde kan frigöras, då produkten använder en referens eller ett externt kontrollerat namn. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-1021: Improper Restriction of Rendered UI Layers or Frames, CWE-384: Session Fixation, CWE-601: URL Redirection to Untrusted Site, CWE-611: Improper Restriction of XML External Entity Reference, CWE-918: Server-Side Request Forgery, CWE-441: Unintended Proxy or Intermediary.
13. CWE-754: Improper Check for Unusual or Exceptional Conditions. En angripare skulle kunna utlösa ovanliga förhållanden som programmeraren har antagit aldrig kommer att inträffa. Det kan exempelvis handla om låga minnesförhållanden, felaktiga klienter/komponenter eller brist på tillgång till resurser på grund av restriktiva behörigheter. Angriparen kan då införa instabilitet, felaktiga beteenden eller en sårbarhet. Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-252: Unchecked Return Value, CWE-273: Improper Check for Dropped Privileges, CWE-476: NULL Pointer Dereference.
14. CWE-399: Resource Management Errors. Svagheter i denna kategori är relaterade till felaktig hantering av systemresurser.
15. CWE-400: Uncontrolled Resource Consumption. En angripare skulle kunna
förbruka alla tillgängliga resurser, vilket skulle förhindra giltiga använder åtkomst till programvaran. Det skulle kunna åstadkommas av en angripare om antalet eller storleken på begränsade resurser inte kontrolleras. Exempel på begränsade resurser är minne, filsystemlagring och central processing unit (CPU). Mer specifikt beskrivna sårbarheter från analysen som är kopplade till denna klass är: CWE-770: Allocation of Resources Without Limits or Throttling, CWE-920: Improper Restriction of Power Consumption, CWE-774: Allocation of File Descriptors or Handles Without Limits or Throttling.
11
3 METOD
I det här kapitlet kommer det redogöras vilken metod som har använts och hur datainsamling och bearbetningen av data har gått till.
3.1 Metodansats
Projektidén har arbetats fram tillsammans med trafikverket innan några litteraturstudier har gjorts i ämnet. Litteraturstudiens syfte har då varit att ge en större förståelse kring ämnet och en helhetsbild av vad för tidigare forskning inom CVE som har gjorts. De vetenskapliga publikationerna är inhämtade från IEEE Xplore och Google Scholar. För att hitta relevanta publikationer och aktuella referenser har följande ämnesord använts: ”Common vulnerabilities and exposure”, ”Common vulnerabilities and exposure analysis”, ” security vulnerabilities analysis” och ”Trend analysis of CVE”. En stor del av arbetet har handlat om inläsning på de produkter som använts i projektet, all den informationen har hämtats från produkttillverkarens egen dokumentation. Tidigare forskning kring att identifiera trenden av sårbarheter är idag av inaktuella data. Den här uppsatsen syftar till att uppdatera tidigare forskning med nyare data, men även gå in på vilka produktförsäljarna är som står för största andelen av varje enskild sårbarhet. För att besvara frågeställningen har en kvantitativ dataanalys använts.
3.2 kvantitativ dataanalys
I denna studie används en kvantitativ dataanalys, enligt Oates (2005) definition. Kvantitativdata menas data, eller bevis, baserat på nummer. Kvantitativdata är den huvudsakliga data som genereras utav experiment och undersökningar. Men kan genereras utav andra forsknings strategier också. Idén är att försöka hitta mönster i data som samlats in och dra slutsatser. Det finns ett flertal olika tekniker för att analysera data, beroende på hur stor omfattning av data som ska analyseras så måste rätt teknik användas för att få ut trovärdiga data. I en kvantitativ dataanalys kan det finnas flera olika sorters data, i denna studie förekommer det nominaldata, ordinaldata och data från en kvotskala. Det är viktigt att veta skillnaden på dessa datatyper, då olika analystekniker passar till olika datatyper (Oates, 2005). Nominaldata Nominaldata är en typ av kvalitativa data som endast kategoriserar data utan att ge de olika kategorierna någon inbördes ordning. Nominaldata räknas till den svagaste formen av kvalitativa data då minst antal operationer går att utföra, typvärdet kan endast användas. (Lantz, 2015) Ordinaldata Ordinaldata är en typ av kvalitativa data som beskriver kategorier som det finns en inbördes (rang) eller ordning. Just möjligheten att rangordna gör att det finns
12
operationer som kan utföras på ordinaldata som inte är möjliga på nominaldata. Skillnaden jämfört med nominaldata är att centraltendensen för en datamängd förutom typvärdet även kan beskrivas med dess medianvärde. Eftersom mätpunkterna saknar matematisk betydelse går medelvärdet ej att räkna ut. (Lantz, 2015) Kvotskala Kvotskala kommer från en kvantitativ skala och har en absolut noll punkt. Kvantitativa data kan beskrivas med medelvärde, median och typvärde. Eftersom variabelvärdena representerar kvantiteter kan de alltså alltid adderas och subtraheras, vilket som krävs för att beräkna deras medelvärde. Eftersom det existerar en absolut noll punkt så går det även att utföra division. (Lantz, 2015) 3.3 Datainsamling
Data som har använts i analysen är hämtad från NVD (Nist, 2020c) och innehåller detaljerad information om varje CVE från 2016–2019. Över de 4 åren fanns det totalt 58,679 sårbarheter registrerade. Datasetet från Common Weakness Enumeration (CWE) (Mitre, 2019b) laddades hem och länkades ihop med NVD databasen för att få information om varje sårbarhets typ.
3.3.1 Bearbetning av data
All data som är tillgänglig att ladda hem från NVD är sorterad från CVE-2002 till CVE-2020. Året i CVE identifieraren representerar det år som ett ID vart tilldelat sårbarheten eller det år som sårbarheten vart publicerad. För att få med all data som publicerats mellan åren 2016–2019 laddades all data hem. Det gjordes för att inte missa sårbarheter som har blivit tilldelade ett CVE ID flera år innan de blivit publicerade. Formatet på den data som laddades hem var i JSON format, det konverterades till CSV format för att enkelt bearbetas i Python biblioteket Pandas. Datasetet bestod då av sex kolumner, vilka var cve_number, configurations, cve, impact, lastModifiedDate och publishedDate. Configurations, cve och impact innehöll nästlade JSON objekt som viktig information för analysen har plockats ur och lagts i separata kolumner. I kolumnen configurations fanns det information om vilken produktägaren är samt vilken produkt som är påverkad av sårbarheten. Informationen plockades ut och lades i två nya kolumner, Affected_vendor och Affected_vendor_details. I kolumnen impact fanns all information om sårbarheten som räknats ut av CVSS, all den data lades i separata kolumner. I kolumnen cve plockades CWE ID ut och lades i en separat kolumn för lättare åtkomst. Datasetet från CWE hade formatet CSV när det laddades hem och kunde då enkelt sammanfogas med NVD datasetet. Det gjordes via CWE ID som tidigare hade plockats ur från kolumnen cve, vilket skapade ytterligare två kolumner CWE_Name och CWE_Description. I Teoridelen 2.2 beskrevs det hur sårbarheter delas in i olika kategorier med olika nivå av abstraktion av förklaring. I datasetet var det en blandning av alla dessa kategorier, vilket väldigt mycket manuellt arbete har lagts ner för att få iordning på. Analysen skulle kunna bli missvisande om en sårbarhet som beskrivs på det mest abstrakta sätt jämförs med en annan sårbarhet som
13
beskrivs mer specifikt. Zimmermann & Neuhaus (2010) beskriver problemet med att CWE är alldeles för detaljerat, det är för många klassifikationer av sårbarheter som blir överväldigande för personen som skapar en CVE. På grund av det tilldelas ofta en sårbarhet ett CWE ID med en mer abstrakt förklaring. Exempel på en abstrakt beskriven sårbarhet är ”Range Error” (Mitre, 2020a) som beskriver flera typer utav buffertöverskrivningar. Arbetet i datasetet har gått ut på att hitta de mer specifikt beskrivna sårbarheterna som exempelvis ”XML Injection” (Mitre, 2020b) som specifikt beskriver XML injektion. Om ytterligare en specifikt beskriven sårbarhet hittats i datasetet, som ingår i samma klass som ”XML Injection” så som ”CRLF injection” (Mitre, 2020c) hade dessa fått representeras av sin närmst tillhörande klass, i detta fall ”injection” (Mitre, 2020d). Resultatet blir att vissa sårbarheter blir mer grovt sorterade, men det bidrar till att de mer specifikt beskriva sårbarheterna inte försvinner i mängden av registrerade sårbarheter beskrivna på klassnivå. De sårbarheter som är specifikt beskrivna kommer att analyseras inom klassen, om de utgör en större andel av sårbarheterna inom klassen. Under bearbetningen av datasetet hittades en del null värden i vissa kolumner, de visade sig vara sårbarheter med status rejected, de har alltså blivit avvisade, ofta var anledningen ”CNA eller individ som begärde denna kandidat associerade den inte med någon sårbarhet”. Alla dessa rader togs bort och datasetet hamnade då på 50 584 rader. Eftersom analysen endast kommer att behandla sårbarheter uträknat med CVSS version 3.0 och uppåt, har alla rader uträknat med endast tidigare versioner tagits bort. Slutliga datasetet hamnade på 50 523 rader. Alla kolumner som inte kommer att komma till användning under analysen har tagits bort, det är kolumner som redan viktig data har extraherats från och kolumner med en äldre version av CVSS än 3.0. Hela kolumnlistan presenteras i bilaga A. Innan all data är redo för analys har den delats upp i olika data set, för att data till de forskningsfrågor som analysen ska besvara ska vara lätt att komma åt. Dataseten som all data har delats upp i är: Årtal 2016–2019. Låg, Medium, Hög och kritisk baserat på de allvarlighetsgraden satt av CVSS. Påverkan av konfidentialitet, integritet och tillgänglighet, graderna av påverkan är uppdelade i ingen, låg och hög. För att komma fram till de 15 flest förekommande sårbarheterna har kolumnen CWE_Catagory använts med funktionen value_counts på hela datasetet. CWE_Catagory innehåller namnet på alla sårbarhetstyper som CWE har listat. value_counts ingår i pandas biblioteket och returnerar ett objekt som innehåller antalet av varje unikt värde i en sorterad ordning. De topp 15 som value_counts returnerar har sedan lagt till i en Python lista för analys och vidare användning. Tillsammans med dataseten för varje årtal och python listan, har de flest förekommande produktägarna tagits fram genom kolumnen affected_vendor med funktionen value_counts. Ett medelpoäng har sedan räknats ut för varje sårbarhet i Python listan med hjälp av kolumnen baseMetricV3.cvssV3.baseScore som är allvarlighetsgraden tilldelat av CVSS. Allvarlighetsgraden för varje sårbarhet summerades och delades på antalet sårbarheter. Dataseten konfidentialitet,
14
integritet och tillgänglighet har för varje årtal använts med listan över de 15 mest förekommande sårbarheterna, för att i procent få fram hur dessa påverkat varje sårbarhet över ett år. För att få fram procenten har frekvensen av det kvalitativa mätvärdet hög delats med den totala frekvensen av hög, låg och ingen för varje sårbarhet och år. Likadant har gjort med mätvärdena låg och ingen.
15
4 ANALYS
I det här kapitlet kommer analysen utav sårbarheterna från NVD att presenteras.
4.1 frekvensen av sårbarheter årsvis
Fig. 1 visar trenden av sårbarheter
distribuerade årsvis. En tydlig ökning
visas mellan de 4 åren. Från 2016–2019
ökade sårbarheterna med hela 200,53 %.
Tydligaste ökningen är mellan åren 2016–
2017 där sårbarheterna ökade med 129,54
%. Den stora ökningen kan bero på många
faktorer, det kan vara att fler sårbarheter
hittas för att ett större fokus har lagts ner
på att hitta dem. Samtidigt skrivs mer och
mer mjukvara hela tiden.
4.2 allvarlighetsgraden årsvis
Fig. 2 visar allvarlighetsgraden uppdelat i
låg, medium, hög och kritisk. Hög står för
den största andelen av sårbarheterna
genom alla åren, 2018 har den nått sin topp
och börjar sedan dala ut mot 2019.
Samtidigt som allvarlighetsgraden hög
sjunker från 2018 så ökar medium i nästan
precis samma takt. Allvarlighetsgraden
kritisk har försiktigt rört sig upp och ner
genom åren och har totalt sjunkit 1,56
procentenheter från 2016–2019. Låg som
står för den minsta andelen utav
sårbarheterna har sakta fallit från 2016–2018 och har sedan ökat med 0,74
procentenheter.
4.3 Konfidentialitet, Integritet och tillgänglighet hög
Fig. 3 visar i procent när konfidentialitet,
integritet och tillgänglighet är alla som mest
utsatta, graden av påverkan är hög. Det
lägsta baspoäng som en sårbarhet kan ha när
dessa tre är som mest utsatta är 6.0, vilket
motsvarar allvarlighets kategori medel och
uppåt. Mellan 2016 och 2017 syns en liten
och den enda ökningen mellan de fyra åren.
Från 2017–2019 minskar den här typen av
sårbarheter med ≈ 1,77 procentenheter per
år. Totalt sker en minskning av 3,16
procentenheter.
Figur 1 Totalt antal sårbarheter per år
Figur 2 Procent av allvarlighetsgrad
Figur 3 Konfidentialitet, Integritet och
tillgänglighet hög
16
4.4 Konfidentialitet, Integritet och tillgänglighet
Fig. 4, 5 och 6 visar andelen av ingen, låg och hög påverkan av integritet,
tillgänglighet och konfidentialitet.
Hög påverkan
Hög påverkan står för den största andelen genom
alla åren på både Konfidentialitet, tillgänglighet
och integritet. 2017 hade hög påverkan sin topp
både hos konfidentialitet och tillgänglighet,
sedan har båda minskat 0,88 respektive 8,58
procentenheter. Hög påverkan av integritet har
gått upp och ner mellan åren, totalt har den gått
ner 1,78 procentenheter.
Låg påverkan
Tillgänglighet står för den minsta andelen av låg
påverkan genom alla åren. Från 2016–2019 har
den sjunkit med 1,84 procentenheter ner till
1,55%. Integritet med låg påverkan har i snitt ökat
med ≈1,48 procentenheter varje år, med en total
ökning på 4,43 procentenheter. Låg påverkan av
konfidentialitet har från 2016–2017 minskat
något, för att sedan fram till år 2019 öka med 2,99
procentenheter.
Ingen påverkan
Jämfört mot integritet och tillgänglighet har
konfidentialitet den lägsta andelen av ingen
påverkan genom alla åren. Mellan 2016–2019 har
den sakta gått ner, totalt 2,1 procentenheter till
20,64%. Ingen påverkan av integritet har rört sig
upp och ner mellan åren, mestadels ner. Mellan
2017–2018 rörde den sig som mest och gick ner
3,72 procentenheter, totalt har den gått ner 2,65
procentenheter. Tillgängligheten är den enda som har ökat utav ingen påverkan.
Mellan 2017–2018 sker den största ökningen, 6,29 procentenheter. Totalt har
ingen påverkan av tillgänglighet ökat med 9,18 procentenheter.
4.5 Topp 15 sårbarhetsklasser/pelare
Fig. 7 visar i procent, skillnaden på fördelningen av de 15 mest förekommande
sårbarhetsklasser/pelare mellan 2016–2019. Dessa står för 86,35% av alla
sårbarheter. Injektion, buffertöverskridningar och exponering av känslig
information för en obehörig aktör står för lite mer än 55% av sårbarheterna.
Figur 6 Integritet
Figur 5 Tillgänglighet
Figur 4 Konfidentialitet
17
Nedanför analyseras var och en av sårbarheterna presenterade i figur 7. Analysen
inkluderar:
• de 5 produktägare som sårbarheten mest frekvent förekommer hos för
varje år, presenteras i procent av antal sårbarheter för produktägaren i
klassen/pelaren.
• Hur sårbarheten utvecklats per år.
• Hur påverkan är av konfidentialitet, integritet och tillgänglighet.
• Ett medelvärde av allvarlighetsgraden utifrån CVSS baspoäng mellan 2016–
2019.
I bilaga B visas en mer detaljerad tabell av frekvensen utav topp 15
sårbarhetsklasser/pelare och dess sårbarheter beskrivna på basnivå.
Konfidentialitet, integritet och tillgänglighet beskrivs ofta med en medelprocent
för att påvisa den genomsnittliga påverkan över de 4 åren. I vissa fall har en
standardavvikelse räknats ut för att visa spridningen av talet, det har betecknats
med gemenen utav sigma symbolen σ. Bilaga C innehåller tabeller för varje
sårbarhet som uträkningarna har gjort på.
CWE-74: Injection är den sårbarhetsklassen som förekommer mest mellan åren
2016–2019. Den här klassen har ökat varje år sedan 2016, totalt 9,7
procentenheter. De flesta sårbarheterna i den här klassen är registrerade på
basnivå, vilket skiljer sig mycket från många andra sårbarhetsklasser. Till en stor
del av injektionssårbarheterna blir konfidentialitet negativt påverkad, då viktig
information kan läckas ut. Dataintegriteten blir också ofta påverkad, då data som
skickas in är alltid för dataåterkallande eller för skrivning. [18] ingen påverkan av
konfidentialitet har endast en medelprocent på 1,99 % med σ 0,7, för integriteten
Figur 7 Topp 15 sårbarhetsklasser/pelare
18
är denna siffra ännu lägre, 1,8 % med σ 0,2. Den största andelen av konfidentialitet
och integritet är av låg påverkan. Tillgängligheten är sällan påverkad, med en
medelprocent på 68,2 % har klassen ingen påverkan alls. XSS sårbarheter är med
stor marginal den mest vanligaste i den här klassen, sedan 2016 har XSS
sårbarheter ökat med 5 procentenheter fram till 2019. Efter XSS kommer SQL-
injektion som 2017 var procentuellt störst och har sedan sjunkit fram till 2019 med
0,73 procentenheter. I tabell 2 visas de fem mest förekommande
produkttillverkarna som injektions sårbarheter existerat i. Utav de totalt 2864
produkttillverkarna genom åren så har IBM stått för den största delen av injektions
sårbarheterna. År 2019 så gick Cisco om IBM och stod det året för den största
andelen. Distributionen av sårbarheter hos produkttillverkarna har blivit mer och
mer fördelad för varje år, produktägaren ledande 2019 står endast för 3,73 %
fördelat på 1366 produktägare och 3647 sårbarheter. Allvarlighetsgraden för den
här klassen har ett snitt på 6,87.
Tabell 2 Topp 5 produkttillverkare för CWE-74
Årtal Totalt anatal produkt ägare Topp 5 produktägare
Här presenteras det resultat som i analysen har tagits fram och har till syfte att
besvara de formulerade frågeställningarna.
Hur ser trenden ut av de flest förekommande sårbarheterna? Det första huvudresultatet visas i tabell 17 som är en sammanställning av de 15 analyserade sårbarheternas trend för varje år i procentenheter. 5 av de 15 sårbarheter analyserade har gått upp och ner med åren men har totalt ökat procentuellt från 2016–2019. CWE-74, CWE-345 och CWE-400 har däremot ökat varje år sedan 2016. Av de resterande 7 sårbarheter som mellan 2016–2019 visat på en positiv trend och minskat är det bara CWE-200 som för varje år har sjunkit. Cross-site scripting (XSS) står för lite mer än hälften av sårbarheterna i klassen CWE-74 och har visat på en negativ trend genom alla åren. Från 2016–2017 ökade XSS som mest och ökade med tre procentenheter, vilket är 213,65 % från året innan. Fram till 2019 ökade XSS totalt med fem procentenheter. 87,4 % av alla sårbarheter i CWE-345 har blivit registrerade som cross-site request forgery (CSRF). Totalt sett står CSRF för en liten andel av alla sårbarheter, som mest år 2019, 3,06 %. Från 2016–2017 ökade CSRF med en procentenhet, vilket är 292,5 % från året innan. Totalt har CSRF ökat med 1,65 procentenheter. Tabell 17 Förändring av sårbarheter 2016–2019 i procentenheter
Hur ser trenden ut av produktförsäljare med flest sårbarheter? Tabell 18 visar en sammanfattning av de fem mest förekommande produktägare, för varje år visas det hur stor andel produktägarna representerar av de 15 analyserade sårbarheterna. Google och IBM visar på en positiv trend och är de enda produktägarna som minskat sin andel sårbarheter varje år sedan 2016. Microsoft, Cisco och Apple har minskat varje år fram till 2018. Majoriteten av Microsoft, Google och Apples sårbarheter är av typen CWE-119. Av Apples sårbarheter så är hela 50,1% av typen CWE-119, Microsoft och Google har 41,7 % respektive 31,1 % av sårbarhetsklassen registrerad. IBM och Ciscos största andel är av sårbarheten CWE-74, klassen står för 34,5 % av IBM:s sårbarheter och 23,6 % av Ciscos sårbarheter. Trenden för de 5 största produktägarna visar på att sårbarheterna blir utspridda över fler och fler produktägare för varje år fram till 2018. År 2016 fanns det totalt 497 unika produktägare över hela datasetet, 2017 ökade den siffran till 2100, år 2018 till 3390 och år 2019 sjönk antalet produktägare till 3125. Tabell 18 Topp 5 produktägares andel av sårbarheter 2016–2019
2016 2017 2018 2019
Microsoft 11,7 8,9 7,5 10,6
Google 10,6 5,3 5,2 4,9
IBM 6,4 5,1 3,9 2,7
Cisco 6,5 3,5 2,7 3,4
Apple 5,4 4,6 1,2 3,3
Hur ser trenden ut utifrån allvarlighetsgraden kopplad till sårbarheter? nio av de 15 analyserade sårbarheterna har en medelallvarlighetsgrad som ligger i den kvalitativa sårbarhetsgraden hög, av de nio så har sex ökat och tre minskat procentuellt mellan åren 2016–2019. De sex som ökat står totalt för 27,7 % och de tre som minska står för 30,3 % av de analyserade sårbarheterna. Hög allvarlighetsgrad står för den största andelen av sårbarheterna och har fram till år 2018 ökat från 43,64 % till 45,7 %, och har sedan fram till 2019 sjunkit till 42,16 %. Resterande sex sårbarheter har en medelallvarlighetsgrad som ligger i kategorin medel, men de flesta ligger precis på gränsen till hög. Två har ökat och fyra har minskat i sin procentuella andel av sårbarheterna. De två som ökat har en andel på 24 % och de fyra som minskat har en andel av 18 %. Kurvan för medel har gått upp och ner mellan åren, totalt har den ökat med 4,15 procentenheter. Det här visas tydligt i figur 2 från analysen där kategorin hög och medel går upp och ner mellan åren men totalt har hög allvarlighetsgrad minskat och medel har ökat.
29
Hur ser trenden ut av påverkan utav konfidentialitet, integritet och tillgänglighet? Påverkan av tillgänglighet visar på en positiv trend, ingen påverkan har ökat varje år sedan 2016, totalt 9,18 procentenheter. År 2016 och 2017 var hög påverkan av tillgänglighet som mest utsatt av alla sårbarheter, efter det har hög påverkan sjunkit nästan i samma takt som ingen påverkan ökat. Konfidentialitet och integritet har båda minskat sin andel av ingen påverkan, låg påverkan har istället ökat i båda fallen. Sårbarheter med konfidentialitet, integritet och tillgänglighet alla satt till hög visar på en positiv trend. Från 2016–2017 ökade de något men efter det har de sjunkit varje år, totalt 4,16 procentenheter.
30
6 DISKUSSION
Nedan följer en diskussion av metodval, frågeställning, hur avgränsningar har påverkat slutresultatet och en jämförelse av resultatet samt förslag om fortsatt forskning.
6.1 Metodval
Vid val av metod är det studiens syfte som avgör vilken metod som är lämpligast. Kvantitativ forskning omfattar information som kan mätas eller värderas numeriskt, och ger möjligheten till en mer helhetsbild av resultatet. En kvalitativ studie har inte den avsikten då en mer djupare förståelse kring en specifik händelse, situation eller ett problem studeras. (Björklund & Paulsson, 2012) Metodvalen som har använts i tidigare analyser för att namnge sårbarheter skiljer sig åt från den här analysen. Chang, Zavarsky, Ruhl & Lindskog (2011) som analyserade CVE från 2007–2010 använde beskrivningen från varje CVE i datasetet för att hitta namnet på sårbarhetstypen. Neuhaus & Zimmermann (2010) analyserade alla sårbarheter fram till 2009 och använde latent Dirichlet-allokering (LDA) som är en typ av maskininlärning för att ta fram namnet på sårbarhetstypen. Anledning till de olika metodvalen för att ta fram namnet på sårbarheten är dels för att CWE inte var lika etablerat som nu, dels att sårbarheterna blir för grovt sorterade. I den här analysen har alla sårbarheter haft ett CWE-ID kopplat till sig, och endast fyra av de topp 15 sårbarheter har blivit grovt sorterade. Med grovt sorterade menas att större delen av sårbarheterna har blivit registrerade på klassnivå. Vid en jämförelse av information från dessa analyser visar resultatet på många likheter men också olikheter, vilket inte är konstigt när analyserna idag är äldre än 10 år.
6.2 Avgränsningar
De avgränsningar som valts att göra i den här studien har satts upp dels för att hinna med att besvara studiens frågeställning inom uppsatt tid, dels för att fokusera studien till relevant data. Valet av att begränsa analysen till åren 2016–2019 är för att data tidigare än 2016 innehåller väldigt få sårbarheter uträknat med de senaste versionerna av CVSS version 3.0 eller 3.1. I CVSS version tre och uppåt har allvarlighetsgraden generellt en högre allvarlighetsgrad satt. Det har att göra med att hoten mot säkerheten utvecklas och blir mer och mer avancerade med tiden, hottyper som tidigare vart en olägenhet kan nu ha en större inverkan på en organisation (Santos, 2016). Att avgränsa analysen till version tre eller högre har bidragit till att färre sårbarheter kan analyseras, men det gjordes för att reflektera allvarlighetsgraden som sårbarheterna är utav idag. NVD valdes ut som källa för att analysera CVE, det valet gjordes för att NVD är fullt synkroniserad med CVE-listan (Mitre, 2019b) och tillhandahåller komplett information för att besvara rapportens frågeställning. Hade inte tiden vart lika
31
begränsad så skulle NVD jämförts mot andra sårbarhetsdatabaser för att utvärdera om skillnader. Att avgränsa analysen till de 15 sårbarheter som stod för största andelen av datasetet, gjordes efter att sårbarheter beskrivna på basnivå länkades till sin närmsta klass/pelare. De 15 sårbarhetsklasser/pelare representerar då flera sårbarheter som är beskrivna på basnivå, och täcker totalt 86,35 % av datasetet. Även fast analysen täcker större delen av datasetet har positiva som negativa trender missats, analysen har fokuserat på de sårbarheter som har en större påverkan på samhället idag. Ihop med de analyserade sårbarheterna har topp fem produktägare presenterats för varje unik klass/pelare som står för den största andelen av sårbarheten. Att inkludera fler produktägare i analysen hade inte bidragit till ett annat slutresultat, de presenterades för att ge läsaren en bild av vilka produktägare som har störst problem med en viss typ av sårbarhet. 6.3 Frågeställning
Frågeställningen som har sammanställts för analysen har tagits fram för att speciellt identifiera sårbarhetstrender som möjligtvis kan bli för stora och skapa problem. Allvarlighetsgraden, produktägarna, påverkan av konfidentialitet, integritet och tillgänglighet har analyserats tillsammans med de flest förekommande sårbarheterna. Det har gjorts inte bara för att identifiera sårbarhetstrender, utan också för att kunna koppla hur allvarlig trenden är. Vad blir påverkat, är det konfidentialitet, integritet eller tillgänglighet? Eller blir samtliga påverkade? Vilka är de produktägare som står för dessa sårbarheter? och vad är allvarlighetsgraden? Genom att besvara dessa frågor är tanken att ge så relevant information som möjligt och bidra med ökad kunskap till såväl IT-säkerhetspersonal som allmänheten. Fortsatt diskussion om hur den här kunskapen kan användas fortsätter i kapitel 6.5.
6.4 Resultat
Av de 15 analyserade sårbarheterna så är det fyra som från år 2016 ofta har blivit registrerade på klassnivå, vilka är CWE-119, CWE-200 CWE-20 och CWE-400. Med åren visar en trend på att fler och fler sårbarheter i dessa klasser blir registrerade på basnivå. Om den positiva trenden fortsätter kommer framtida analyser att med större precision visa på sårbarhetstrender, samtidigt göra det lättare vid sårbarhetshanteringsprocesser. Både Neuhaus, et al. (2010) och Chang, et al. (2011) visar på en positiv trend av buffertöverskridningar. CWE-119 som representerar olika typer av buffertöverskridningar har visat på en positiv trend sedan år 2017. Programmeringsspråken C och C++ är de språk som oftast förekommer i den här typen av sårbarhet (Mitre, 2020f). Eftersom C används ungefär lika mycket mellan 2016–2019 och C++ har ökat i användning (Github, 2020) så borde inte den nedåtgående trenden bero på minskad användning av språken. Trenden skulle kunna bero på att programmerare generellt har ett högre säkerhetstänk och är medvetna om de risker när de adresserar och allokerar minnesplatser.
32
SQL-injektioner och XSS är två sårbarheter som ligger under klassen CWE-74. XSS har ökat kraftigt i antal varje år sedan 2016 och är den sårbarheten som står för majoriteten av sårbarheterna i CWE-74. SQL-injektioner ökade med 493% från 2016–2017, efter det har sårbarheten procentuellt minskat varje år fram till 2019. Produktägarna i den här klassen är de som har ökat absolut mest över alla sårbarhetsklasser/pelare för varje år. Den trenden har troligtvis mycket att göra med den snabbt ökade digitaliseringen som pågår i samhället, och har resulterat i sårbarheter när säkerheten inte har prioriterats. Resultat av SQL-injektion och XSS sårbarheter från Chang, et al. (2011) visar på att antalet totalt har sjunkit fram till 2010 medan Neuhaus, et al. (2010) beskriver sårbarheterna som starka och stigande. CWE-119 och CWE-74 är två stora sårbarhetsklasser som innehåller nästan 45 % av de analyserade sårbarheterna, och har därför diskuterats och jämförts var och en mot tidigare forskning. Diskussionen om ökningar och minskningar är baserat på analysen men kommer från egna tankar om möjliga orsaker. 6.5 Fortsatt forskning och konsekvenser av slutsatser
Nya sårbarheter hittas hela tiden och den här typen av trendanalyser kan vara av stor nytta för personer speciellt inom IT och IT-säkerhet men också för allmänheten. Just för att öka medvetenheten i samhället kring vilka sårbarheter som har en stor påverkan på de produkter som används. Det skulle också kunna bidra till att fler tänker på att hålla sin programvara till den senaste säkerhetsuppdateringen. Slutsatserna från den här studien visar på att ett större arbete måste läggas ner på CWE-74 CWE-345 och CWE-400 som för varje år har ökat procentuellt samtidigt som det totala antalet sårbarheter har ökat med hög fart. Det positiva från analysen och som har konsekvens för samhället är trenden för påverkan av tillgänglighet av de sårbarheter som registrerats, vilka har sjunkit sedan 2016. speciellt viktig är tillgängligheten för de samhällskritiska tjänster som samhället förväntar sig ska vara tillgängligt alla dagar året om, utan några som helst avbrott. Lika påverkan av Konfidentialitet, integritet och tillgänglighet med hög påverkan har också visat på en positiv trend och procentuellt minskat sedan 2016. Eftersom sårbarheterna har blivit fler och fler för varje år sedan 2016, var tanken med studien att bygga ett program som automatisk uppdaterar datasetet. Då skulle den senaste sårbarhetstrenden hela tiden vara tillgänglig och uppdaterad, men av tidsbrist har inte det hunnits med. Förslag på framtida forskning är att använda samma metod presenterad i den här analysen, men att ytterligare analysera hur attackvektorn och utnyttjandegrad ser ut för sårbarheterna. Attackvektorn är intressant då den visar på vart ifrån en attack är möjlig, såsom över internet eller om sårbarheten endast är utsatt på det lokala nätverket. Utnyttjandegraden är också intressant, det räknas fram av attackvektorn, attack komplexiteten, behövande privilegier och användarinteraktion och ger en grad på hur enkel och teknisk sårbarheten är att utnyttja. Det skulle kunna bidra med en tydligare bild av vilka sårbarheter som har stor chans att bli utnyttjade av illasinnade aktörer.
33
7 SLUTSATS
I den här rapporten har 50 523 CVE analyserats mellan åren 2016–2019 från NVD för att hjälpa IT-säkerhetspersonal att förebygga och på ett effektivare sätt fokusera på de sårbarheter som är mest aktuella idag. De 15 sårbarheter med störst andel valdes ut för närmare analys och täcker: allvarlighetsgraden, påverkan av konfidentialitet, integritet och tillgänglighet, frekvensen av sårbarheterna årsvis och produktägare. I analysen har några betydande trender tagits fram, vilka är:
• Tre av de 15 mest förekommande sårbarheterna sticker ut med att ha ökat procentuellt varje år sedan 2016, vilka är Injection, Insufficient Verification of Data Authenticity och Uncontrolled Resource Consumption.
• Exposure of Sensitive Information to an Unauthorized Actor har visat på en mer positiv trend och minskat varje år sedan 2016.
• Andelen av sårbarheter med en påverkan av konfidentialitet, integritet och tillgänglighet alla satt till hög har minskat från 2017 med 3,55 procentenheter.
34
8 Källförteckning
Björklund, M & Paulsson, U. (2012). Seminarieboken: att skriva, presentera och opponera. Studentlitteratur AB Chang,Y. Zavarsky, P. Ruhl, R & Lindskog, D. (2011). Trend Analysis of the CVE for Software Vulnerability Management. Hämtad från https://ieeexplore.ieee.org/document/6113298 Cvedetails. (2020). Browse vulnerability by date. Hämtad från https://www.cvedetails.com/browse-by-date.php [Använd 4 maj 2020] Forum of Incident Response and Security Teams. (2005). Common Vulnerability Scoring System v1 Archive. Hämtad från https://www.first.org/cvss/v1/ Forum of Incident Response and Security Teams. (2019). Common Vulnerability Scoring System v3.1: Specification Document. Hämtad från https://www.first.org/cvss/v3.1/specification-document Forum of Incident Response and Security Teams. (2020). Common Vulnerability Scoring System SIG. Hämtad från https://www.first.org/cvss/ Ghaffarian, S & Shahriari, H. (2017). Software Vulnerability Analysis and Discovery Using Machine-Learning and Data-Mining Techniques: A Survey. Hämtad från https://dl.acm.org/doi/pdf/10.1145/3092566 Github. (2020). A small place to discover languages in GitHub. Hämtad 2020-06-04 från https://madnight.github.io/githut/#/pull_requests/2016/1 Internet Engineering Task Force. (2005). Common Format and MIME Type for Comma-Separated Values (CSV) Files. Hämtad från https://www.ietf.org/rfc/rfc4180.txt#page-1 json. (u.å). Introducing JSON. Hämtad från https://www.json.org/json-en.html Lantz, Björn. (2015). Grundläggande statistisk analys. Studentlitteratur Mann, D & Christey, S. (1999). Towards a Common Enumeration of Vulnerabilities. Hämtad från https://cve.mitre.org/docs/docs-2000/cerias.html Mitre. (2017). CVE-Compatible Products and Services. Hämtad från https://cve.mitre.org/compatible/compatible.html Mitre. (2018). Documents, About CWE. Hämtad från https://cwe.mitre.org/documents/glossary/index.html#Category Mitre. (2019a). About CVE. Hämtad från https://cve.mitre.org/about/index.html Mitre. (2019b). CVE and NVD Relationship. Hämtad från https://cve.mitre.org/about/cve_and_nvd_relationship.html Mitre. (2019b). CWE Downloads. Hämtad från https://cwe.mitre.org/data/downloads.html [Använd 1 maj 2020] Mitre. (2020a). Incorrect Access of Indexable Resource ('Range Error'). Hämtad från https://cwe.mitre.org/data/definitions/118.html Mitre. (2020b). XML Injection (aka Blind XPath Injection). Hämtad från https://cwe.mitre.org/data/definitions/91.html Mitre. (2020c). Improper Neutralization of CRLF Sequences ('CRLF Injection'). Hämtad från https://cwe.mitre.org/data/definitions/93.html Mitre. (2020d). Improper Neutralization of Special Elements in Output Used by a Downstream Component ('Injection'). Hämtad från https://cwe.mitre.org/data/definitions/74.html
Mitre. (2020e). CWE List Version 4.0. Hämtad från https://cwe.mitre.org/data/index.html Mitre. (2020f). Improper Restriction of Operations within the Bounds of a Memory Buffer. Hämtad från https://cwe.mitre.org/data/definitions/119.html Mitre. (2020g). Common Weakness Enumeration. Hämtad från https://cwe.mitre.org/ Myndigheten för samhällsskydd och beredskap. (2019). Årsrapport it-incidentrapportering. Hämtad från https://rib.msb.se/filer/pdf/29080.pdf Nationalencyklopedin (u.å). Digitalisering. Hämtad 2020-06-04 från http://www.ne.se/uppslagsverk/encyklopedi/lång/digitalisering Neuhaus, S & Zimmermann, T. (2010) Security Trend Analysis with CVE Topic Models. Hämtad från https://prism.ucalgary.ca/bitstream/handle/1880/48066/2010-970-19.pdf?sequence=1&isAllowed=y National Institute of Standards and Technology. (2020a). Vulnerabilities. Hämtad från https://nvd.nist.gov/vuln National Institute of Standards and Technology. (2020b). NVD Dashboard. Hämtad från https://nvd.nist.gov/general/nvd-dashboard [Använd 4 maj 2020] National Institute of Standards and Technology. (2020c). NVD Data Feeds. Hämtad från https://nvd.nist.gov/vuln/data-feeds [Använd 4 maj 2020] Oates, B. (2005). Researching information systems and computing. London SAGE publications. Oracle. (2020). Database. Hämtad från https://www.oracle.com/database/what-is-database.html Pandas. (u.å) About. Hämtad 2020-06-04 från https://pandas.pydata.org/about/ Positive technologies. (2018). Cybersecurity threatscape, Trends an forecasts. Hämtad från https://www.ptsecurity.com/upload/corporate/ww-en/analytics/Cybersecurity-threatscape-2018-eng.pdf Positive technologies. (2019). Cybersecurity threatscape. Hämtad från https://www.ptsecurity.com/upload/corporate/ww-en/analytics/cybersecurity-threatscape-2019-eng.pdf Python. (u.å). What is Python? Executive Summary. Hämtad 2020-06-04 från https://www.python.org/doc/essays/blurb/ Santos, O. (2016 28 april). The Evolution of Scoring Security Vulnerabilities [Blogginlägg]. Hämtad från https://blogs.cisco.com/security/the-evolution-of-scoring-security-vulnerabilities