Aislar procesos en sandboxing con Firejail

Publicado en Hardening y Seguridad

Las técnicas de sandboxing (caja de arena) se utilizan para aislar determinados procesos con el fin de que tengan una visión parcial y limitada de los recursos disponibles del sistema. El objetivo es limitar la posibilidad de acceder a recursos, principalmente en el caso de fallo o que el proceso se vea comprometido y explotado por algún malware o atacante, limitando entonces el alcance que pueden hacer dentro del sistema.

Leer más ...

Computación Segura con filtros - SECCOMP BPF

Publicado en Hardening y Seguridad

Cada uno de los procesos que ejecutamos en el sistema tienen la opción de interaccionar con el kernel a través de las system calls (llamadas a sistema). Los procesos pueden pedir al kernel que realicen alguna tarea como modificar un fichero, crear un nuevo proceso, cambiar los permisos a un directorio, etc. utilizando un API (Application Programming Interface) por el que el kernel da acceso a sus servicios.

Muchas de las system calls están accesibles a cada proceso en el área de usuario, pero una gran parten no se utilizan durante toda la vida del proceso. El filtrado Seccomp ofrece un medio para limitar el número de system calls que expone el kernel a un determinado proceso.

Leer más ...

Protección de ejecutables: Stack Protector (Canaries)

Publicado en Hardening y Seguridad

Los canaries, stack guard o stack protector, son valores conocidos (security cookies) que se colocan entre un buffer y los datos de control en la pila para monitorizar los desbordamientos de buffer. Cuando el buffer se desborda, los primeros datos que se corromperán generalmente serán el security cookie y, por lo tanto, una verificación fallida de estos datos alertarán sobre un desbordamiento que luego se puede manejar, por ejemplo, invalidando los datos dañados o finalizando de forma controlada.

Leer más ...

Namespaces - Aíslar los procesos GNU/Linux en sus propios entornos de sistema

Publicado en Hardening y Seguridad

Los namespaces de GNU/Linux permiten encapsular recursos globales del sistema de forma aislada, evitando que puedan interferir con procesos que estén fuera del namespace, sin tener que recurrir a máquinas virtuales. Los cambios en el recurso global son visibles para otros procesos que son miembros del namespace, pero son invisibles para otros procesos fuera de él. Un uso de los namespaces es implementar contenedores.

Leer más ...

Protección de ejecutables: RELRO

Publicado en Hardening y Seguridad

Como vimos en entradas anteriores NX marcaba algunas zonas de memoria como no ejecutables, entre ellas el Stack, para evitar la inyección de shellcode. Por su parte la combinación de ASLR y PIE mitigan las técnicas que utilizan direcciones conocidas de segmentos de memoria como la técnica denominada ROP ‘return-oriented programming’ que reutiliza instrucciones existentes en el programa, que son ejecutables, en lugar de inyectar instrucciones arbitrarias en la memoria y ejecutarlas.

Leer más ...

Protección de ejecutables: PIE

Publicado en Hardening y Seguridad

PIE o 'Position Independent Executables' son programas ejecutables binarios hechos enteramente de código independiente de posición. Esta protección de los ejecutables viene a complementar la que vimos en un post anterior sobre ASLR (Address Space Layout Randomization) que como vimos es una característica del kernel que una vez activada aleatorizaba las zonas de memoria correspondientes a las bibliotecas compartidas, stack, VDSO y head.

Leer más ...

Protección de ejecutables: ASLR

Publicado en Hardening y Seguridad

ASLR o Address Space Layout Randomization es una técnica utilizada para mitigar los ataques contra los desbordamientos de buffer, haciendo que los segmentos de memoria no tengan una posición fija en memoria sino que esta varíe de forma aleatoria en cada ejecución. Esta técnica fue incluida en el kernel de linux en su versión 2.6.12 (de junio de 2005) aunque se podía instalar anteriormente en forma de parche. 

Leer más ...

Protección de ejecutables: NX

Publicado en Hardening y Seguridad

Una de las funcionalidades que se han ido añadiendo para la creación de ejecutables más seguros, con el fin de mitigar la explotación de vulnerabilidades inyectando shellcodes en los mismos, es NX. NX es la abreviación de no ejecutar, o segmento no ejecutable. Lo que hace es que cuando se carga la aplicación en la memoria no permite que en determinados segmentos se pueda ejecutar código, es decir, marca estos segmentos como no ejecutables y si se intenta ejecutar código desde ahí se produce una excepción.

Leer más ...
Suscribirse a este canal RSS