Seguridad en Sistemas Operativos: Ataques, Protección, Control de Acceso y Máquinas Virtuales
Seguridad
Se basa en la confianza en la integridad del sistema y previene accesos no autorizados.
Protección
Mecanismos de control de acceso, gestión de permisos de usuarios y procesos, implementados a nivel del sistema operativo.
Técnicas de ataque
- Suplantación
- Replay: retransmisión de datos.
- Man in the middle: el atacante se sitúa en el flujo de datos.
Capas de seguridad
- Física
- De red: acceso a recursos externos, que abre un vector de ataque.
- Del sistema operativo: actualizaciones continuas y servicios innecesarios deshabilitados.
- De aplicaciones: aplicaciones maliciosas o con errores (bugs).
Métodos de ataque
1. Malware
1.1 Caballo de Troya
Simula ser legítimo, pero contiene funciones maliciosas.
1.2 Inyección de código
Desbordamiento de buffer: escribir más allá de la memoria permitida.
Virus
Necesitan acción humana para propagarse. Infectan programas o partes del sistema. Tipos: archivo, arranque, macro y rootkits.
Gusano (Worm)
Se propaga por sí solo.
2. Amenazas en red
- Sistema zombi: máquina comprometida que es utilizada para atacar sin que su dueño lo sepa.
- DDoS: ataque distribuido desde miles de equipos.
- Port scanning: descubre puertos abiertos para encontrar vulnerabilidades.
Encriptación
- Simétrica: la misma clave sirve para cifrar y descifrar.
- Asimétrica: clave pública (libre, se usa para cifrar) y clave privada (del dueño, sirve para descifrar).
Protección
Mecanismos que controlan qué procesos y usuarios pueden acceder a qué recursos del sistema operativo.
Principio de mínimo privilegio
Programas, procesos y usuarios deben tener solo los permisos necesarios para realizar una tarea.
Anillos de la CPU
- Anillo 0: kernel.
- Anillo 3: aplicaciones de usuario.
El cambio entre anillos se realiza mediante instrucciones específicas (syscall).
Dominios de protección
Un dominio es un conjunto de accesos permitidos a objetos. Cada proceso se ejecuta en un dominio específico.
Matriz de acceso
- Filas: dominios.
- Columnas: objetos.
- Celdas: derechos (lectura, escritura, ejecución, etc.).
Operaciones especiales
- Switch: cambiar de un dominio a otro.
- Copy: copiar un derecho de acceso de una fila a otra dentro de la misma columna.
- Transfer: copiar un derecho de un dominio a otro y eliminarlo del origen.
- Owner: control de los derechos de acceso en una columna completa.
- Control: control de los derechos de acceso en una fila completa.
Implementación de la matriz
- Lista de acceso (Access list): cada objeto guarda una lista de dominios que tienen derechos sobre él.
- Lista de capacidades (Capability list): cada dominio guarda los objetos a los que tiene acceso.
- Lock-key: los dominios poseen una llave que abre las cerraduras de los objetos.
Modelos de control de acceso
- RBAC (Role-Based Access Control): los permisos se asignan a roles; los usuarios toman roles y heredan sus permisos.
- MAC (Mandatory Access Control): el sistema asigna etiquetas a objetos y procesos; las decisiones de acceso se basan en la comparación de dichas etiquetas.
Máquinas virtuales
Entorno virtual que simula un PC real, permitiendo ejecutar sistemas operativos y aplicaciones dentro de otro sistema.
Componentes
- Host: el equipo físico real.
- VMM (Virtual Machine Monitor): crea la capa de virtualización.
- Guest: el sistema operativo que corre dentro de la VM.
Técnicas de virtualización
1. Trap-and-emulate
- El guest intenta ejecutar una instrucción privilegiada.
- El hardware genera un trap.
- El VMM, que corre en el kernel real, captura el trap.
- Lo emula de manera segura y devuelve el control al guest.
2. Binary translation
- El VMM lee el código del guest antes de ejecutarlo.
- Si hay instrucciones peligrosas o privilegiadas, las traduce a instrucciones seguras.
- El código traducido se guarda en la caché de instrucciones.
3. Asistencia por hardware
Existen dos modos: root (VMM) y non-root (guest). Las instrucciones privilegiadas las controla la CPU directamente, sin necesidad de traps hacia el VMM. El estado del guest se guarda en el VMCS (Virtual Machine Control Structure).