L’autor : Keun Soo Yim Author: Títol: Keun Soo Yim Table Of Links Taula de l'esquerra Abstracció I. INTRODUCTION I. Introducció II. BACKGROUND II. El fons III. DESIGN III. El disseny Definicions Objectius del disseny Framework Extensió IV. MODELING IV. Modelització Classificació Factors V. DATA COLLECTION V. Recollida de dades VI. CHARACTERIZATION VI. Caracterització Vulnerabilitat fixant la latencia Anàlisi de la vulnerabilitat fixant canvis Anàlisi de canvis de vulnerabilitat VII. RESULT VII. El resultat Validació N-FOLD Avaluació mitjançant el mode de desplegament en línia VIII. DISCUSSION VIII. Discussió Implicacions en projectes multiprojectes Implicacions sobre els treballs de seguretat d'Android Amenaces a la validesa Enfocaments alternatius IX. RELATED WORK IX. Treball relacionat CONCLUSION AND REFERENCES Conclusió i referències ABSTRACT Abstracció Aquest document presenta un marc que desencadena selectivament les revisions de seguretat per als canvis de codi font entrants. Funcionant com un bot de revisió dins d'un servei de revisió de codi, el marc pot sol·licitar automàticament revisions de seguretat addicionals en el moment de la presentació prèvia abans que els canvis de codi siguin enviats a un repositori de codi font. Atès que la realització d'aquestes revisions de codi segur afegeix costos, el marc utilitza un classificador capacitat per identificar canvis de codi amb una alta probabilitat de vulnerabilitats. El classificador en línia aprofita diferents tipus de característiques d'entrada per analitzar els patrons de revisió, rastrejar el procés d'enginyeria de programari i minar patrons de text específics dins de canvis de codi donat. El classificador i les seves característiques es seleccionen i optimitzen meticulosament utilitzant dades dels canvis de codi enviats i les vulnerabilitats reportades en el Projecte de codi obert d'Android (AOSP). Els resultats de l'avaluació demostren que el nostre marc de Prevenció de Vulnerabilitats (VP) identifica aproximadament el 80% dels canvis de codi que indueixen la vulnerabilitat en el conjunt de dades amb una ràtio de precisió d'al voltant del 98% i una taxa falsa positiva d'al voltant de l'1,7%. Aquest document explora i valida el nostre enfocament per a la predicció de vulnerabilitats de canvi de codi-granularitat, oferint una tècnica preventiva per a la seguretat del programari mitjançant la detecció preventiva de canvis de codi vulnerables abans de la presentació. I. INTRODUCTION I. Introducció Les cadenes de subministrament de programari lliure i de codi obert (FOSS) per als dispositius d'Internet de les coses (per exemple, telèfons intel·ligents i televisors) presenten un objectiu atractiu i econòmic per als atacants de seguretat (per exemple, atacs de la cadena de subministrament [20][21][28]). Atendre projectes específics i àmpliament utilitzats de codi obert (per exemple, nuclis de sistema operatiu, biblioteques, navegadors o reproductors de mitjans de comunicació) pot maximitzar l'impacte, ja que aquests projectes solen donar suport a una àmplia gamma de productes de consum. Els cicles ràpids d'actualització de programari d'aquests productes poden absorbir ràpidament les vulnerabilitats en les últimes correccions dels seus projectes FOSS d'actualització si no s'implementen revisions i proves de seguretat rigoroses abans de cada actualització o llançament de programari. Des d'una perspectiva social holística, el cost general de les proves de seguretat es pot optimitzar identificant aquests canvis de codi vulnerables a l'hora de la presentació prèvia, abans que aquests canvis es presentin als repositoris de projectes de codi obert. Aquests projectes descendents no poden confiar en els primers projectes descendents per trobar i corregir les vulnerabilitats fusionades i ascendents perquè el termini per a aquestes correccions i el seu posterior ascendiment és imprevisible (per exemple, en part a causa de les polítiques internes [22]). Un enfocament ingenu que requereix revisions de seguretat exhaustives per a cada canvi de codi causa un cost irrealista per a molts propietaris de projectes de codi obert. Això és especialment cert per als projectes de FOSS que reben un gran volum de canvis de codi o requereixen experiència especialitzada en seguretat per a revisions (per exemple, específiques als dominis). Framework que automatitza l'avaluació de vulnerabilitats de canvis de codi utilitzant un classificador de machine learning (ML). Vulnerability Prevention (VP) El model de classificador estima la probabilitat que un canvi de codi donat contingui o indueixi almenys una vulnerabilitat de seguretat. Els canvis de codi que superen un llindar de probabilitat mitjana-vulnerable. El model es forma sobre les dades històriques generades mitjançant l'ús d'un conjunt d'eines d'anàlisi associades. El model utilitza les característiques comunes utilitzades per a la predicció de defectes de programari, així com quatre tipus de característiques noves que capturen: 1) la complexitat del patch, 2) els patrons de revisió de codi, (3) la fase del cicle de vida del desenvolupament de programari de cada fitxer de codi font, i (4) la naturalesa d'un canvi de codi, com es determina mitjançant l'anàlisi de les línies de codi font editats. En total, aquest estudi examina de forma exhaustiva 6 tipus de classificadors utilitzant més de 30 tipus de dades de característiques per optimitzar la precisió del model ML. Per generar les dades de formació i de prova, aprofitem els errors de seguretat descoberts i corregits en el Projecte de codi obert d'Android (AOSP)1 . Es dirigeix específicament al projecte multimèdia d'AOSP2 (és a dir, per al processament de dades multimèdia) que ha estat àmpliament testat i, per tant, ha revelat molts defectes de seguretat. (1) identificar els canvis de correcció de vulnerabilitats associats a cada bug de seguretat objectiu, i (2) canvis d'inducció de vulnerabilitat relacionats amb cadascun dels canvis de correcció de vulnerabilitat identificats.Tots els canvis d'inducció de vulnerabilitat identificats són analitzats i verificats manualment abans d'associar-se als respectius errors de seguretat.Els canvis d'inducció de vulnerabilitat associats es marquen com a "1", mentre que tots els altres canvis de codi enviats al projecte de mitjans de comunicació objectiu es marquen com a "0" en el conjunt de dades. El L'avaluació utilitzant el primer any de dades identifica el bosc aleatori com el classificador més eficaç basat en la seva precisió. El classificador identifica el ~60% dels canvis de codi que indueixen la vulnerabilitat amb una precisió de ~85%. També identifica el ~99% dels canvis de codi probable-normal amb una precisió de ~97% quan s'utilitzen totes les característiques per a la formació i la prova. N-fold Quan s'aplica a uns sis anys de les dades de vulnerabilitat3, el marc demostra un recull d'aproximadament el 80% i una precisió d'aproximadament el 98% per als canvis que indueixen la vulnerabilitat, juntament amb un recull del 99,8% i una precisió del 98.5% per als canvis probables-normals. Aquest resultat de precisió supera els resultats aconseguits en la validació de N-fold en gran part perquè el mode de desplegament en línia pot utilitzar millor les ubicacions temporals subjacents, les víctimes i els patrons dins de les dades de característiques. En resum, el 7,4% dels canvis de codi revisats i fusionats es classifiquen com a induïts per vulnerabilitats. En mitjana, el nombre de canvis probable-normal que requereixen atenció addicional durant les revisions de codi és d'uns 7 per mes. Aquest volum gestionable (menys de 2 canvis de codi per setmana) justifica el cost, tenint en compte l'alt recull (~80%) i la precisió (~98%) per identificar els canvis induïts per vulnerabilitats. Les principals contribucions d’aquest estudi inclouen: 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. El fons Aquesta secció descriu el procés de revisió i presentació de codi d'un projecte de programari de codi obert, utilitzant AOSP (Android Open Source Project) com a cas d'estudi. Un canvi de codi (simplement, canvi) consisteix en un conjunt de línies de codi font afegides, eliminades i/o editats per a arxius de codi font en un repositori de codi font objectiu (per exemple, git). Un enginyer de programari típic envia un canvi de codi a un servei de revisió de codi (per exemple, Gerrit4) per a revisions de codi obligatòries abans de la presentació. Un canvi de codi s'atribueix a un autor que té una adreça de correu electrònic associada a AOSP. El canvi també pot tenir un o més revisors de codi. Canvi de codi . Canvi de codi Durant el procés de revisió de codi, un canvi de codi es pot sotmetre a múltiples revisions, resultant en un o més conjunts de patx. Cada conjunt de patx carregat al servei de revisió de codi representa una versió actualitzada del canvi de codi. L'autor del canvi de codi pot revisar i reenviar el canvi com un nou conjunt de patx per a una revisió o aprovació addicional per part de l'examinador de codi designat. Els permisos de l'examinador clau inclouen: una puntuació de +1 per indicar que el canvi és bo per a l'examinador, una puntuació de +2 per aprovar el canvi de codi, una puntuació de -1 per dir que el canvi no és bo (per exemple, un problema menor), i una puntuació de -2 per bloquejar la presentació del canvi de codi. Revisió del codi. Revisió del codi. Els projectes (per exemple, els repositoris git o subdirectoris en un repositori git) poden tenir permisos personalitzats i regles de revisió. per exemple, una regla de revisió personalitzada és permetre que els autors marquin els canvis de codi preparats per a la prova de presumpció perquè sovint els autors carreguen versions no finals al servei de revisió de codi (per exemple, per inspeccionar els diffs5 i els comentaris preliminars). Aquest document està disponible en arxiu sota la llicència CC by 4.0 Deed (Attribution 4.0 International). Aquest paper és Amb la llicència CC 4.0 Deed (Attribution 4.0 International). available o n arxiv Arxiu