Userspace software fault mechanisms increasingly depend on kernel space security mechanisms that extend DAC (Discretionary Access Control). These mechanisms have been targeted and exposed by various Linux kernel vulnerabilities, such as Mempodipper (CVE-2012-0056) or {get,put}_user on ARM (CVE-2013-6282). Currently, hardware IOMMU (Input/Output Memory Management Unit) mitigates hardware-based side channel attacks that target the kernel memory, however, IOMMU cannot mitigate vulnerabilities introduced by software developers in device drivers. Moreover, it is not practical to guarantee the security of the Linux kernel with formal methods given the big trusted computing base. The aim of this thesis is to extrude the kernel Reference Monitor in a Trusted Execution Environment, where attackers cannot map or modify directly its memory. First, security sensitive Linux kernel parts have been identified and extruded through a simple API. An hypervisor has been then implemented in order to run these sensitive zones outside of the vulnerable memory perimeter. The proposed approach mitigates all the direct memory access violations that have been tested. Given the ubiquity of ARM devices, such as Android phones, we implement a non-circumventable Secure Reference Monitor in ARM TrustZone. This approach allows segregating these code paths and the associated kernel memory with a minimum effort on behalf of kernel developers, avoiding overcomplicated strategies such as having a second trusted kernel running in the TrustZone. Furthermore, given it sections current Linux kernel without requiring complex secondary trusted environments, it will not suffer all the related vulnerabilities like QSEE privilege escalations (CVE-2016-2060).

Le protezioni dello userspace dipendono sempre di più da meccanismi di sicurezza che estendono DAC (Discretionary Access Control). Questi meccanismi sono stati esposti a varie vulnerability del kernel Linux come Mempodipper (CVE-2012-0056) o {get,put}_user su ARM (CVE-2013-6282). Attualmente, la IOMMU (Input/Output Memory Management Unit) mitiga l'effetto di attacchi side channel basati sull'hardware che prendono di mira la memoria del kernel; purtroppo, la IOMMU non può mitigare le vulnerabilità introdotte dagli sviluppatori all'interno dei device drivers. D'altro canto, non è facile garantire la sicurezza del kernel Linux con metodi formali dato quanto è grande la Trusted Computing Base. Lo scopo di questa tesi è estrudere il Reference Monitor del kernel in una Trusted Execution Environment, dove un attaccante non può mappare o modificare direttamente la sua memoria. Per prima cosa abbiamo identificato e estruso le parti del kernel Linux sensibile con una semplice API. Successivamente abbiamo implementato un Hypervisor per eseguire queste zone sensibili in sicurezza. L'approccio proposto mitiga tutte gli attacchi diretti a memoria che sono stati testati. Dato l'enorme fetta di mercato di ARM, come i telefoni Android, abbiamo implementato questo Secure Reference Monitor non aggirabile all'interno di ARM TrustZone. Questo approaccio permette di segregare i segmenti di codice del kernel e la loro memoria dati associata con un minimo sforzo da parte dello sviluppatore del kernel; inoltre evita strategie più complicate come avere un secondo kernel eseguito nella TrustZone. D'altro canto, dato che seziona il kernel Linux senza aver bisogno di un secondo trusted environment più complesso, non soffre di tutte le vulnerabilità come (CVE-216-2060).

ThYPon. Hypervisor less secure reference monitor

BRANCALEONI, ANDREA
2015/2016

Abstract

Userspace software fault mechanisms increasingly depend on kernel space security mechanisms that extend DAC (Discretionary Access Control). These mechanisms have been targeted and exposed by various Linux kernel vulnerabilities, such as Mempodipper (CVE-2012-0056) or {get,put}_user on ARM (CVE-2013-6282). Currently, hardware IOMMU (Input/Output Memory Management Unit) mitigates hardware-based side channel attacks that target the kernel memory, however, IOMMU cannot mitigate vulnerabilities introduced by software developers in device drivers. Moreover, it is not practical to guarantee the security of the Linux kernel with formal methods given the big trusted computing base. The aim of this thesis is to extrude the kernel Reference Monitor in a Trusted Execution Environment, where attackers cannot map or modify directly its memory. First, security sensitive Linux kernel parts have been identified and extruded through a simple API. An hypervisor has been then implemented in order to run these sensitive zones outside of the vulnerable memory perimeter. The proposed approach mitigates all the direct memory access violations that have been tested. Given the ubiquity of ARM devices, such as Android phones, we implement a non-circumventable Secure Reference Monitor in ARM TrustZone. This approach allows segregating these code paths and the associated kernel memory with a minimum effort on behalf of kernel developers, avoiding overcomplicated strategies such as having a second trusted kernel running in the TrustZone. Furthermore, given it sections current Linux kernel without requiring complex secondary trusted environments, it will not suffer all the related vulnerabilities like QSEE privilege escalations (CVE-2016-2060).
ING - Scuola di Ingegneria Industriale e dell'Informazione
28-apr-2017
2015/2016
Le protezioni dello userspace dipendono sempre di più da meccanismi di sicurezza che estendono DAC (Discretionary Access Control). Questi meccanismi sono stati esposti a varie vulnerability del kernel Linux come Mempodipper (CVE-2012-0056) o {get,put}_user su ARM (CVE-2013-6282). Attualmente, la IOMMU (Input/Output Memory Management Unit) mitiga l'effetto di attacchi side channel basati sull'hardware che prendono di mira la memoria del kernel; purtroppo, la IOMMU non può mitigare le vulnerabilità introdotte dagli sviluppatori all'interno dei device drivers. D'altro canto, non è facile garantire la sicurezza del kernel Linux con metodi formali dato quanto è grande la Trusted Computing Base. Lo scopo di questa tesi è estrudere il Reference Monitor del kernel in una Trusted Execution Environment, dove un attaccante non può mappare o modificare direttamente la sua memoria. Per prima cosa abbiamo identificato e estruso le parti del kernel Linux sensibile con una semplice API. Successivamente abbiamo implementato un Hypervisor per eseguire queste zone sensibili in sicurezza. L'approccio proposto mitiga tutte gli attacchi diretti a memoria che sono stati testati. Dato l'enorme fetta di mercato di ARM, come i telefoni Android, abbiamo implementato questo Secure Reference Monitor non aggirabile all'interno di ARM TrustZone. Questo approaccio permette di segregare i segmenti di codice del kernel e la loro memoria dati associata con un minimo sforzo da parte dello sviluppatore del kernel; inoltre evita strategie più complicate come avere un secondo kernel eseguito nella TrustZone. D'altro canto, dato che seziona il kernel Linux senza aver bisogno di un secondo trusted environment più complesso, non soffre di tutte le vulnerabilità come (CVE-216-2060).
Tesi di laurea Magistrale
File allegati
File Dimensione Formato  
2016_04_Brancaleoni.PDF

non accessibile

Dimensione 2.45 MB
Formato Adobe PDF
2.45 MB Adobe PDF   Visualizza/Apri

I documenti in POLITesi sono protetti da copyright e tutti i diritti sono riservati, salvo diversa indicazione.

Utilizza questo identificativo per citare o creare un link a questo documento: https://hdl.handle.net/10589/133900