Eric Biggers, uno de los desarrolladores del cifrado Adiantum y mantenedor del subsistema del núcleo Linux fscrypt, propuso un conjunto de parches para bloquear problemas de seguridad que surgen debido a una característica de los procesadores Intel que no garantiza un tiempo de ejecución constante de las instrucciones para diferentes datos procesados. En los procesadores Intel, el problema se manifiesta a partir de la familia Ice Lake. Un problema similar se observa en los procesadores ARM.
La existencia de una dependencia del tiempo de ejecución de las instrucciones de los datos procesados en estas instrucciones es considerada por el autor de los parches como una vulnerabilidad en los procesadores, ya que este comportamiento no puede garantizar la seguridad de las operaciones criptográficas realizadas en el sistema. Muchas implementaciones de algoritmos criptográficos están diseñadas para que los datos no influyan en el tiempo de ejecución de las instrucciones, y la interrupción de dicho comportamiento puede dar lugar a ataques de canal lateral, que recuperan datos mediante el análisis del tiempo de procesamiento.
Potencialmente, la dependencia del tiempo de ejecución de los datos también puede ser utilizada para organizar ataques que determinan los datos del núcleo desde el espacio del usuario. Según Eric Biggers, el tiempo de ejecución constante por defecto no se garantiza ni siquiera para las instrucciones que realizan operaciones de suma y XOR, así como para las instrucciones especializadas AES-NI (la información no está confirmada por pruebas; según otros datos, al multiplicar vectores y contar bits, se produce un retraso de un ciclo).
Para desactivar el comportamiento en cuestión, las compañías Intel y ARM han propuesto nuevos flags: el bit DIT (Data Independent Timing) para CPU ARM y el bit DOITM (Data Operand Independent Timing Mode) para CPU Intel, que restauran el comportamiento anterior de tiempo de ejecución constante. Intel y ARM recomiendan habilitar la protección según sea necesario para el código crítico; sin embargo, en la práctica, cálculos importantes pueden encontrarse en cualquier parte del núcleo y del espacio del usuario, por lo que se considera la posibilidad de activar permanentemente los modos DOITM y DIT para todo el núcleo.
Para los procesadores ARM, ya se han aceptado parches en la rama del núcleo Linux 6.2 que cambian el comportamiento del kernel, pero estos parches se consideran insuficientes ya que solo abarcan el código del núcleo y no cambian el comportamiento para el espacio de usuario. Para los procesadores Intel, la activación de la protección aún se encuentra solo en la fase de revisión. No se ha medido el impacto del parche en el rendimiento, pero según la documentación de Intel, habilitar el modo DOITM reduce el rendimiento (por ejemplo, debido a la desactivación de ciertas optimizaciones, como la carga anticipada específica para ciertos datos) y en futuros modelos de procesadores, la caída en el rendimiento podría intensificarse.
Fuente: opennet.ru
