Dipendenza del tempo di esecuzione delle istruzioni dai dati su CPU ARM e Intel

Eric Biggers, uno degli sviluppatori del cifrario Adiantum e manutentore del sottosistema fscrypt del kernel Linux, ha proposto una serie di patch per bloccare i problemi di sicurezza derivanti da una caratteristica dei processori Intel che non garantisce tempi di esecuzione costanti per i diversi dati elaborati. Il problema si presenta nei processori Intel a partire dalla famiglia Ice Lake. Un problema simile si osserva nei processori ARM.

La presenza di una dipendenza del tempo di esecuzione delle istruzioni dai dati elaborati in queste istruzioni è considerata dall'autore delle patch come una vulnerabilità nei processori, poiché tale comportamento non può garantire la sicurezza delle operazioni crittografiche eseguite nel sistema. Molte implementazioni di algoritmi crittografici sono progettate per garantire che i dati non influenzino il tempo di esecuzione delle istruzioni e la violazione di questo comportamento può portare alla creazione di attacchi side-channel che recuperano i dati in base all'analisi del tempo di elaborazione.

Potenzialmente, la dipendenza dai dati di runtime può essere utilizzata anche per lanciare attacchi per determinare i dati del kernel dallo spazio utente. Secondo Eric Biggers, il tempo di esecuzione costante non è previsto per impostazione predefinita nemmeno per le istruzioni che eseguono operazioni di addizione e XOR, nonché per istruzioni AES-NI specializzate (informazioni non confermate dai test, secondo altri dati c'è un ritardo di uno ciclo durante la moltiplicazione vettoriale e il conteggio dei bit).

Per disabilitare questo comportamento, Intel e ARM hanno proposto nuovi flag: PSTATE bit DIT (Data Independent Timing) per CPU ARM e MSR bit DOITM (Data Operand Independent Timing Mode) per CPU Intel, restituendo il vecchio comportamento con tempo di esecuzione costante. Intel e ARM consigliano di abilitare la protezione necessaria per il codice critico, ma in realtà i calcoli critici possono verificarsi ovunque nel kernel e nello spazio utente, quindi stiamo valutando di abilitare sempre le modalità DOITM e DIT per l'intero kernel.

Per i processori ARM, il ramo del kernel Linux 6.2 ha già adottato patch che modificano il comportamento del kernel, ma queste patch sono considerate insufficienti poiché coprono solo il codice del kernel e non modificano il comportamento dello spazio utente. Per i processori Intel l'inclusione della protezione è ancora in fase di revisione. L'impatto della patch sulle prestazioni non è stato ancora misurato, ma secondo la documentazione Intel, abilitare la modalità DOITM riduce le prestazioni (ad esempio, disabilitando alcune ottimizzazioni, come il precaricamento specifico dei dati) e nei futuri modelli di processore la riduzione delle prestazioni potrebbe aumentare .

Fonte: opennet.ru

Aggiungi un commento