Tarjeta de seguridad del kernel de Linux

La protección del kernel de Linux es un tema muy complejo. Incluye una gran cantidad de conceptos complejamente interrelacionados, y sería útil tener su representación gráfica. Por lo tanto, desarrollé un mapa protector de kernel de Linux . Aquí hay una leyenda:



Entonces, el mapa contiene los siguientes objetos:

  • Clases de vulnerabilidad
  • técnicas para su operación para realizar ataques;
  • mecanismos de detección de errores;
  • Tecnología de protección.

A su vez, las tecnologías de protección central son heterogéneas. Algunos son parte del kernel de Linux vanilla, otros se envían por separado por varias razones (por ejemplo, hay características de seguridad comerciales). Existen mecanismos de protección del núcleo que requieren soporte de hardware.

Por lo tanto, el tema de seguridad del kernel de Linux es bastante extenso, y el mapa desarrollado ayuda en su estudio y análisis. Cada línea que conecta los objetos en el mapa indica su influencia mutua, cuya esencia debe aclararse en la documentación. Este principio puede ilustrarse en un fragmento del mapa general. La Figura 1 muestra las características de seguridad de la tecnología STACKLEAK.



Diagrama 1. Características de seguridad de la tecnología STACKLEAK

PAX_MEMORY_STACKLEAK es una tecnología comercial de protección de kernel de Linux que contrarresta la explotación de los siguientes tipos de vulnerabilidades: desbordamiento de pila en profundidad, uso de variables no inicializadas y pérdida de información en el espacio del usuario. El mapa contiene identificadores para estas clases de vulnerabilidad (CWE, Common Weakness Enumeration).

La tecnología STACKLEAK se ha introducido en el núcleo de Linux vanilla, como se refleja en el diagrama. También hay un mecanismo de depuración de KMSAN que le permite detectar al probar el núcleo el uso de variables no inicializadas y la fuga de información en el espacio del usuario.

Vale la pena señalar que esta tarjeta no aborda el problema de reducir el perímetro de ataque para el núcleo. De hecho, deshabilitar casi cualquier funcionalidad que reduzca el tamaño del ejecutable también reduce el perímetro del ataque. Y en este proyecto, el enfoque principal está en las herramientas de seguridad que proporcionan defensa propia del kernel de Linux contra la explotación de vulnerabilidades.

La Figura 2 muestra el mapa completo de la versión 5.1 del kernel (al hacer clic en la imagen se abrirá el tamaño completo).


Diagrama 2. Mapa de características de seguridad del kernel de Linux v5.1

El mapa está en constante evolución, debe actualizarse al menos en cada versión del kernel. Por lo tanto, es conveniente tener la fuente en forma de texto y mantenerla en el sistema de control de versiones. Además, para no tener que organizar manualmente los objetos con un número mínimo de intersecciones de conexiones, se eligió el lenguaje DOT para crear el mapa, y el esquema es generado automáticamente por el paquete GraphViz usando el siguiente comando:

dot -Tsvg linux-kernel-defence-map.dot -o linux-kernel-defence-map.svg 

La tarjeta de seguridad del kernel de Linux es un proyecto de código abierto bajo licencia GPL v3.0. El repositorio se encuentra en GitHub . Este proyecto es extremadamente útil para:

  • monitorear el estado actual de la seguridad del kernel,
  • desarrollando modelos de amenazas de IP basados ​​en GNU / Linux,
  • selección de remedios apropiados.

Además, el mapa de características de seguridad del kernel de Linux está diseñado para ayudarlo a aprender sobre el código fuente, la documentación y otras fuentes de información sobre este tema:


Y para automatizar la verificación de las opciones de seguridad en el archivo de configuración del kernel de Linux, creé el proyecto kconfig-hardened-check , que se está desarrollando activamente gracias al trabajo colaborativo abierto. La utilidad admite arquitecturas x86_64, arm64, x86_32 y arm.

Los invito a participar en el desarrollo del mapa de características de seguridad del kernel de Linux y la utilidad kconfig-hardened-check .

Source: https://habr.com/ru/post/457460/


All Articles