This commit is contained in:
Booklordofthedings 2024-12-13 15:03:48 +01:00
parent 05242e4ed0
commit 0e520ad78a

View file

@ -1,10 +1,10 @@
--- ---
title: "Git Commits analysieren" title: "Git Commits analysieren"
author: "Jannis von Hagen" author: "Jannis von Hagen (PFWC123A)"
date: "`r Sys.Date()`" date: "`r Sys.Date()`"
output: html_document output: html_document
--- ---
<div style="font-family=sans-serif; font-size:1.5rem;"> <div style="font-family=sans-serif; font-size:1.5rem; line-height:2;">
@ -27,8 +27,9 @@ library('lubridate')
<hr /> <hr />
## Register ## 0 Inhalt
- 0 Inhalt
- 1 Einleitung - 1 Einleitung
- 1.0 Was ist git ? - 1.0 Was ist git ?
- 1.1 Angriffsvektor - 1.1 Angriffsvektor
@ -48,32 +49,34 @@ library('lubridate')
### 1.0 Was ist git ? ### 1.0 Was ist git ?
**[Git](https://git-scm.com/)** ist ein Program zur Versionskontrolle von Software und vereinfacht das Kollaborieren von mehren Leuten an einem Program. Änderungen im Quellcode werden aufgezeichnet, können zurückgesetzt werden und eine Gesamtverlust des Codes wird größtenteils verhindert. **[Git](https://git-scm.com/)** ist ein Program zur Versionskontrolle von Software und ermöglicht das Kollaborieren von mehreren Personen an einem Projekt. Alle Änderungen im Quellcode werden aufgezeichnet und können bei Fehlern zurückgezogen werden um immer stabile Funktionalität zu gewährleisten. Häufig gibt es einen oder mehrere Benutzer oder Organisationen, welche die Kontrolle über ein sogennantes git *"Repository"* haben in dem sie Änderungen von Mitarbeitern akzeptieren können. Bei Quelloffener Software werden auch Änderungen von anderen, nicht zum Projekt gehörigen Personen aktzeptiert.
### 1.1 Angriffsvektor ### 1.1 Angriffsvektor
Zwar zeichnet Git Änderungen auf, allerdings wird aber immer noch darauf vertraut das die Änderungen rechtmäßig und Git zeichnet zwar Änderungen auf aber von sich aus findet keine automatische Validierung der Änderung statt.
Vertrauenswürdig sind. Dies bedeuet das zum Beispiel durch eine Account Übernahme schädlicher Quellcode in das Repository gelangen kann, welcher dann von mehreren anderen Computern gebaut und verteilt wird. Wenn der Zugang eines Projektmitarbeiters kompromisiert wird, kann es einem Angreifer möglich sein ohne Probleme schädlichen Code in ein Softwareprojekt zu schleußen. Auch kann ein Angreifer einfach eine schädliche Änderung anfragen und falls diese Änderung nicht richtig überprüft wird, könnte sie in das Projekt gelangen.
Der Vorteil von diesem Angriffsvektor gegenüber anderen Methoden ist, dass es eine potentiell größere Gruppe trifft.
Die Ausführbaren Versionen einer Software werden aus dem Quellcode generiert sodass jede Verbreitungsquelle der Software infiziert wird, anstatt nur eine einzige. Auch umgeht diese Methode eine Verteidigungsmethode bei der der Hash der Software geprüft wird, indem sie vor dem Hashprozess funktionert.
### 1.2 Hypothese ### 1.2 Hypothese
Da Git viele Daten speichert sollte es möglich sein diese für ein beliebiges generisches Repository zu Downloaden und dann automatisch zu analysieren. Dies erzeugt hilfreiche Informationen über den generellen Status des Repositories, sowie kann es potentiell Auffällige Commits für eine manuelle Untersuchung heraussuchen. Git speichert alle Änderungen und Metadaten über jede Änderung im Repository. Somit sollte es also möglich sein anhand von verschiedenen Faktoren eine Wertung für jeden einzelnen Commit zu erstellen der die Auffälligkeit der Änderung im Vergleich zu anderen Änderungen im Repository beschreibt. Dies kann automatisiert passieren und kann auch von Dritten eingesetzt werden um Repositories zu überwachen, welche man nicht direkt kontrolliert aber mit dem eigenen Projekt zu tun haben.
Wichtig zu erwähnen ist hier, dass es sich dabei nur um eine Auffälligkeit handelt und jede Aufälligkeit manuell geprüft werden muss. Die Nutzererfahrung bei falsch positiven Ergebnissen sollte nur minimal beinträchtigt werden.
*Das Ziel dieser Arbeit ist nicht praktischer realer Nutzen, denn es existieren bereits ähnliche, weitsaus komplexere Konzepte zum Schutz von Repositories. Commits werden meistens schon von mindestens einer anderen Person analysiert, sodass einfach Aufälligkeiten schnell herausgefiltert werden, und echte Angreifer nutzen meist weit **[diskretere](https://nvd.nist.gov/vuln/detail/CVE-2024-3094)** Angriffswege die durch diese Analyse nicht gefunden werden können.*
Ziel ist also eine Wertung für jeden Commit zu erstellen und die potentiell relevanten Faktoren für diese Wertung in dieser Arbeit zu analyiseren.
*Der Sicherheitstechnische Ansatz dieser Arbeit ist eher ein imaginärer Ansatz anstatt eine reale Möglichkeit (Praktischer Nutzen ist aber nicht wirklich das Ziel dieser Arbeit, sodass es ignorierbar ist).
Commits in Open Source Programmen werden generell von mindestens einer Person validiert bevor sie eingeführt werden.
Code Platformen bieten starken Schutz gegen Account Übernahmen und Vandalismus in Repositories.
Wenn ein Angreifer wirklich Code in eine Software einschleußen will ist es weitaus **[diskreter](https://nvd.nist.gov/vuln/detail/CVE-2024-3094)** möglich*
<hr /> <hr />
## 2 Aufbereitung der Daten ## 2 Aufbereitung der Daten
### 2.0 Quelle ### 2.0 Quelle
Das Ziel ist eine generische Datenanalyse bei der jedes Git Repostorie genutzt werden kann für diese Arbeit habe ich mich aber dafür Solange genug Datenpunkte vorhanden sind, soll das System jedes beliebiges Repository analysieren können, aber um den Anforderungen dieser Arbeit gerecht zu werden und um meine Analysen validieren zu können werde ich ein Beispiel Repository benutzen.Hierbei habe ich mich für das Git Repository von **[SDL](https://www.libsdl.org/)**entschieden.
entschieden das Git Repository von **[SDL](https://www.libsdl.org/)** zu analysieren. SDL ist eine Software Bibliothek für Platformübergreifende Software. Es wird sehr häufig zur Entwicklung von unter anderen Videospielen benutzt, hat 17000 Commits und ist inzwischen 26 Jahre alt.
SDL ist eine Software Bibliothek für Software die Platformübergreifend funktionieren soll. Es wird sehr häufig zur Entwicklung von Videospielen benutzt, hat 17000 Commits und ist inzwischen 26 Jahre alt.
Das spezifische Repository welches benutzt wird kann aber im dieser Arbeit mitgelieferten Quellcode geändert werden.
### 2.1 Variablen ### 2.1 Variablen