SystemCall

Forschungspodcast über Betriebssysteme

Mit
  • Andreas Ziegler
  • Stefan Naumann
  • Florian Rommel

SC(3): #ifdef-Totengräber und Bibliotheksschwärzen

Mit Andreas Ziegler, Stefan Naumann, Florian Rommel

Wir beschäftigen uns im SystemCall Podcast mit aktueller Betriebssystemforschung. In dieser dritten Folge sprechen wir mit Andreas Ziegler von der FAU in Erlangen über seine Forschung am Undertaker, em Totengräber für #ifdefs und das Schreckgespenst für den Kconfig Kernelkonfigurator. Außerdem haben wir noch das Papier "BlankIt Library Debloating" mitgebracht, was sich mit der Reduktion von Angriffsfläche für Return-Oriented-Programming (ROP) zur Laufzeit beschäftigt.

Der Undertaker erlaubt das Parsen von Konfigurationsdateien des kconfig Buildsystems vom Linux Kernel, sodass einzelne Stellen betrachtet werden können unter dem Gesichtspunkt, welche Konfigoptionen an- bzw abgeschaltet sein müssen, damit diese Zeile im Kernel landet. Über lange SAT-Formeln kann so auch ermittelt werden, ob es sich ausschließende oder immer wahre Optionskombinationen gibt. Mithilfe des Grundgerüsts erklärt Andreas, wie er durch Tracing ein minimales System für den getesteten Anwendungsfall generiert hat, und welche Ergebnisse dabei erzielt worden.

BlankIt: Library Debloating beschäftigt sich mit dem ausblenden von dynamisch nicht gebrauchten Bibliothekscode. Das trägt zwar nicht zur Minimierung des Diskplatzes bei, wie bspw. beim Undertaker der Fall, dafür aber minimiert das die Anzahl möglicher ROP-Gadgets. Als ROP (Return-Oriented-Programming) bezeichnet man die Ausführung und Kombination von einzelnen Codestellen durch bewusste Stackmanipulation und zur Stackmanipulation durch Returns.

Vorab werden Pfade durch den Code ausgewertet und mittels eines Machine Learning Modells ermittelt, welche Funktionen anhand des dynamischen Kontexts gebraucht werden. Bei jedem Funktionscall in eine Library werden die gebrauchten Funktionen eingeblendet, also wieder in den Speicher geschrieben, beim Zurückkehren werden die Stellen wieder überschrieben.

Am Ende noch eine Leseempfehlung zum Thema Binary Rewriting, also dem Umschreiben von Binärdateien, ohne Zugriff auf den eigentlichen Source Code. Im Survey From Hack to Elaborate Technique - A Survey on Binary Rewriting werden mögliche Ansätze und Schritte strukturiert dargestellt und mit Quellen versehen. Das Paper ist dadurch gut zu lesen und verständlich.

Links

Undertaker

Reinhard Tartler, Daniel Lohmann, Julio Sincero, and Wolfgang Schröder-Preikschat. 2011. Feature consistency in compile-time-configurable system software: facing the linux 10,000 feature problem. In Proceedings of the sixth conference on Computer systems (EuroSys '11). Association for Computing Machinery, New York, NY, USA, 47–60. DOI: doi.org/10.1145/1966445.1966451

Kurmus, A., Tartler, R., Dorneanu, D., Heinloth, B., Rothberg, V., Ruprecht, A., Schröder-Preikschat, W., Lohmann, D. and Kapitza, R., 2013. Attack Surface Metrics and Automated Compile-Time OS Kernel Tailoring. In NDSS.

Ruprecht, A., Heinloth, B. and Lohmann, D., 2014. Automatic feature selection in large-scale system-software product lines. ACM SIGPLAN Notices, 50(3), pp.39-48. DOI: doi.org/10.1145/2775053.2658767

BlankIt Library Debloating

Chris Porter, Girish Mururu, Prithayan Barua, and Santosh Pande. 2020. BlankIt library debloating: getting what you want instead of cutting what you don’t. In Proceedings of the 41st ACM SIGPLAN Conference on Programming Language Design and Implementation (PLDI 2020). Association for Computing Machinery, New York, NY, USA, 164–180. DOI: doi.org/10.1145/3385412.3386017

Leseempfehlung: From Hack to Elaborate Technique - A Survey on Binary Rewriting

Matthias Wenzl, Georg Merzdovnik, Johanna Ullrich, and Edgar Weippl. 2019. From Hack to Elaborate Technique—A Survey on Binary Rewriting. ACM Comput. Surv. 52, 3, Article 49 (July 2019), 37 pages. DOI: doi.org/10.1145/3316415

Introsounds