Hardening y Seguridad

Hardening y Seguridad (25)

Fortificar los sistemas o aplicaciones para hacerlos más robustos y seguros, y mitigar la exposición de nuestros datos

Protección de ejecutables: FORTIFY_SOURCE

by

La macro FORTIFY_SOURCE es una característica de GCC y GLIBC que intenta detectar algunas clases de buffer overflows. Aunque esta activada por defecto si compilamos con GCC, esta característica esta estrechamente relaciona con otros parámetros, principalmente el optimizador, que hará variar su funcionamiento.

Leer más ...

Capabilities - Compartimentar al todopoderoso root

by

El esquema tradicional de los entornos Linux/UNIX dividen los procesos en dos categorías, los que tienen el usuario ID 0 (root, o superusuario) y tiene todos los privilegios de acceso y ejecución, y el resto, sujetos al chequeo de privilegios y con la incapacidad de realizar ciertas tareas. La función de capabilities en GNU/Linux es dividir los privilegios disponibles para los procesos que se ejecutan como usuario root en grupos más pequeños de privilegios.

Leer más ...

Uso de fs-verity en kernel 5.7

by

A partir de la versión 5.5 del kernel linux se incluye la opción de verificación de integridad y protección de autenticidad transparente para ficheros de solo lectura. Como tengo la versión 5.4 instalada lo primero que vamos a hacer es instalar la última versión estable del kernel, en el momento que escribo esto es la 5.7.

Leer más ...

I-node flags, ACL y atributos extendidos en GNU/Linux

by

Vimos en una entrada anterior la forma clásica en la que GNU/Linux trabaja con los permisos de los ficheros. Vamos a ver ahora las extensiones que se han añadido con el fin de complementar el sistema básico de permisos. Lo primero que vamos a ver son los I-node Flags. Estos son un grupo de flags que se pueden seleccionar en los ficheros para que tengan una consideración especial, por ejemplo el flag a hace que el fichero sea solo para añadir, o el flag i hace el fichero inmutable e indeleble. 

Leer más ...

Sistema clásico de permisos en GNU/Linux

by

La seguridad en el sistema de ficheros es fundamental en un sistema operativo multiusuario. En el sistema de permisos clásico de GNU/Linux cada fichero tiene un grupo de 9 permisos (bits) que controlan quien tienen acceso de lectura, escritura o ejecución de un fichero, más tres bits adicionales especiales conocidos como set-user-ID, ser-group-ID y sticky bit. Este grupo de 12 bits se implementa en el conjunto de propiedades del fichero y forman lo que se conoce como modo de acceso. Se almacenan separadamente por cada fichero junto otros 4 bit con la información del tipo de fichero formando parte del i-node del fichero.

Leer más ...

Crear claves GnuPG y uso de clave maestra offline

by

En una entrada anterior ponía una infografía de la Free Software Fundation y el enlace a emailselfdefense.fsf.org donde nos indicaba la necesidad de proteger los correos electrónicos de miradas indiscretas y la forma de hacerlo. Para la gente que no esta muy familiarizada con el uso de certificados es uno de los mejores sitios donde empezar. Voy a detallar aquí como se crean las claves desde la línea de mandatos y como utilzar subkeys con el fin de tener una clave maestra offline y no tener que llevarla siempre instala, por ejemplo en el portátil.

Leer más ...

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

by

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

by

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

by

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 ...