De las numerosas funciones nuevas de Linux 5.13 , una de las funciones de seguridad más destacadas es capacidad de aleatorizar el desplazamiento de la pila del kernel en cada llamada al sistema. Con Linux 5.13 estable inminente, aquí hay algunos puntos de referencia de rendimiento del impacto de habilitar esta función de seguridad.
Linux 5.13 tiene la capacidad de aleatorizar el desplazamiento de la pila del kernel por llamada al sistema para que sea más difícil para los atacantes lograr ataques basados en la pila en el kernel para los exploits que se basan en el determinismo de la pila. Esta característica principal del kernel se inspiró en el”RANDKSTACK”existente de PaX, mientras que la implementación real es diferente.
Con las arquitecturas admitidas inicialmente de x86/x86_64/AArch64, la opción de aleatorizar el desplazamiento de la pila del kernel para cada syscall se puede configurar mediante el parámetro de arranque randomize_kstack_offset=. Los proveedores de distribución y otros constructores de kernel pueden configurar el valor predeterminado con la opción CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT Kconfig.
Un punto de referencia sintético básico que analiza la sobrecarga de rendimiento de llamadas al sistema de randomize_kstack_offset lo sitúa en alrededor del 1%. En los últimos días, he estado ejecutando docenas de puntos de referencia en una computadora portátil Lenovo con procesador Ryzen 5 5500U, analizando el costo de rendimiento sintético y del mundo real de tener randomize_kstack_offset habilitado y luego deshabilitado usando una compilación del kernel Linux 5.13 casi final.
La prueba básica ctx_clock para medir la cantidad de ciclos para realizar un cambio de contexto vio el mayor impacto de cualquiera de las pruebas comparativas ejecutadas… Concedido, solo 20 ciclos y un impacto relativo mucho menor en el rendimiento del cambio de contexto que lo que nosotros’He visto algunas mitigaciones de seguridad.
De las cargas de trabajo del mundo real probadas, Redis experimentó el mayor impacto, que resultó ser aproximadamente un 2% más lento con la aleatorización del desplazamiento de la pila del kernel por llamada al sistema habilitada.
En docenas de otros puntos de referencia sintéticos y del mundo real, el randomize_kstack_offset representó un 1% o menos de impacto y, en muchos casos, ninguna diferencia medible.
Entonces, para aquellos preocupados por la seguridad del sistema, el impacto en el rendimiento no parece ser demasiado grande cuando se ejecuta con randomize_kstack_offset=1 en una modesta computadora portátil Ryzen 5. Esto concuerda con otras pruebas anteriores en el ciclo y con las expectativas ascendentes de 1% o menos de gastos generales.