Eric Biggers, um dos desenvolvedores do criptograma Adiantum e mantenedor do subsistema do kernel Linux fscrypt, propôs um conjunto de patches para bloquear problemas de segurança decorrentes de uma característica dos processadores Intel, que não garante tempos de execução constantes para diferentes dados processados. Nos processadores Intel, o problema se manifesta a partir da família Ice Lake. Um problema similar é observado também nos processadores ARM.
A presença da dependência do tempo de execução das instruções dos dados processados é considerada pelo autor dos patches uma vulnerabilidade nos processadores, pois esse comportamento não pode garantir a segurança das operações criptográficas realizadas no sistema. Muitas implementações de algoritmos criptográficos são projetadas para que os dados não influenciem no tempo de execução das instruções, e a violação desse comportamento pode levar à criação de ataques por canais laterais, recuperando dados com base na análise do tempo de seu processamento.
Potencialmente, a dependência do tempo de execução dos dados também pode ser utilizada para organizar ataques que identifiquem dados do núcleo a partir do espaço do usuário. Segundo Eric Biggers, tempos de execução constantes por padrão não são garantidos nem mesmo para instruções que realizam operações de soma e XOR, bem como para instruções especializadas AES-NI (a informação não foi confirmada por testes; segundo outros dados, ao multiplicar vetores e contar bits, ocorre um atraso de um ciclo).
Para desativar o comportamento em questão, as empresas Intel e ARM propuseram novas flags: o bit DIT (Data Independent Timing) para CPU ARM e o bit MSR DOITM (Data Operand Independent Timing Mode) para CPU Intel, que retornam o comportamento antigo com tempos de execução constantes. As empresas Intel e ARM recomendam ativar essa proteção conforme necessário para código especialmente importante, mas na prática, cálculos importantes podem ocorrer em qualquer parte do núcleo e do espaço do usuário, portanto, considera-se a possibilidade de ativação constante dos modos DOITM e DIT para todo o núcleo.
Para os processadores ARM, já foram aceitos patches na versão 6.2 do núcleo Linux que alteram o comportamento do núcleo, mas esses patches são considerados insuficientes, pois abrangem apenas o código do núcleo e não afetam o comportamento do espaço do usuário. Para os processadores Intel, a ativação da proteção ainda está apenas na fase de revisão. A medição do impacto do patch no desempenho ainda não foi realizada, mas segundo a documentação da Intel, a ativação do modo DOITM reduz o desempenho (por exemplo, devido à desativação de algumas otimizações, como o pré-carregamento específico para determinados dados) e, em modelos futuros de processadores, a redução do desempenho pode aumentar.
Fonte: opennet.ru
