FreeBSD abbandona i RNG sui chip

Il gruppo di lavoro che si dedica alla sicurezza di FreeBSD ha deciso di abbandonare l’utilizzo del generatore di numeri casuali (RNG) presente sui chip.

Il motivo principale di questa scelta risiede nel timore che tra le attività della NSA rivelate da Snowden ci sia stata anche quella di indebolire l’entropia di questi generatori come è successo con gli standard di crittografia del NIST.

Al posto del supporto del RNG sul silicio ci sarà un software che potrebbe essere Yarrow oppure il suo successore Fortuna.

Nella versione 10 di FreeBSD RdRand di Intel e Padlock di Via Technology verranno, quindi, abbandonati e sostituiti con un generatore via software; gli applicativi potranno comunque continuare ad utilizzare quelle funzioni al posto di /dev/random

Linux continua ad utilizzare i RNG sui chip, ma non come uniche fonti di entropia, contenendo l’eventuale (ma non ancora dimostrata [PDF]) limitazione artificiale del generatore di numeri casuali. Una possibile soluzione, specialmente per le macchine virtuali, potrebbe essere haveged, anche se la materia è ancora oggetto di discussione.

Una buona generazione di numeri casuali è fondamentale per garantire la sicurezza delle trasmissioni crittografate, quindi non si tratta di una questione di pura estetica.

Baco delle CPU Intel e virtualizzazione

Un baco delle CPU Intel a 64 bit potrebbe permettere un aumento di privilegi di una macchina virtuale (VM guest-to-host escape).

Le CPU AMD e i sistemi di virtualizzazione basati su VMware non sono interessati da questo baco (l’hypervisor di VMware non usa SYSRET).

Il problema si verifica quando un attaccante sul ring3 crea uno stack frame ad arte per essere eseguito nel ring0 dopo una general protection exception (#GP). L’errore viene gestito prima della commutazione dello stack, il che significa che il gestore dell’errore (exception handler) viene eseguito nel ring0 con il registro RSP (il puntatore allo stack) che punta allo stack con il contenuto popolato dall’attaccante.

Questo baco consente alla macchina virtuale (guest) una fuga al livello di sicurezza del sistema di virtualizzazione che la sta facendo girare (host).

Sono disponibili gli aggiornamenti e le note tecniche relative per FreeBSD, Microsoft, RedHat (1 e 2) e Xen. (via US-CERT)

Aggiornamento 25/7/2012 – Questo tipo di baco colpisce anche FreeBSD, per il quale è disponibile un exploit. In questo caso un utente normale può guadagnare i privilegi di root eseguendo semplicemente un programma creato ad arte (via The hacker news).