Eric Biggers, uno dei sviluppatori del cifrario Adiantum e maintainer del sottosistema del kernel Linux fscrypt, ha proposto un insieme di patch per bloccare i problemi di sicurezza derivanti da una specificità dei processori Intel, che non garantisce un tempo di esecuzione costante delle istruzioni per diversi dati elaborati. Negli processori Intel, il problema si manifesta a partire dalla famiglia Ice Lake. Un problema simile è riscontrato anche nei processori ARM.
La dipendenza del tempo di esecuzione delle istruzioni dai dati elaborati in tali istruzioni è considerata dall'autore delle patch una vulnerabilità nei processori, poiché tale comportamento non può garantire la sicurezza delle operazioni crittografiche eseguite nel sistema. Molte implementazioni degli algoritmi crittografici sono progettate supponendo che i dati non influenzino il tempo di esecuzione delle istruzioni, e la violazione di questo comportamento potrebbe portare alla creazione di attacchi tramite canali laterali che ripristinano i dati basandosi sull'analisi del tempo di elaborazione.
Potenzialmente, la dipendenza del tempo di esecuzione dai dati potrebbe anche essere utilizzata per organizzare attacchi per determinare i dati del kernel dallo spazio utente. Secondo Eric Biggers, il tempo di esecuzione costante non è garantito nemmeno per le istruzioni che eseguono operazioni di somma e XOR, così come per le istruzioni specializzate AES-NI (le informazioni non sono confermate dai test; secondo altre informazioni, durante la moltiplicazione di vettori e il conteggio dei bit si verifica un ritardo di un ciclo).
Per disabilitare il comportamento in questione, le aziende Intel e ARM hanno proposto nuovi flag: il bit PSTATE DIT (Data Independent Timing) per i CPU ARM e il bit MSR DOITM (Data Operand Independent Timing Mode) per i CPU Intel, che ripristinano il comportamento precedente con un tempo di esecuzione costante. Le aziende Intel e ARM consigliano di attivare la protezione quando necessario per il codice particolarmente critico, ma in realtà i calcoli importanti possono verificarsi in qualsiasi parte del kernel e dello spazio utente, quindi si sta considerando la possibilità di attivare permanentemente le modalità DOITM e DIT per l'intero kernel.
Per i processori ARM, nella versione del kernel Linux 6.2 sono già stati accettati dei patch che modificano il comportamento del kernel, ma questi patch sono considerati insufficienti poiché coprono solo il codice del kernel e non modificano il comportamento per lo spazio utente. Per i processori Intel, l'attivazione della protezione è ancora in fase di revisione. Non sono stati condotti test per misurare l'impatto dei patch sulle prestazioni, ma secondo la documentazione Intel, attivare la modalità DOITM riduce le prestazioni (ad esempio, a causa della disattivazione di alcune ottimizzazioni, come il caricamento anticipato specifico per determinati dati), e nelle future versioni dei processori, la diminuzione delle prestazioni potrebbe aumentare.
Fonte: opennet.ru
