Protección de ejecutables: FORTIFY_SOURCE

Publicado en Hardening y Seguridad

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

Usar libsecret para manejar claves en Gnome Keyring

Publicado en Creando Código

Vamos a ver como funciona GNOME Keyring y como acceder a los datos que almacena usando la librería libsecret.

Muchas aplicaciones requieren un password de acceso como medida de control para acceder a algún recurso. Con el fin de evitar que la aplicación nos solicite el usuario y contraseña cada vez que accedemos al recurso protegido se utiliza GNOME Keyring. GNOME Keyring es una colección de componentes en GNOME que almacena secretos, contraseñas, claves, certificados y los pone a disposición de las aplicaciones. Las aplicaciones que usan GNOME Keyring pueden almacenar estos secretos y usarlos cuando los necesitan. Al estar integrado con el inicio de sesión del usuario, el almacenamiento secreto se puede desbloquear cuando el usuario inicia sesión en el sistema.

Leer más ...

Crear claves GnuPG y uso de clave maestra offline

Publicado en Hardening y Seguridad

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

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 ...
Suscribirse a este canal RSS