Hace poco, la empresa Edera, la cual se encarga del desarrollo de soluciones para proteger la infraestructura de Kubernetes y los sistemas de IA, ha presentado OpenPaX, un proyecto de parches para el kernel de Linux orientado a mejorar la seguridad al contrarrestar vulnerabilidades relacionadas con la gestión de la memoria.
Como tal, OpenPaX se posiciona como una solución basada en parches para el kernel de Linux, pensada como una alternativa al parche PaX original, que ahora se incluye en grsecurity, lo cual proporciona a los administradores de sistemas una capa adicional de defensa contra las vulnerabilidades de seguridad relacionadas con la memoria.
A su vez, la comunidad del kernel de Linux puede aprovechar estos parches de código abierto, con la posibilidad de que algunas de sus funcionalidades sean integradas al núcleo principal cuando sea adecuado.
OpenPaX ofrece mitigaciones de código abierto para errores de seguridad de memoria en tiempo de ejecución, lo que desbloquea el acceso de los desarrolladores a funciones de seguridad críticas y, al mismo tiempo, ahorra a las empresas costos de soporte innecesarios.
Entre las características más destacadas de OpenPaX se encuentra el Mecanismo W^X (Write XOR Execute), el cual tiene como objetivo mejorar la seguridad del sistema mediante el mapeo de las páginas de memoria. Este mecanismo se asegura de que las páginas no puedan ser creadas de manera que, permitan tanto la escritura como la ejecución simultánea, lo que previene ciertos tipos de vulnerabilidades. Además, W^X establece restricciones adicionales al impedir que las páginas que han sido asignadas para escritura puedan cambiar a un estado ejecutable.
Otra característica importante de OpenPaX es su mecanismo de emulación de trampolines, que permite realizar llamadas a funciones situadas en la pila y áreas de memoria donde la ejecución de código está explícitamente deshabilitada. A pesar de esta restricción, la emulación de trampolines emplea técnicas seguras para garantizar que el código pueda seguir ejecutándose sin comprometer la seguridad del sistema. Este mecanismo intercepta los errores de página que ocurren cuando se intenta ejecutar código en una región de memoria marcada como no ejecutable, y emula el salto necesario para continuar con la ejecución.
Esto es especialmente útil en aplicaciones que dependen de libffi o GCC, los cuales generan dinámicamente trampolines en la pila. De esta forma, OpenPaX asegura que las operaciones que implican la manipulación de trampolines puedan realizarse de manera segura, sin vulnerar las políticas de ejecución de código del sistema.
Se menciona que debido a que las técnicas de protección implementadas pueden interferir con el funcionamiento de los compiladores JIT, OpenPaX permite gestionar de forma selectiva qué funciones se aplican a los archivos ejecutables mediante el uso de xattr y la herramienta paxmark.
También existe un modo «soft» para activar OpenPaX (a través de sysctl kernel.pax.softmode=1
), en el cual la protección está deshabilitada por defecto, pero puede ser activada para aplicaciones específicas que necesiten seguridad adicional.
“Nos complace poder ofrecer esto a la industria en general y como una oferta integrada para nuestros clientes con Edera Protect”, dijo Ariadne Conill, ingeniera distinguida y cofundadora de Edera y responsable del mantenimiento de Alpine Linux. “Hasta ahora, el acceso a mitigaciones de seguridad de memoria de sentido común como el espacio de usuario W^X requería que los desarrolladores y las empresas licenciaran un costoso parche de kernel que no podían redistribuir sin perder el acceso a versiones actualizadas del parche, lo que podría violar la GPL. OpenPaX cambia todo eso para mejor”.
Finalmente, cabe mencionar que OpenPaX se considera una alternativa sin restricciones a los parches de PaX del proyecto Grsecurity, que desde 2017 es un producto de pago. Los parches de OpenPaX están abiertos al público bajo la licencia GPLv2, lo que facilita su adopción en diversas distribuciones.
Actualmente, los parches de OpenPaX se pueden encontrar en su repositorio dé GitHub y los interesados en probar o conocer más sobre estos, pueden obtener mayor información en el siguiente enlace.
Por su parte, Alpine Linux ha anunciado que incluirá una versión experimental del kernel con estos parches en la próxima versión 3.21 y planea integrarlos como una opción estándar en la versión 3.22. Distribuciones como Gentoo y Arch Linux, que antes ofrecían versiones de kernel con PaX, también podrían adoptar OpenPaX. Asimismo, los desarrolladores de OpenPaX buscan que algunos de sus mecanismos sean integrados directamente en el kernel principal de Linux.
Si estás interesado en poder conocer más al respecto, puedes consultar los detalles en el siguiente enlace.