EMB_78
63 EMBEDDED NOVEMBRE HYPERVISOR | SOFTWARE Gestione dei dispositivi di I/O Un altro aspetto importante per quanto riguar- da la sicurezza di un sistema virtualizzato è la gestione dei dispositivi di I/O. In particolare, parliamo dei dispositivi che saranno disponibili K À Q illustrato un sistema che utilizza expansion port ad alta velocità che consentono l’accesso diretto alla memoria (dispositivi DMA). Se il kernel a separazione dovesse assegnare il controllo com- pleto dei dispositivi DMA al guest di Linux, la sicurezza dell’intero sistema potrebbe venire compromessa. Infatti, usando il DMA, il sistema operativo guest potrebbe istruire il dispositivo a leggere o scrive- re direttamente su qualsiasi area della memoria principale, incluso il kernel. A meno che non sia À - lintenzionato potrebbe utilizzare questo mezzo per ottenere potenzialmente l’accesso diretto a parte o a tutto lo spazio di indirizzamento della À - canismi di sicurezza. Per questo motivo, molti circuiti integrati SoC moderni hanno introdotto alcune funzionalità per limitare l’area a cui un dispositivo DMA può accedere come ad esempio l’IOMMU (Input-Ou- tput Memory Management Unit). Sul mercato si possono trovare diverse implementazioni, come `5 55{ K ' ` K*55{ IOMMU, analogamente alla MMU della CPU, ! À À a quali aree di indirizzi il dispositivo può aver ac- cesso. In questo modo i driver del dispositivo possono essere ese- guiti esclusivamente in una partizione del kernel a separazione o in un sistema opera- tivo guest. Nel caso in cui il SoC non dispon- ga dell’IOMMU è pos- sibile permettere al si- stema operativo guest di accedere diretta- mente ai dispositivi di I/O (pass-through). Nonostante questa pratica sia da evitare quando il sistema ha requisiti di sicurezza mol- to stringenti, è comunque a volte considerata un compromesso accettabile per motivi di manute- nibilità o di time-to-market. Per garantire la massima sicurezza anche in as- senza della IOMMU, i dispositivi DMA devono essere gestiti dal kernel a separazione (una par- tizione di driver virtuale per ciascun dispositivo +5 @ À - ver di un dispositivo del sistema operativo guest À ! ' ware DMA, causando un danno potenzialmente disastroso alla memoria. Più precisamente, le richieste DMA devono es- sere gestite dal kernel a separazione, mentre la parte più complessa del driver può ancora essere eseguita nel guest. Questo spinge l’implementazione del driver verso À da garantire al guest di accedere in modo sicuro al dispositivo DMA. La complessità aggiuntiva della paravirtualizzazione è quindi il prezzo da pagare per mantenere il sistema robusto, sicuro e protetto, e l’esperienza dimostra che il sovrac- carico (overhead) è in realtà minore del previsto se il driver paravirtualizzato è stato progettato correttamente. In conclusione, un kernel a sepa- À ~ - sor presenta diversi vantaggi per migliorare la sicurezza e la protezione dei sistemi operativi di base, assicurando la separazione tra componen- ti software critici e non critici e garantendo una protezione multilivello. Fig. 2 – Miglioramento della sicurezza del sistema operativo Linux utilizzando un kernel di separazione e la virtualizzazione
Made with FlippingBook
RkJQdWJsaXNoZXIy MTg0NzE=