Der Autor: Keun Soo Yim Author: Keun Soo Yim Table Of Links Tisch links Abstrakt I. INTRODUCTION I. Einführung II. BACKGROUND II. Hintergrund III. DESIGN III. Das Design Definitionen Design Ziele Framework Erweiterungen IV. MODELING IV. Modellierung Klassifizierer Features V. DATA COLLECTION V. Datenerhebung VI. CHARACTERIZATION VI. Charakterisierung Vulnerabilität Fixierung von Latenzen Analyse der Verletzlichkeit durch Fixierung von Veränderungen Analyse von Vulnerabilitätsveränderungen VII. RESULT VII. Das Ergebnis N-Fold Validierung Bewertung mit dem Online-Implementierungsmodus VIII. DISCUSSION VIII. Diskussion Auswirkungen auf mehrere Projekte Implikationen für Android-Sicherheitsarbeiten Bedrohung der Gültigkeit Alternative Ansätze IX. RELATED WORK IX. Verwandte Arbeiten CONCLUSION AND REFERENCES Schlussfolgerungen und Referenzen ABSTRACT Abstrakt In diesem Papier wird ein Framework vorgestellt, das die Sicherheitsbewertungen für eingehende Quellcodeänderungen selektiv auslöst.Durch die Funktion eines Review-Bots innerhalb eines Code-Review-Dienstes kann das Framework automatisch zusätzliche Sicherheitsbewertungen zur vorab eingereichten Zeit anfordern, bevor die Codeänderungen an ein Quellcode-Repository gesendet werden.Weil die Durchführung solcher sicheren Code-Bewertungen Kosten hinzufügt, verwendet das Framework einen Klassifizierer, der geschult ist, um Codeänderungen mit einer hohen Wahrscheinlichkeit von Schwachstellen zu identifizieren. Der Online-Klassifizierer nutzt verschiedene Arten von Eingabefunktionen, um die Überprüfungsmuster zu analysieren, den Software-Engineering-Prozess zu verfolgen und spezifische Textmuster innerhalb der jeweiligen Codeänderungen zu erfassen. Der Klassifizierer und seine Funktionen werden sorgfältig ausgewählt und optimiert, indem Daten aus den eingereichten Codeänderungen und von Schwachstellen im Android Open Source Project (AOSP) gemeldet werden. Wir diskutieren die Auswirkungen der Implementierung des VP-Frameworks in Multi-Projekt-Einstellungen und zukünftige Richtungen für die Android-Sicherheitsforschung.Dieses Papier untersucht und validiert unseren Ansatz zur Code-Change-Granularity-Schwachstellenvorhersage und bietet eine präventive Technik für die Software-Sicherheit, indem wir vor der Einreichung schutzbedürftige Codeänderungen präventiv erkennen. I. INTRODUCTION I. Einführung Die freien und Open-Source-Software-Lieferketten (FOSS) für die Internet-of-Things-Geräte (z.B. Smartphones und Fernseher) stellen ein attraktives, wirtschaftliches Ziel für Sicherheitsangreifer dar (z.B. Supply-Chain-Angriffe [20][21][28]). Das Zielen auf spezifische, weit verbreitete Open-Source-Projekte (z. B. OS-Kernel, Bibliotheken, Browser oder Media-Player) kann die Auswirkungen maximieren, da diese Projekte in der Regel eine breite Palette von Verbraucherprodukten untermauern.Die schnellen Software-Update-Zyklen dieser Produkte können Schwachstellen in den neuesten Patches ihrer Upstream-FOSS-Projekte schnell aufnehmen, wenn strenge Sicherheitsüberprüfungen und -Tests vor jeder Software-Update oder -Release nicht implementiert werden. Aus einer ganzheitlichen gesellschaftlichen Perspektive kann die Gesamtkosten für Sicherheitsprüfungen optimiert werden, indem solche schutzbedürftigen Codeänderungen frühzeitig bei der Vorablieferung identifiziert werden, bevor diese Änderungen an Upstream-Open Source-Projektrepositorien übermittelt werden. Diese nachgelagerten Projekte können sich nicht auf die ersten nachgelagerten Projekte verlassen, um die zusammengeschlossenen, nach oben liegenden Schwachstellen zu finden und zu beheben, da der Zeitrahmen für solche Korrekturen und ihr anschließendes Upstreaming unberechenbar ist (z. B. zum Teil aufgrund der internen Richtlinien [22]). Ein naiver Ansatz, um für jede Codeänderung umfassende Sicherheitsüberprüfungen zu verlangen, verursacht für viele Upstream-Open Source-Projektinhaber unrealistische Kosten. Dies gilt insbesondere für FOSS-Projekte, die ein hohes Volumen an Codeänderungen erhalten oder spezielle Sicherheitsexpertise für Überprüfungen erfordern (z.B. spezifisch für die Domains). ein Framework, das die Schwachstellenbeurteilung von Codeänderungen mithilfe eines Machine Learning (ML) -Klassifizierers automatisiert. Vulnerability Prevention (VP) Das Klassifizierungsmodell schätzt die Wahrscheinlichkeit, dass eine bestimmte Codeänderung mindestens eine Sicherheitsanfälligkeit enthält oder induziert. Codeänderungen, die eine Schwelle überschreiten, sind durchschnittlich wahrscheinlich-anfällig. Das Modell wird anhand der historischen Daten ausgebildet, die durch die Verwendung einer Reihe von analytischen Tools erzeugt werden. Das Modell verwendet die für die Vorhersage von Softwarefehlern verwendeten gemeinsamen Funktionen sowie vier Arten neuer Funktionen, die erfassen: (1) die Komplexität des Patch-Set, (2) die Muster der Code-Revision, (3) die Phase des Softwareentwicklungslebenszyklus jeder Quellcode-Datei und (4) die Art einer Codeänderung, wie durch die Analyse der bearbeiteten Quellcode Zeilen bestimmt. Insgesamt untersucht diese Studie umfassend 6 Arten von Klassifikatoren mit über 30 Arten von Feature-Daten, um die Genauigkeit des ML-Modells zu optimieren. Um die Schulungs- und Testdaten zu generieren, nutzen wir die Sicherheitsfehler, die im Android Open Source Project (AOSP)1 entdeckt und behoben wurden.Es zielt speziell auf das AOSP Media Project2 (d.h. für die Verarbeitung von Multimedia-Daten) ab, das weitgehend fuzz-testet wurde und so viele Sicherheitsfehler aufdeckte. (1) Identifizieren von Vulnerability-fixing-Änderungen, die mit jedem Ziel-Sicherheits-Bug verbunden sind, und (2) Backtrack-Schwachstelle-induzierende Änderungen, die mit jeder der identifizierten Schwachstelle-fixierenden Änderungen verknüpft sind.Alle identifizierten Schwachstelle-induzierenden Änderungen werden dann manuell analysiert und überprüft, bevor sie mit den jeweiligen Sicherheitsfehlern assoziiert werden.Die damit verbundenen Schwachstelle-induzierenden Änderungen werden als "1" gekennzeichnet, während alle anderen Codeänderungen, die dem Zielmedioprojekt eingereicht werden, als "0" im Datensatz gekennzeichnet sind. Die Die Auswertung mit Hilfe des ersten Jahres der Daten identifiziert Random Forest als den effektivsten Klassifikator basierend auf seiner Genauigkeit. Der Klassifikator identifiziert ~60% der vulnerabilityinducing-Code-Änderungen mit einer Genauigkeit von ~85%. Es identifiziert auch ~99% der wahrscheinlich-normal-Code-Änderungen mit einer Genauigkeit von ~97% bei der Verwendung aller Funktionen für die Ausbildung und Tests. N-fold Das VP-Framework wird dann als Online-Modell verwendet, das monatlich auf Daten aus dem vorangegangenen Monat neu trainiert wird.Wenn es auf etwa sechs Jahre der Schwachstellendaten3 angewendet wird, zeigt das Framework einen Rückruf von etwa 80 % und eine Genauigkeit von etwa 98 % für Schwachstelleninduzierende Änderungen, zusammen mit einem Rückruf von 99,8 % und einer Genauigkeit von 98,5 % für wahrscheinlich-normale Änderungen.Dieses Genauigkeitsergebnis übertrifft die Ergebnisse der N-fold-Validierung weitgehend, da der Online-Implementierungsmodus die zugrunde liegenden zeitlichen Standorte, Verletzungen und Muster innerhalb der Feature-Daten besser nutzen kann. Insgesamt sind 7,4% der überprüften und zusammengeführten Codeänderungen als schwachstelleninduzierend eingestuft.Im Durchschnitt beträgt die Anzahl der wahrscheinlich normalen Änderungen, die während ihrer Codeprüfung zusätzliche Aufmerksamkeit erfordern, etwa 7 pro Monat. Die wichtigsten Beiträge dieser Studie umfassen: 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. Hintergrund Dieser Abschnitt beschreibt den Code-Review- und Einreichungsprozess eines Open-Source-Software-Projekts, wobei AOSP (Android Open Source Project) als Fallstudie verwendet wird. Eine Codeänderung (einfach, eine Änderung) besteht aus einer Reihe von hinzugefügten, gelöschten und/oder bearbeiteten Quellcode-Linien für Quellcode-Dateien in einem Zielquellcode-Repository (z. B. git). Ein typischer Softwareingenieur sendet eine Codeänderung an einen Code-Review-Dienst (z. B. Gerrit4) für obligatorische Code-Reviews vor der Einreichung. Eine Code-Änderung wird einem Autor zugeordnet, der eine zugehörige E-Mail-Adresse in AOSP hat. Die Änderung kann auch einen oder mehrere Code-Reviewer haben. Code ändern . Code ändern Während des Code-Review-Prozesses kann eine Codeänderung mehrfach überarbeitet werden, was zu einem oder mehreren Patch-Sets führt.Jeder Patch-Satz, der zum Code-Review-Dienst hochgeladen wird, stellt eine aktualisierte Version der Code-Änderung dar.Der endgültige, genehmigte Patch-Satz der Änderung kann dann eingereicht und in das Ziel-Quellcode-Repository zusammengeführt werden. Der Code-Änderungs-Autor kann die Änderung überarbeiten und als neues Patch-Set zur weiteren Überprüfung oder Genehmigung durch den(n) benannten Code-Reviewer(en) erneut senden. Zu den Key-Reviewer-Berechtigungen gehören: eine Punktzahl von +1, um anzuzeigen, dass die Änderung für den Reviewer gut aussieht, eine Punktzahl von +2, um die Code-Änderung zu genehmigen, eine Punktzahl von -1 um anzuzeigen, dass die Änderung nicht gut aussieht (z. B. eine geringfügige Ausgabe) und eine Punktzahl von -2 um die Einreichung der Code-Änderung zu blockieren. Code Überprüfung . Code Überprüfung . Projekte (z.B. git-Repositories oder Unterverzeichnisse in einem git-Repository) können benutzerdefinierte Berechtigungen und Überprüfungsregeln haben.Zum Beispiel besteht eine benutzerdefinierte Überprüfungsregel darin, dass Autoren ihre Codeänderungen für die Präsubmit-Testung markieren können, da Autoren häufig nicht endgültige Versionen in den Code-Review-Dienst hochladen (z.B. um die diffs5 und vorläufige Feedback zu überprüfen). Dieses Dokument ist unter der Lizenz CC by 4.0 Deed (Attribution 4.0 International) verfügbar. Dieses Dokument ist unter der Lizenz CC by 4.0 Deed (Attribution 4.0 International) verfügbar. Das Archiv