arbeiten:safely_and_flexibly_sandboxing_python_code_in_a_c_runtime

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Nächste Überarbeitung
Vorhergehende Überarbeitung
arbeiten:safely_and_flexibly_sandboxing_python_code_in_a_c_runtime [07.10.2019 12:28] – Erstellt mit dem Formular arbeiten:anlegen Juergen Hahnarbeiten:safely_and_flexibly_sandboxing_python_code_in_a_c_runtime [15.06.2021 08:26] (aktuell) – [Data-Entry] Juergen Hahn
Zeile 1: Zeile 1:
-====== Safely and Flexibly Sandboxing Python Code in a C++ Runtime ======+====== Identification and Prevention of Common Programming Errors in Python running in a C++ Runtime Environment ======
  
 ---- dataentry StudentischeArbeit ---- ---- dataentry StudentischeArbeit ----
-Thema                       Safely and Flexibly Sandboxing Python Code in a C++ Runtime +Thema                                  Identification and Prevention of Common Programming Errors in Python running in a C++ Runtime Environment 
-Art_thesistypes             : BA, MA +Art_thesistypes                        : BA 
-BetreuerIn_thesisadvisor    : Jürgen Hahn +BetreuerIn_thesisadvisor               : Jürgen Hahn 
-BearbeiterIn                :  +BearbeiterIn                           Robert Fent 
-ErstgutachterIn_thesisprofessor  : Raphael Wimmer +ErstgutachterIn_thesisprofessor        : Raphael Wimmer 
-ZweitgutachterIn_secondthesisprofessor :  +ZweitgutachterIn_secondthesisprofessor : Christian Wolff 
-Status_thesisstate          Entwurf +Status_thesisstate                     abgeschlossen 
-Stichworte_thesiskeywords   : Sandboxing, Python3, C++, Security +Stichworte_thesiskeywords              : Sandboxing, Python3, C++, Security 
-angelegt_dt                 : 2019-10-07 +angelegt_dt                            : 2019-10-07 
-Anmeldung_dt                :  +Anmeldung_dt                           :  
-Antrittsvortrag_dt          :  +Antrittsvortrag_dt                     2021-03-01 
-Abschlussvortrag_dt         :  +Abschlussvortrag_dt                    :  
-Abgabe_dt                   :  +Abgabe_dt                              :  
-Textlizenz_textlicense      : ##Lizenz|## +Textlizenz_textlicense                  # #Lizenz|## 
-Codelizenz_codelicense      : ##Lizenz|##+Codelizenz_codelicense                  # #Lizenz|##
 ---- ----
  
-=== Hintergrund === 
  
-Das Sandboxing von Applikationen ist eine Methode in der Software Emtwicklung, um die Kontexte, in denen Code ausgeführt werden kann, einzuschränken. + 
-Dementsprechend wird die Sicherheit einer Applikation vor externen Angreifern, Schadsoftware aber auch gegenüber unerwüschten Zugriffen auf Systemresourcen oder von anderen Applikationen gesteigert. + 
-Eine Art des Sandboxing ist die Verwendung von Skriptsprachen in größeren Software-Systemen, wie Betriebssysteme oder Game Engines, die traditionell in C/C++ geschrieben sind. + 
-In diesem Benutzungskontext wird mithilfe der Skriptsprache das "Was?" modelliert, das passieren soll, während das einbindinde Software-System das "Wie?" größtmöglich generisch regelt.+ 
 + 
 +=== Hintergrund === 
 +Das Sandboxing von Applikationen ist eine Methode in der Software-Entwicklung, um die Kontexte, in denen Code ausgeführt werden kann, einzuschränken. 
 +Dadurch wird die Sicherheit einer Applikation vor externen Angreifern, Schadsoftware aber auch gegenüber unerwünschten Zugriffen auf Systemressourcen oder von anderen Applikationen gesteigert. 
 +Eine Art des Sandboxing ist die Verwendung von Skriptsprachen innerhalb von größeren Software-Systemen, wie Betriebssystemen oder *Game Engines*, die traditionell in C/C++ geschrieben sind. 
 +In diesem Benutzungskontext wird mithilfe der Skriptsprache das "Was?" modelliert, das passieren soll, während das einbindende Software-System das "Wie?" größtmöglich generisch regelt.
 Ein Beispiel aus dem Videospielkontext ist die Implementierung eines Projektils. Ein Beispiel aus dem Videospielkontext ist die Implementierung eines Projektils.
 Der Anwendungsentwickler "scriptet" ein Projektil und definiert das Aussehen, die Größe, die Geschwindigkeit, den Schaden bei einem Treffer (das "Was"), usw., während die Engine die rechenaufwendigen Aspekte übernimmt, wie die Physiksimulation (z.B. Schwerkraft), Kollisionserkennung (Hit-Boxes), etc. (das "Wie"). Der Anwendungsentwickler "scriptet" ein Projektil und definiert das Aussehen, die Größe, die Geschwindigkeit, den Schaden bei einem Treffer (das "Was"), usw., während die Engine die rechenaufwendigen Aspekte übernimmt, wie die Physiksimulation (z.B. Schwerkraft), Kollisionserkennung (Hit-Boxes), etc. (das "Wie").
-Skriptsprachen werden für solche Anwendungsszenarien bevorzugt eingesetzt, da sie schnelle Iteration erlauben, leichter zu verwenden sind als C/C++ und auch Entwicklungen dritter zulassen (Modding+Skriptsprachen werden für solche Anwendungsszenarien bevorzugt eingesetzt, da sie schnelle Iteration erlauben, leichter zu verwenden sind als C/C++ und auch Entwicklungen Dritter zulassen (Modding).
  
 === Zielsetzung der Arbeit === === Zielsetzung der Arbeit ===
  
-In dieser Arbeit soll anhand des Threat-Modelling-Prinzips für eine gegebene C++-Runtime, die Scripting mit Pyhton 3 unterstützt, erarbeitet werden, innerhalb welcher Szenarien es für Benutzer möglich ist sich aus der Runtime "rauszuhacken"+In dieser Arbeit soll systematisch untersucht werden, innerhalb welcher Szenarien es für Benutzer möglich istaus einer Python-Sandbox innerhalb einer C++-Runtime auszubrechen bzw. die gesamte Anwendung zum Absturz zu bringen
-Hierbei geht es primär um unbeabsichtigte "Attacken", wie Bugs und undefiniertes Verhalten in den Scripts abzufangen, als konkret sich gegen böswillige Angriffe zu verteidigen+Hierbei geht es primär um unbeabsichtigte "Attacken", wie Bugs und undefiniertes Verhalten in den Scripts abzufangen, und weniger darum, die Runtime gezielt gegen böswillige Angriffe abzusichern
-Im nächsten Schritt soll ausgehend vom State of the Art von Sandboxing anhand der evaluaierten Szenarios eine Integration der Sandbox für Python 3 Scripting in die C++-Runtime vorgenommen werden. +Anhand der evaluierten Szenarien soll im nächsten Schrittausgehend vom State of the Art des Sandboxingeine Integration der Sandbox für Python3-Scripting in die C++-Runtime vorgenommen werden. 
-In einem weiteren Schritt soll evaluaiert werden, ob das Sandboxing hinreichend gegen das Threat-Model schützt.+In einem weiteren Schritt soll evaluiert werden, ob das Sandboxing hinreichend gegen die identifizierten Gefahren schützt.
  
 === Konkrete Aufgaben === === Konkrete Aufgaben ===
  
 * Aufbereitung von Literatur zum Thema (1 Woche) * Aufbereitung von Literatur zum Thema (1 Woche)
-Erstellen des Threat-Models (1 Wochen) +Identifizieren von Gefahren (1 Wochen) 
-* Integration des Thread Models in C++-Runtime (2 Wochen) +* Integration von Sicherheitsmechanismen in die C++-Runtime (2 Wochen) 
-Testing des Thread Models und Bugfixing (1 Woche) +Testen der Sicherheitsmechanismen und Bugfixing (1 Woche) 
-Evaluation der Sanbox (1 Woche) +Benutzerevaluation der Sandbox (1 Woche) 
-Schriftliche Ausarbeitung (2 Wochen)+Finalisierung der schriftlichen Ausarbeitung (2 Wochen)
  
 === Erwartete Vorkenntnisse === === Erwartete Vorkenntnisse ===
Zeile 54: Zeile 59:
 === Weiterführende Quellen === === Weiterführende Quellen ===
  
-[1https://docs.unrealengine.com/en-US/Engine/Blueprints/index.html +1https://docs.unrealengine.com/en-US/Engine/Blueprints/index.html 
-[2Sewell, B. (2015). Blueprints Visual Scripting for Unreal Engine. Packt Publishing Ltd. +2Sewell, B. (2015). Blueprints Visual Scripting for Unreal Engine. Packt Publishing Ltd. 
-[3https://de.wikipedia.org/wiki/Skriptsprache +3https://de.wikipedia.org/wiki/Skriptsprache 
-[4Prevelakis, V., & Spinellis, D. (2001, June). Sandboxing Applications. In USENIX Annual Technical Conference, FREENIX Track (pp. 119-126). +4Prevelakis, V., & Spinellis, D. (2001, June). Sandboxing Applications. In USENIX Annual Technical Conference, FREENIX Track (pp. 119-126). 
-[5Ansel, J., Marchenko, P., Erlingsson, Ú., Taylor, E., Chen, B., Schuff, D. L., ... & Yee, B. (2011, June). Language-independent sandboxing of just-in-time compilation and self-modifying code. In ACM SIGPLAN Notices (Vol. 46, No. 6, pp. 355-366). ACM.+5Ansel, J., Marchenko, P., Erlingsson, Ú., Taylor, E., Chen, B., Schuff, D. L., ... & Yee, B. (2011, June). Language-independent sandboxing of just-in-time compilation and self-modifying code. In ACM SIGPLAN Notices (Vol. 46, No. 6, pp. 355-366). ACM.