Författare : Keun Soo Yim Author: Keun Soo Yim Table Of Links Tabell från vänster Abstrakt I. INTRODUCTION I. Introduktion II. BACKGROUND II. Bakgrund III. DESIGN III. Design Definitioner Design mål ramverk Förlängningar IV. MODELING IV. Modellering klassificera Fakta V. DATA COLLECTION V. Datainsamling VI. CHARACTERIZATION VI. Karaktärisering Sårbarhet som fixar latens Analys av sårbarhet som fixar förändringar Analys av sårbarhetsinducerande förändringar VII. RESULT VII. Resultat N-Fold Validering Utvärdering med hjälp av Online Deployment Mode VIII. DISCUSSION VIII. Diskussion Konsekvenser för flera projekt Implikationer för Android Security Works Hot mot giltigheten Alternativ tillvägagångssätt IX. RELATED WORK IX. Relaterat arbete CONCLUSION AND REFERENCES Slutsats och referenser ABSTRACT Abstrakt Detta papper presenterar ett ramverk som selektivt utlöser säkerhetsöversyner för inkommande källkodsändringar.Fungerar som en granskningsbot inom en kodöversynstjänst, kan ramverket automatiskt begära ytterligare säkerhetsöversyner vid förskottsinlämningstid innan kodändringarna skickas till ett källkodslager.Eftersom utförandet av sådana säkra kodöversyner lägger till kostnader använder ramverket en klassificerare som är utbildad för att identifiera kodändringar med en hög sannolikhet för sårbarheter. Online-klassificeraren utnyttjar olika typer av inmatningsfunktioner för att analysera granskningsmönster, spåra mjukvaruutvecklingsprocessen och utvinna specifika textmönster inom givna kodändringar. Klassificeraren och dess funktioner väljs noggrant och optimeras med hjälp av data från de inlämnade kodändringarna och rapporterade sårbarheterna i Android Open Source Project (AOSP). Utvärderingsresultaten visar att vårt ramverk för sårbarhetsförebyggande (VP) identifierar cirka 80 % av de sårbarhetsinducerande kodändringarna i dataset med ett noggrannhetsförhållande på cirka 98 % och en falsk positiv hastighet på cirka 1,7 %. Vi diskuterar konsekvenserna av att distribuera VP-ramverket i flera projektinställningar och framtida riktningar för Android-säkerhetsforskning.Denna artikel utforskar och validerar vårt tillvägagångssätt för att förutsäga kodförändring-granularity-sårbarhet, vilket erbjuder en förebyggande teknik för programvarasäkerhet genom att på förhand upptäcka sårbara kodförändringar före inlämning. I. INTRODUCTION I. Introduktion De fria och öppen källkod programvara (FOSS) leveranskedjor för Internet-of-Things enheter (t.ex. smartphones och TV) presenterar ett attraktivt, ekonomiskt mål för säkerhet angripare (t.ex., supply-chain attacker [20][21][28]). Det är till exempel för att de kan skicka till synes ofarliga kod ändringar som innehåller sårbarheter utan att avslöja deras identiteter och motiv. Att rikta specifika, allmänt använda öppen källkodsprojekt (t.ex. OS-kärnor, bibliotek, webbläsare eller mediaspelare) kan maximera effekten, eftersom dessa projekt vanligtvis stöder ett brett spektrum av konsumentprodukter.De snabba uppdateringscyklerna för dessa produkter kan snabbt ta sårbarheter i de senaste patcharna av deras uppströms FOSS-projekt om strikta säkerhetsöversikter och tester inte genomförs före varje programuppdatering eller release. Ur ett holistiskt samhällsperspektiv kan den övergripande kostnaden för säkerhetstestning optimeras genom att identifiera sådana sårbara kodförändringar tidigt vid tidpunkten för inlämnandet, innan dessa ändringar lämnas in till uppströms, öppen källkodsprojektrepositorier. Dessa nedströmsprojekt kan inte förlita sig på de första nedströmsprojekten för att hitta och åtgärda de sammanslagna, uppströms sårbarheterna eftersom tidsramen för sådana korrigeringar och deras efterföljande uppströmning är oförutsägbar (t.ex. delvis på grund av interna riktlinjer [22]). Ett naivt tillvägagångssätt för att kräva omfattande säkerhetsöversyner för varje kodändring orsakar en orealistisk kostnad för många uppströms ägare av öppna källkodsprojekt. Detta gäller särskilt för FOSS-projekt som får en hög volym av kodändringar eller kräver specialiserad säkerhetsexpertis för granskningar (t.ex. specifika för domänerna). Ett ramverk som automatiserar sårbarhetsbedömningen av kodändringar med hjälp av en maskininlärning (ML) klassificerare. Vulnerability Prevention (VP) Klassificeringsmodellen uppskattar sannolikheten för att en given kodändring innehåller eller inducerar åtminstone ett säkerhetsproblem. Kodändringar som överskrider ett tröskelvärde är genomsnittligt sannolikt-sårbar. Modellen utbildas på historiska data som genereras med hjälp av en uppsättning associerade analysverktyg. Modellen använder de vanliga funktionerna som används för att förutsäga programvarufel samt fyra typer av nya funktioner som fångar: 1) patch set komplexitet, 2) mönstren för kodöversyn, (3) livscykelfasen för programutveckling av varje källkodsfil, och (4) arten av en kodändring, som bestäms genom att analysera de redigerade källkodslinjerna.Totalt undersöker denna studie omfattande 6 typer av klassificerare med över 30 typer av egenskapsdata för att optimera ML-modellens noggrannhet. För att generera utbildnings- och testdata utnyttjar vi de säkerhetsfel som upptäckts och åtgärdats i Android Open Source Project (AOSP)1 . Det riktar sig specifikt till AOSP media project2 (dvs. för multimedia databehandling) som omfattande fuzz-testades och därmed avslöjade många säkerhetsbrister. (1) identifiera sårbarhetsfixar förändringar som är förknippade med varje mål säkerhet bugg, och (2) backtrack sårbarhetsinducerande ändringar kopplade till var och en av de identifierade sårbarhetsfixande ändringarna.Alla identifierade sårbarhetsinducerande ändringar analyseras och verifieras sedan manuellt innan de associeras med respektive säkerhetsfel.De associerade sårbarhetsinducerande ändringarna är märkta som ”1”, medan alla andra kodändringar som skickas till målmedieprojektet är märkta som ”0” i dataset. den Utvärdering med hjälp av det första året av data identifierar slumpmässig skog som den mest effektiva klassificeraren baserat på dess noggrannhet. Klassificeraren identifierar ~60% av de sårbarhetsinducerande kodförändringarna med en noggrannhet av ~85%. Den identifierar också ~99% av de sannolikt normala kodförändringarna med en noggrannhet av ~97% när man använder alla funktioner för utbildning och testning. N-fold När den tillämpas på cirka sex år av sårbarhetsdata3 visar ramen en återkallelse på cirka 80 % och en noggrannhet på cirka 98 % för sårbarhetsinducerande förändringar, tillsammans med en återkallelse på 99,8 % och en noggrannhet på 98,5 % för sannolikt normala förändringar. Sammanfattningsvis är 7,4% av de granskade och sammanfogade kodändringarna klassificerade som sårbarhetsinducerande.I genomsnitt är antalet sannolikt normala ändringar som kräver ytterligare uppmärksamhet under deras kodöversyn cirka 7 per månad.Denna hanterbara volym (mindre än 2 kodändringar per vecka) motiverar kostnaden, med tanke på den höga återkallelsen (~80%) och noggrannheten (~98%) för att identifiera sårbarhetsinducerande ändringar. Huvudbidrag från denna studie inkluderar: We explore and confirm the possibility of code change-granularity vulnerability prediction that can be used to prevent vulnerabilities by flagging likelyvulnerable code changes at pre-submit time. We present the Vulnerability Prevention (VP) framework that automates online assessment of software vulnerabilities using a machine learning classifier. We devise novel feature types to improve the classifier accuracy and reduces the feature data set by evaluating the precision and recall metrics. We present the specialized tools to label code changes in AOSP, facilitating robust training and testing data collection. We demonstrate a high precision (~98%) and recall (~80%) of the VP framework in identifying vulnerability-inducing changes, showing the potential as a practical tool to reduce security risks. We discuss the implications of deploying the VP framework in multi-project settings. Our analysis data suggests two focus areas for future Android security research: optimizing the Android vulnerability fixing latency and more efforts to prevent vulnerabilities. The rest of this paper is organized as follows. Section II provides the background information. Section III analyzes the design requirements and presents the VP framework design. Section IV details the design of the ML model, including the classifier and features for classifying likelyvulnerable code changes. Section V describes the tools developed to collect vulnerability datasets for model training and testing. Section VI describes the data collection process using the tools, and characterizes the vulnerability issues, vulnerability-fixing changes, and vulnerability-inducing changes in an AOSP sub-project. Section VII presents the evaluation of the VP framework using an N-fold validation. Section VIIII extends the framework for real-time, online classification. Section IX discusses the implications and threats to validity. Section IX reviews the related works before concluding this paper in Section X. II. BACKGROUND II. Bakgrund I det här avsnittet beskrivs processen för kodöversyn och inlämning av ett programvaruprojekt med öppen källkod, med hjälp av AOSP (Android Open Source Project) som en fallstudie. En kodändring består av en uppsättning tillagda, raderade och/eller redigerade källkodslinjer för källkodsfiler i ett mål källkodslager (t.ex. git). En typisk mjukvaruingenjör skickar en kodändring till en kodöversynstjänst (t.ex. Gerrit4) för obligatorisk kodöversyn före inlämning. En kodändring tillskrivs en författare som har en associerad e-postadress i AOSP. Förändringen kan också ha en eller flera kodöversynare. Koden ändras . Koden ändras Under kodöversynsprocessen kan en kodändring genomgå flera revideringar, vilket resulterar i en eller flera patchuppsättningar. Varje patchuppsättning som laddas upp till kodöversynstjänsten representerar en uppdaterad version av kodändringen. Den nyckel granskare behörigheter inkluderar: en poäng på +1 för att indikera att ändringen ser bra ut för granskaren, en poäng på +2 för att godkänna kodändringen, en poäng på -1 för att indikera att ändringen inte ser bra ut (t.ex. en mindre utgåva), och en poäng på -2 för att blockera inlämnandet av kodändringen. Koden översyn . Koden översyn . Projekt (t.ex. git-lagringsplatser eller underkataloger i git-lagringsplatser) kan ha anpassade behörigheter och granskningsregler. Till exempel är en anpassad granskningsregel att låta författare markera sina kodändringar redo för presubmit-testning eftersom författare ofta laddar upp icke-slutliga versioner till kod granskningstjänsten (t.ex. för att inspektera diffs5 och preliminär feedback). Den här artikeln finns tillgänglig på arkiv under CC by 4.0 Deed (Attribution 4.0 International) licens. Detta papper är licens enligt CC by 4.0 Deed (Attribution 4.0 International). available o n arxiv N Arkiv