programas y programaciónldm/mypage/data/si/apuntes/2019... · 2019-06-23 · virus: un programa...

10
1 SEGURIDAD INFORMÁTICA UNTDF – IDEI | Profesor Lic. Leonardo de - Matteis | 2019/1c Programas y programación IDEI | 2019-1c | 2 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur Seguridad Informática Programas y programación Temario Organización de la memoria, desbordamientos de buffer y contramedidas. Errores comunes de programación. Repaso de malwares y sus características. Detección de virus. Consejos para que los programadores escriban código pensando en la seguridad de los sistemas. IDEI | 2019-1c | 3 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur Seguridad Informática Programas y programación Asignación de memoria Stack Heap Static data Code High addresses Low addresses IDEI | 2019-1c | 4 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur Seguridad Informática Programas y programación Datos e instrucciones El mismo valor hexadecimal en el mismo lugar en la memoria puede ser un dato o una instrucción dependiendo de si la computadora lo trata como código o como datos. Esta será la base de muchos ataques. IDEI | 2019-1c | 5 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur Seguridad Informática Programas y programación Desbordamiento de buffer Buffer overflow: Ocurre cuando los datos se escriben más allá del espacio asignado para ellos. Ejemplo: un décimo byte en una arreglo de 9 bytes. En un desbordamiento los valores insertados por un atacante ingresan a regiones de memoria asignadas para datos, pero luego esas entradas de datos pueden sobrescribir memoria que contiene instrucciones ejecutables. La idea es encontrar oportunidades de desbordamiento de buffer que permitan sobrescribir memoria del programa que luego serán ejecutadas. IDEI | 2019-1c | 6 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur Seguridad Informática Programas y programación Desbordamiento de buffer Buffer overflow: El problema proviene de la no comprobación de la longitud de la información recibida y que será almacenada. Sino se reservó el espacio adecuado se sobrescribirán otras partes de memoria (con código ejecutable o no). Consecuencias: Mejor caso: segmentation fault y se elimina el proceso. Peor caso: el atacante ejecuta código arbitrario con los privilegios que posea el programa

Upload: others

Post on 21-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

1

SEGURIDAD INFORMÁTICA

UNTDF – IDEI | Profesor Lic. Leonardo de - Matteis | 2019/1c

Programas y programación

IDEI | 2019-1c | 2 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Temario

Organización de la memoria, desbordamientos de buffer y

contramedidas.

Errores comunes de programación.

Repaso de malwares y sus características.

Detección de virus.

Consejos para que los programadores escriban código pensando

en la seguridad de los sistemas.

IDEI | 2019-1c | 3 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Asignación de memoria

Stack

Heap

Static data

Code

High addresses

Low addresses

IDEI | 2019-1c | 4 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Datos e instrucciones

El mismo valor

hexadecimal en el mismo

lugar en la memoria puede

ser un dato o una

instrucción dependiendo de

si la computadora lo trata

como código o como datos.

Esta será la base de

muchos ataques.

IDEI | 2019-1c | 5 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Buffer overflow:

Ocurre cuando los datos se escriben más allá del espacio asignado

para ellos.

Ejemplo: un décimo byte en una arreglo de 9 bytes.

En un desbordamiento los valores insertados por un atacante

ingresan a regiones de memoria asignadas para datos, pero luego

esas entradas de datos pueden sobrescribir memoria que contiene

instrucciones ejecutables.

La idea es encontrar oportunidades de desbordamiento de buffer

que permitan sobrescribir memoria del programa que luego serán

ejecutadas.

IDEI | 2019-1c | 6 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Buffer overflow:

El problema proviene de la no comprobación de la longitud de la

información recibida y que será almacenada.

Sino se reservó el espacio adecuado se sobrescribirán otras partes

de memoria (con código ejecutable o no).

Consecuencias:

Mejor caso: segmentation fault y se elimina el proceso.

Peor caso: el atacante ejecuta código arbitrario con los privilegios

que posea el programa

2

IDEI | 2019-1c | 7 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Organización de la memoria

Ubicación del código

ejecutable de un proceso y

datos locales cuando se

encuentra en memoria

para ejecutarse.

Notar la ubicación del

código del sistema y sus

estructuras de datos.

System Data

Program Code

Local Data

System Code

High addresses

Low addresses

Stack

Heap

IDEI | 2019-1c | 8 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Programa:

char sample[10];

int i;

for (i=0; i<=9; i++)

sample[i] = ‘A’;

sample[10] = ‘B’;

IDEI | 2019-1c | 9 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Casos:

IDEI | 2019-1c | 10 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

La pila luego de llamadas a procedimientos

Stack

P3Procedure A

P2

P1

Prog Ctr

Stack Ptr

P2

P1

Prog Ctr

Stack Ptr

call B

call C

Procedure C

Procedure B

IDEI | 2019-1c | 11 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Pila comprometida

Stack

P3Procedure A

P2

P1

Prog Ctr

Stack Ptr

code

code

Prog Ctr

Stack Ptr

call B

call C

Procedure C

Procedure B

IDEI | 2019-1c | 12 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer: ejemplo

Programa:

#include <stdio.h>

#include <string.h>

#include <stdlib.h>

int main(int argc, char *argv[])

{

char buffer[5];

strcpy(buffer, argv[1]);

printf("buffer content= %s\n", buffer);

printf("strcpy() executed...\n");

return 0;

}

3

IDEI | 2019-1c | 13 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer: ejemplo

Prueba 1:

12345678

$> Ejecución correcta.

Prueba 2:

123456789 (9 bytes)

$> Segmentation fault y finalización del proceso.

IDEI | 2019-1c | 14 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Funciones vulnerables en lenguaje C:

− gets()

− scanf()

− sprintf()

− strcpy()

− strcat()

IDEI | 2019-1c | 15 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Técnicas para lograr ejecución de código:

Sobrescribir el contador del programa almacenado en la pila.

Sobrescribir parte del código en memoria baja, sustituyéndolo

por instrucciones nuevas.

Sobrescribir el contador del programa y datos en la pila de

ejecución para que el contador del programa apunte a la pila.

IDEI | 2019-1c | 16 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Daños:

Sobrescritura de:

Alguna porción de datos del programa.

Instrucciones del programa.

Datos o código pertenecientes a otro programa.

Datos o código pertenecientes al sistema operativo.

IDEI | 2019-1c | 17 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Consecuencias:

Sobrescribir instrucciones de un programa brinda al atacante los

privilegios de ejecución con que cuente el programa.

Sobrescribir las instrucciones del sistema operativo otorga a los

atacantes los máximos privilegios de ejecución.

IDEI | 2019-1c | 18 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Contramedidas:

Comprobar longitudes antes de escribir datos.

Verificar que los subíndices de arreglos/matrices están dentro de los límites.

Chequear condiciones de límite para evitar errores off-by-one.

Limitar el ingreso de caracteres al número máximo aceptable.

Limitar privilegios de los programas para reducir daño potencial.

4

IDEI | 2019-1c | 19 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Contramedidas:

Muchos lenguajes poseen protecciones de desbordamiento.

Los analizadores/compiladores de código pueden identificar

muchas vulnerabilidades de desbordamiento de buffer.

Generar en tiempo de compilaciones instrucciones que permitan

agregar canary values en la pila para señalar posibles

modificaciones durante la ejecución.

IDEI | 2019-1c | 20 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Desbordamiento de buffer

Contramedidas:

Generar en tiempo de

compilación instrucciones

que permitan agregar

canary values en la pila

para señalar posibles

modificaciones durante la

ejecución.

IDEI | 2019-1c | 21 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Mediación incompleta

Mediación:

significa verificar que el sujeto está autorizado para realizar la operación sobre un objeto.

Formas de prevención:

Siempre validar todas las entradas, verificar que sean adecuadas/razonables.

Limitar el acceso de los usuarios a datos y funciones confidenciales.

Utilizar un monitor de referencia para especificar una mediación completa.

IDEI | 2019-1c | 22 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Del tiempo de verificación al tiempo de uso

Mediación realizada con un "cebo y interruptor" en el medio.

File:

my_file

Action:

Change byte 4 to A

File:

your_file

Action:

Delete file

IDEI | 2019-1c | 23 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Del tiempo de verificación a tiempo de uso

Formas de prevención:

El proceso de verificación de acceso debe mantener/bloquear los

datos referentes a la solicitud hasta que se complete la acción

solicitada.

No permitir ninguna interrupción (pérdida de control) durante la

validación.

La rutina de validación puede copiar los datos del espacio del

usuario al área de la rutina, fuera del alcance del usuario, y

realizar verificaciones de validación en la copia.

IDEI | 2019-1c | 24 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Del tiempo de verificación a tiempo de uso

Todos los métodos citados son expansiones del criterio de

inviolabilidad para un monitor de referencia:

Los datos en los que se basa la decisión de control de acceso y

el resultado de la decisión deben estar fuera del dominio del

programa cuyo acceso se está controlando.

5

IDEI | 2019-1c | 25 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Malware

Programas insertados por un agente con intención maliciosa para

causar efectos no anticipados o no deseados.

Tipos:

Virus: Un programa que puede replicarse y pasar código

malicioso a otros programas no maliciosos modificándolos.

Worm: Un programa que difunde copias de sí mismo a través

de una red.

Caballo de troya: Código que, además de su efecto declarado,

tiene un segundo efecto, no obvio y malicioso.

IDEI | 2019-1c | 26 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Malware: tipos

IDEI | 2019-1c | 27 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Malware: tipos

IDEI | 2019-1c | 28 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Malware: historia

IDEI | 2019-1c | 29 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Malware: historia

IDEI | 2019-1c | 30 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataque de día cero

Malware activo que explota una vulnerabilidad del producto no

conocida previamente y para la cual el fabricante del software no

tiene contramedidas disponibles.

Difícil de detectar con las prácticas tradicionales de seguridad

informática.

Los atacantes pasan años desarrollando la habilidad de encontrar

tales vulnerabilidades.

Prácticas avanzadas de detección y parches se vuelven críticas

para este tipo de vulnerabilidades.

6

IDEI | 2019-1c | 31 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataque de día cero: explotación

IDEI | 2019-1c | 32 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataque de día cero: explotación

Etapas del ataque:

Desarrolladores crean una aplicación, pero no saben que el código contiene una vulnerabilidad.

Atacantes reconocen la vulnerabilidad antes de que los desarrolladores puedan encontrarla o tener tiempo para corregirla.

El atacante escribe código malicioso y ejecuta un ataque mientras la vulnerabilidad aún está disponible.

Después de la explotación las organizaciones reconocen la fuga de datos, robo de identidad.

El desarrollador investiga consecuencias y corrige la vulnerabilidad.

IDEI | 2019-1c | 33 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataque de día cero: línea de tiempo de la vulnerabilidad

IDEI | 2019-1c | 34 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataque de día cero: detección

Técnicas:

Detección basada en firmas: la detección de explotaciones de vulnerabilidades se realiza en relación con las firmas que ya se han creado en base conocimiento anterior.

Detección basada en estadísticas: este es un enfoque que depende de los datos históricos de los perfiles de ataques previos.

Detección basada en comportamiento: basada en el examen de cómo se utilizan las técnicas para explotar las vulnerabilidades y cómo interactúan con el objetivo.

Detección híbrida: combinación de varios métodos de detección.

IDEI | 2019-1c | 35 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataques a organizaciones

El malware no solo ataca a usuarios individuales y computadoras

individuales. Aplicaciones de relevancia en industrias también

están en riesgo.

Caso de ejemplo: Stuxnet (2010) explota una vulnerabilidad en

el software de sistemas de control industrial de Siemens. Sobre

sistemas de control de supervisión y adquisición de datos (SCADA)

utilizados para controlar procesos en: fabricación de productos

químicos, refinación y distribución de petróleo, y plantas de

energía nuclear.

IDEI | 2019-1c | 36 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Ataques a organizaciones

7

IDEI | 2019-1c | 37 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Daño generado por código malicioso

Daño a los usuarios y sistemas:

Envío de correo electrónico a contactos de usuarios.

Borrado / cifrado de archivos.

Modificación de información del sistema. Ejemplo: registro de

Windows.

Robo de información sensible. Ejemplo: contraseñas.

Adherirse a archivos críticos del sistema.

Ocultamiento de copias de malware en diferentes ubicaciones.

IDEI | 2019-1c | 38 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Daño generado por código malicioso

Daño al mundo:

Algunos tipos de malware infectan millones de sistemas.

Velocidad cada vez mayores de propagación.

Sistemas infectados a menudo se convierten en áreas de prueba

y ensayo para nuevas infecciones.

IDEI | 2019-1c | 39 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Transmisión y propagación

Métodos:

Programa de instalación y instalación.

Archivo adjunto.

Virus en documentos. Ejemplos: archivos de texto, base de

datos, presentación de diapositivas, imágenes hojas de cálculo.

Autorun.

IDEI | 2019-1c | 40 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Transmisión y propagación

Métodos:

Usando programas no maliciosos:

Virus en archivos (dentro del programa).

Virus que rodean un programa.

Virus integrados.

Virus que reemplazan completamente el programa original.

IDEI | 2019-1c | 41 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Transmisión y propagación

Rodeando el programa.

Integrado con el programa.

IDEI | 2019-1c | 42 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Activación del malware

Métodos:

Ejecución única.

Virus en sector de inicio/arranque.

Virus residentes en memoria.

Archivos de aplicación (macro virus).

Bibliotecas de código.

Compiladores, loaders, linkers, monitores para ejecución,

debuggers.

8

IDEI | 2019-1c | 43 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Activación del malware

Virus en sector de inicio:

IDEI | 2019-1c | 44 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Efectos del malware

Virus Effect How It Is Caused

Attach to executable

program • Modify file directory

• Write to executable program file

Attach to data or

control file • Modify directory

• Rewrite data

• Append to data

• Append data to self

Remain in memory • Intercept interrupt by modifying interrupt handler address table

• Load self in non-transient memory area

Infect disks • Intercept interrupt

• Intercept operating system call (to format disk, for example)

• Modify system file

• Modify ordinary executable program

Conceal self • Intercept system calls that would reveal self and falsify result

• Classify self as “hidden” file

Spread infection • Infect boot sector

• Infect systems program

• Infect ordinary program

• Infect data ordinary program reads to

control its execution

Prevent deactivation • Activate before deactivating program and block deactivation

• Store copy to reinfect after deactivation

IDEI | 2019-1c | 45 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Toolkits/Rootkits

Kits de herramientas de malware que posibilitan que atacantes

novatos busquen y hagan uso de diferentes vulnerabilidades con

solo presionar un botón.

IDEI | 2019-1c | 46 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Contramedidas para el usuario

Utilizar software adquirido de fuentes confiables.

Prueba de desarrollos y aplicaciones en entornos aislados.

Abrir archivos adjuntos cuando se sabe que son seguros.

Tratar cada sitio web como potencialmente dañino.

Crear y mantener copias de seguridad.

IDEI | 2019-1c | 47 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Detección del malware

Los programas para búsqueda de virus buscan signos de

infección con código malicioso utilizando firmas en archivos de

programas y memoria.

Los anti-virus tradicionales poseen problemas para mantenerse

al día con respecto al surgimiento de nuevo malware.

Estudios demuestran que los antivirus sólo detectan

aproximadamente el 45% de las infecciones.

IDEI | 2019-1c | 48 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Detección del malware

Mecanismos:

Patrones (secuencia de bytes) conocidos en archivos.

Patrones (secuencia de bytes) conocidos en memoria

(procesos).

Patrones de ejecución.

Patrones de almacenamiento.

9

IDEI | 2019-1c | 49 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Patrones de detección del malware

IDEI | 2019-1c | 50 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Contramedidas para los desarrolladores

Utilizar código modular, cada módulo debe ser:

o Para un solo propósito

o Pequeño

o Sencillo

o Independiente

Encapsulación: ocultar detalles de la implementación de un

componente.

Ocultación de información: describir que hace un módulo no

como lo hace.

IDEI | 2019-1c | 51 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Contramedidas para los desarrolladores

Sospecha mutua: cada rutina protege sus datos de interfaz para que otras solo tengan acceso limitado.

Ejemplo: no se puede confiar en que un procedimiento para ordenar las celdas en una lista no modifique esos elementos, mientras que ese procedimiento no puede confiar en que su interlocutor proporcione una lista como entrada o proporcione el número correcto de elementos de la misma.

Confinamiento: programa limitado estrictamente en cuanto a qué recursos del sistema puede acceder y utilizar.

Diversidad: reduce el número de objetivos susceptibles a un tipo de ataque.

Simplicidad!

IDEI | 2019-1c | 52 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Verificación y prueba del código

Prueba de unidades: enviar un conjunto predeterminado de

datos al componente que se está probando y observar qué

acciones de salida y datos se producen. Se verifican estructuras

de datos internos, lógica y condiciones de entorno para los datos

de entrada y salida.

Pruebas de integración.

Prueba de funcionamiento.

Pruebas de rendimiento.

IDEI | 2019-1c | 53 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Verificación y prueba del código

Test de aceptación: ¿responde a lo solicitado por el cliente?

Pruebas de instalación.

Pruebas de regresión: después de realizar un cambio para

mejorar el sistema, hay que asegurar que todas las funciones

restantes siguen funcionando.

Pruebas de penetración.

IDEI | 2019-1c | 54 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Principios de diseño

Privilegios mínimos: para que cada usuario y procesos realicen

sus tareas.

Economía de mecanismo: el diseño del sistema de protección

debe ser pequeño, simple y sencillo. Analizado detenidamente, y

bien verificado.

Diseño abierto: no depender de la ignorancia de los atacantes

potenciales. El mecanismo de protección debe ser público.

10

IDEI | 2019-1c | 55 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Principios de diseño

Basado en permisos: la condición por defecto debe ser denegar

el acceso. Se deben especificar que objetos son accesibles.

Separación de privilegios: el acceso a los objetos debería

depender de más de una condición. Ejemplo: autenticación de

usuario + clave criptográfica.

Facilidad de uso: si el mecanismo de protección es fácil de usar

será poco probable que se evite.

IDEI | 2019-1c | 56 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Principios de diseño

Mecanismo menos común: objetos compartidos proporcionan

canales potenciales para el flujo de información. Utilizar

sistemas que empleen separación física o lógica para reducir el

riesgo asociado a compartir objetos.

Mediación completa: cada intento de acceso debe ser verificado.

Acceso directos e indirectos deben ser considerados en el

mecanismo de protección.

IDEI | 2019-1c | 57 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Otras contramedidas

Pruebas de corrección del programa (donde sea posible).

Programación defensiva: los diseñadores no solo deben escribir

código correcto también deben anticipar lo que podría salir mal.

Diseño por contrato: implica desarrollo de programas formal.

Documentar para cada módulo de programa sus condiciones

previas, postcondiciones e invariantes. Permitirá identificar

posibles fuentes de error.

IDEI | 2019-1c | 58 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Otras contramedidas

Estrategias no recomendadas:

Pruebas de penetración y posterior corrección

Seguridad por oscuridad

http://ithare.com/advocating-obscurity-part-iii-code-obfuscation-basics/

IDEI | 2019-1c | 59 Universidad Nacional de Tierra del Fuego, Antártida e Islas del Atlántico Sur

Seguridad InformáticaProgramas y programación

Resumen

Los ataques de desbordamiento de buffer aprovechan el hecho

de que las instrucciones están almacenadas en memoria.

Los programas pueden tener diferentes tipos de

vulnerabilidades: errores off-by-one, mediación incompleta y

condiciones de carrera.

El malware puede tener una variedad de efectos dañinos

dependiendo de sus características.

Los desarrolladores pueden usar una variedad de técnicas para

escribir y probar código teniendo en cuenta la seguridad.