Go to page
 

Bibliographic Metadata

Title
A systematic analysis and hardening of the Java security architecture / by Philipp Albert Holzinger ; Advisor: Prof. Dr. Eric Bodden
AuthorHolzinger, Philipp Albert
ParticipantsBodden, Eric
PublishedPaderborn, 2019
Edition
Elektronische Ressource
Description1 Online-Ressource (xx, 143 Seiten) : Diagramme
Institutional NoteUniversität Paderborn, Dissertation, 2019
Annotation
Tag der Verteidigung: 18.10.2019
Defended on2019-10-18
LanguageEnglish
Document TypesDissertation (PhD)
URNurn:nbn:de:hbz:466:2-35809 
DOI10.17619/UNIPB/1-822 
Files
A systematic analysis and hardening of the Java security architecture [1.55 mb]
Links
Reference
Classification
Abstract (German)

Java ist eine der beliebtesten Entwicklungsplattformen und wird in unterschiedlichen Kontexten eingesetzt. Das Java Runtime Environment (JRE) implementiert eine Sicherheitsarchitektur, die die Ausführung von vertrauenswürdigem und nicht vertrauenswürdigem Code im selben Prozess ermöglicht. In der Vergangenheit gab es jedoch diverse Angriffe, die schwerwiegende Sicherheitslücken aufzeigten. Trotz dieser Angriffe war bisher wenig bekannt über die Gemeinsamkeiten von Exploits, oder in wie fern Designschwächen die Angriffe ermöglichten. Daher haben wir eine Vielzahl von Exploits für unterschiedliche JRE-Versionen gesammelt und analysiert. Wir zeigten, dass eine kleine Menge von Schwachstellen häufig ausgenutzt wird und fanden drei Angriffskategorien. Zudem zeigten wir zwei Designschwächen auf, die viele Angriffe ermöglichten. Hierzu zählt schwaches Information Hiding. Wir zeigten, dass die Sicherheit der Plattform auf der Vertraulichkeit und Integrität von wenigen Variablen ruht. Wir entwickelten eine Lösung, die 84% der Information-Hiding-Angriffe in unserem Datensatz blockiert, jedoch die Rückwärtskompatibilität und Performance erhält. Zusätzlich diskutierten wir einen alternativen Ansatz, der potentiell robuster und performanter ist. Die zweite Designschwäche ist inkonsequente Zugriffskontrolle. Wir zeigten, dass einige Systemklassen Zugriffsprüfungen überspringen, wenn der Aufrufstapel bestimmte Bedingungen erfüllt, wodurch die Wartbarkeit des Codes gemindert und Angriffsfläche erhöht wird. Daher entwickelten wir eine JRE-Variante die weitgehend ohne Abkürzungen funktioniert. Unsere Evaluation zeigte die Rückwärtskompatibilität und hohe Performance unserer Lösung. Abschließend geben wir Hinweise für die Gestaltung und Implementierung sicherer Systeme.

Abstract (English)

Java is one of the most popular development platforms and it is applied in various different application contexts. The Java Runtime Environment (JRE) implements a complex security architecture that supports the execution of trusted and untrusted code within the same process. However, in the past, a large number of attacks revealed many severe vulnerabilities in the JRE that allowed for a full bypass of all security mechanisms. Despite the many examples of attacks, only little was previously known about conceptual commonalities of different exploits and the extent to which design weaknesses in the Java security architecture enabled the attacks. Thus, we collected and analyzed a large body of exploits for different versions of the JRE. We found that there is a small set of commonly abused weaknesses, and we identified three categories of attacks. Finally, we showed that two major design flaws enabled many of the attacks. The first design flaw is weak information hiding. We found that the security of the platform rests on the confidentiality and integrity of individual variables in system classes. We proposed a lightweight solution that blocks 84% of the information-hiding attacks in our sample set, while retaining backward compatibility and high performance. In addition, we presented a heavyweight solution that has the potential to outperform our lightweight solution in terms of robustness and speed. The second design flaw is improper access control. As we show, several system classes skip permission checks if certain hardcoded constraints on the call stack are satisfied, which decreases code maintainability and increases the attack surface. To address this, we created a variant of the JRE that works almost without shortcuts. Our evaluation shows that our solution is backward compatible and has a low performance overhead. ...

License
CC-BY-NC-ND-License (4.0)Creative Commons Attribution - NonCommercial - NoDerivatives 4.0 International License