Desarrollo de aplicaciones seguras - Hermes Sistemas · La más importante la de SQL. (Permite la...

58
CURSO DE SEGURIDAD TELEMATICA 2011 TITULO PONENCIA 1 Antonio Domínguez Groba Responsable del Dpto. de Desarrollo de Hermes Sistemas Desarrollo de aplicaciones seguras

Transcript of Desarrollo de aplicaciones seguras - Hermes Sistemas · La más importante la de SQL. (Permite la...

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 1

Antonio Domínguez Groba Responsable del Dpto. de Desarrollo de Hermes Sistemas

Desarrollo de aplicaciones seguras

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 2

Índice ●  Introducción

–  Definiciones –  Niveles de Satisfacción –  Calidad

●  Vulnerabilidades –  Arquitectura –  OWASP 2010

●  Normativas (NO)

●  Desarrollo –  Nuevos Paradigmas –  AOP y Filtros

●  Calidad: Sistematización y automatización –  Análisis Dinámico –  Análisis Estático –  Entorno de Integración

continua

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 3

INTRODUCCIÓN

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 4

Definiciones ●  Seguridad: Característica que indica que un sistema esta

libre de todo peligro, daño o riesgo.

Demasiada rigidez ●  Fiabilidad: Probabilidad de que un sistema se comporte

tal y como se espera de el.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 5

Definiciones (II) ●  Seguridad (fiabilidad) es la suma de. . .

–  Confidencialidad: La información en un sistema de cómputo y la transmitida por un medio de comunicación, ha de ser accedida SÓLO por los actores autorizados.

–  Integridad: La información sólo puede ser modificada por actores autorizados.

–  Disponibilidad: La información ha de permanecer accesible a los actores autorizados.

●  (Adicionalmente) No repudio: Un actor no puede negar lo que ha dicho.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 6

Definiciones (III)

●  FLUJO NORMAL –  Los mensajes en una red se envían a partir de un

emisor a uno o varios receptores –  El atacante es un tercer elemento.

Emisor Receptor

Atacante

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 7

Definiciones (IV)

  INTERRUPCIÓN (ataque contra la Disponibilidad)

 El mensaje no puede llegar a su destino, un recurso del sistema es destruido o temporalmente inutilizado.

 Ejemplos: Destrucción de una pieza de hardware, cortar los medios de comunicación o deshabilitar los sistemas de administración de archivos.

Emisor Receptor

Atacante

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 8

Definiciones (V)

  INTERCEPCIÓN (ataque contra la Confidencialidad)

 Una persona, computadora o programa sin autorización logra el acceso a un recurso controlado.

 Ejemplos: Escuchas electrónicos, copias ilícitas de programas o datos, escalamiento de privilegios.

Emisor Receptor

Atacante

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 9

Definiciones (VI)

  MODIFICACIÓN (ataque contra la Integridad)

  La persona sin autorización, además de lograr el acceso, modifica el mensaje.

 Ejemplos: Alterar la información que se transmite desde una base de datos, modificar los mensajes entre programas para que se comporten diferente.

Emisor Receptor

Atacante

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 10

Definiciones (VII)

  FABRICACIÓN (ataque contra la Autenticidad)

 Una persona sin autorización inserta objetos falsos en el sistema.

 Ejemplos: Suplantación de identidades, robo de sesiones, robo de contraseñas, robo de direcciones IP, etc...

  Es muy difícil estar seguro de quién esta al otro lado de la línea.

Emisor Receptor

Atacante

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 11

Seguridad

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 12

CALIDAD ●  La calidad de servicio (QoS = Quality Of Service) es un

riesgo primario relacionado con la arquitectura ●  Calidades Sistémicas: Propiedades (no funcionales) que

establecen la calidad de servicio (QoS) que un sistema expone.

–  Manifiestas –  Operacionales –  Evolutivas

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 13

Calidades Sistémicas - Manifiestas ●  Observables por los usuarios del sistema.

–  Rendimiento: Tiempo de respuesta desde el punto de vista del usuario. –  Confiabilidad: Grado de probabilidad de realizar operaciones correctamente. –  Disponibilidad: Porcentaje de tiempo que un sistema puede procesar solicitudes.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 14

Calidades Sistémicas - Operacionales ●  Observables cuando el sistema está operando en

producción. –  Throughput. Solicitudes atendidas por unidad de tiempo. –  “Manageability”. Cantidad inversa de esfuerzo para realizar labores

administrativas. –  “Serviceability”. Esfuerzo para actualizar el sistema para reparar

errores. –  Seguridad. Prevención de uso indeseado, por abuso o uso

inapropiado: Identidad, Autoridad, Confidencialidad, Auditabilidad, Integridad

–  “Testability”. Esfuerzo invertido para detectar y aislar errores.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 15

Calidades Sistémicas - Evolutivas ●  Relacionadas con el comportamiento del sistema cuando

sufre algún cambio –  Escalabilidad. La habilidad para soportar la calidad de servicio requerida

conforme la carga aumenta. –  Flexibilidad. Esfuerzo ahorrado cuando se hace un cambio de configuración. –  Portabilidad. Esfuerzo ahorrado cuando se migra a una infraestructura diferente. –  Reusabilidad. Esfuerzo ganado en la utilización de componentes existentes. –  Extensibilidad. Esfuerzo ahorrado para adicionar nuevas funcionalidades. –  Mantenibilidad. Esfuerzo ahorrado para revisar y corregir errores.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 16

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 17

Vulnerabilidades

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 18

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 19

Arquitectura

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 20

OWASP ●  OWASP (Open Web Application Security Project); TOP

10 – 2010 UPDATE ●  A1 - Inyección ●  A2 - Cross site scripting (XSS) ●  A3 - Pérdida de Autenticación y Gestión de Sesiones ●  A4 - Referencia Directa Insegura a Objetos ●  A5 - Falsificación de Peticiones en Sitios Cruzados (CSRF) ●  A6 – Defectuosa configuración de seguridad ●  A7 – Almacenamiento Criptográfico Inseguro ●  A8 - Falla de Restricción de Acceso a URL ●  A9 – Protección Insuficiente en la capa de Transporte ●  A10 – Redirecciones y Reenvíos no validados

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 21

A1 - Inyección ●  La más importante la de SQL. (Permite la modificación de

sentencias ejecutadas en el servidor).

String data = request.getParameter(“data”);

String sql= “select field1 from table1 where id=‘” + data + ‘”

select field1 from table1 where id=‘12’

http://host?data=12

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 22

String data = request.getParameter(“data”);

String sql= “select field1 from table1 where id=‘” + data + ‘”

select field1 from table1 where id=‘12’ or ‘1’=‘1’

http://host?data=12’ or ‘1’=‘1

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 23

A2 - Cross site scripting (XSS) •  Permite la ejecución de scripts en el navegador del cliente

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 24

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>XSS Vulnerability Sample</title> </head> <body>

<h1>XSS Vulnerability Sample</h1> <form method="GET" action="XSS.jsp"> Enter string here:

<input type="text" name="userInput" size=50> <input type=submit value="Submit"> </form>

<br> <hr> <br>

Output from last command: <%= request.getParameter("userInput")%> <body> </html>

<script> alert(“If you see that you have a potential XSS Vulnerability !”); </script>

•  Código vulnerable

•  Entrada de ataque.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 25

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 26

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 27

A3 - Pérdida de Autenticación y Gestión de Sesiones ●  Significa romper el sistema de autenticación o el de

gestión de sesiones.

●  EJEMPLO –  Un usuario realiza una petición al servidor con un jsessionID

(identificador de sesión aleatorio) aleatorio.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 28

A4 - Referencia Directa Insegura a Objetos ●  Generalmente una página HTML está llena de

referencias al servidor de información (identificadores de BBDD, rutas de ficheros, etc.)

●  Los clientes pueden modificar esto y acceder a información a la que no tengan acceso.

<select name=“accounts”> <option value=“20771111422000086456”>account 1</option> <option value=“20771111422000086487”>account 2</option> </select>

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 29

A5 - Falsificación de Peticiones en Sitios Cruzados (CSRF)

●  Cualquiera que pueda suplantar a usuarios al momento de enviar peticiones a un sitio web.

●  Engañar a un usuario a realizar peticiones sin saberlo (p.ej. Mediante XSS), a una página WEB, esperando que esté autenticado en ella.

●  Ejemplo: –  Imaginemos la siguiente URL de un banco, que lo que hace es ingresar

fondos del usuario autenticado en la cuenta del atacante: –  http://example.com/app/transferFunds?amount=1500

&destinationAccount=4673243243 –  El atacante, puede incluir mediante XSS, una imagen, cuyo contenido es

la URL de ataque. Si el usuario está autenticado en la web, enviará su acreditación, y la web del banco lo dará como petición válida.

–  <img src="http://example.com/app/transferFunds? amount=1500&destinationAccount=4673243243“ width="0" height="0" />

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 30

●  OTROS: Filtración de información y manejo inadecuado de errores –  Hay que tener cuidado en la gestión de errores de no enviar al

usuario más información de la necesaria. –  La información obtenida es usada para ejecutar otro tipo de

ataques: ●  Sql Injection ●  Insecure Direct Object Reference ●  etc.

–  Esta información suele ser muy útil para herramientas automáticas de auditoría. (pueden obtener servidor, versión, a veces nombre de las tablas o ficheros …. )

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 31

Desarrollo

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 32

Conceptos - OCP ●  Open-Closed Principle (OCP)

–  Una entidad software (una clase, módulo o función) debe estar abierta a extensiones pero cerrada a modificaciones. (evitar efectos colaterales)

–  Para ello, el comportamiento de una entidad debe poder ser alterado sin tener que modificar su propio código fuente

–  http://www.objectmentor.com/resources/articles/ocp.pdf

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 33

Conceptos - DIP ●  Dependency Inversión Principle (DIP)

–  Un módulo concreto A, no debe depender directamente de otro módulo concreto B, sino de una abstracción de B

–  Conclusión ●  En aquellas partes que queremos dejar “abiertas” (ex. servicio) usaremos

interfaces en vez de implementaciones. ●  Las implementaciones se “inyectarán” mediante setters o en el construtor de

clase. ●  Quién las inyecta? -> Nosostros o IoC…

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 34

Conceptos - IoC ●  Inversión de Control (IoC)

– Como hacer para que la clase que requiere colaboradores de tipo abstracto (DI), funcione con instancias concretas?

– En tiempo de compilación nos vale con tener el contrato, pero en tiempo de ejecución necesitamos la implementación concreta

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 35

Conceptos - IoC (II) – Tradicionalmente las clases tendrían una

sentencia de tipo “ myPersistor = new MyDB()” dentro de su constructor o de algún otro método interno para crear una instancia concreta

– Soluciones: ●  Uso de Factorías (intrusiva) -> hay que declararlo

en el código ●  Uso de entidad externa que se encarga de crear la

clase e inyectar la dependencia (mediante setter o constructor)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 36

Conceptos - IoC (III) –  Dichas entidades externas pueden ser:

●  Clases propias. ●  IoC Container: Herramienta externa que gestiona las dependencias

y las inyecta donde hacen falta •  Los contedores precisan de un archivo de configuración donde se indica que

entidades tienen dependencias y cuales son. •  Muchos de estos contedores, crean un proxy de la clase a inyectar (en

tempo de execución), que envuelve a la clase real y la dota de ciertas características como AOP; inyectando este proxy en vez de la clase real.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 37

Conceptos - AOP ●  Programación Orientada a Aspectos (AOP)

–  La codificación de una funcionalidad se suele “mezclar” con otras funcionalidades genéricas secundarias (seguridade, logging, control de excepcións…)

–  Así diferenciaremos: ●  Codificación de una funcionalidad o módulo (verticalidad) ●  Funcionalidades comunes utilizadas a lo largo de la aplicación.

(horizontalidad)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 38

Conceptos - AOP (II) –  Cross-cutting concerns (problema cruzado):

●  Requisitos secundarios que se comparten entre varias clases de una misma aplicación independentes entre si

–  Advice (consejo) ●  código adicional que queremos aplicar a nuestro modelo existente

–  Point-cut (punto de corte) ●  Punto de ejecución en el flujo de la aplicación donde precisamos aplicar el

problema cruzado

–  Aspect (aspecto) ●  Combinación del punto de corte y el consejo

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 39

Filtros ●  El programador puede interceptar el flujo de las peticiones

en el contedor de un modo estándar

●  Los filtros capturan la petición y pueden cambiar el fluxo de esta (decidir a que servlet dirigirla, rechazarla, encadenar una serie de servlets para distribuír las tareas, etc…)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 40

Filtros (II) ●  Aplicaciones de los filtros:

–  Autenticación y autorización, tanto en el contedor como en recursos externos (sistemas legados)

–  Sistemas de registro de eventos (log) y auditoría –  Implementación de cachés de contenido generado –  Control parametrizado de acceso (p.e. dependiendo de hora/

fecha) –  Transformacións da resposta:

●  Cifrado ●  Compresión ●  Transformacións XSLT

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 41

Filtros vs Aspectos ●  Ambos son interceptores:

–  Los filtros interceptan la petición de un recurso web. –  Los aspectos interceptan llamadas a los métodos de las clases.

●  Los filtros son propios de proyectos Web, mientras que los aspectos son más genéricos.

●  Los filtros tienen una granularidad mucho mayor que los aspectos.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 42

Filtros vs Aspectos II ●  A nivel de contexto es importante recordar que:

–  Los filtros dependen del contenedor web –  Los aspectos dependen del contenedor IoC de Spring.

●  Debido a esto tenemos las seguientes limitaciones: –  En una petición web, hasta que no se entre en el ciclo de vida del

Servlet los filtros non estarán activos (ie, error 500,401…) –  Todas las llamadas a clases que no estén inyectadas por IoC, no se

le poderán aplicar aspectos

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 43

Calidad: Sistematización y automatización

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 44

Testing ●  Test-driven development (TDD)

–  desarrollo guiado por pruebas

●  Ciclo De Desarrollo –  Elegir un requerimiento –  Escribir una prueba –  Verificar que la prueba falla –  Escribir la implementación –  Ejecutar las pruebas automatizadas –  Refactorización –  Actualización de la lista de requerimientos

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 45

Testing (II) ●  Partes de un Test (AAA)

–  Arrange (Preparar) –  Act (Actuar) –  Assert (Afirmar).

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 46

Testing (III)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 47

Testing (IV) ●  Tests de aceptación: Aquellas que cumplen un requisito

de negocio. (Un caso de uso tendrá 1 o más tests de aceptación).

–  Tests Funcionales: Aquellos que prueba una funcionalidad del código

–  Tests NO Funcionales: Prueban aspectos más cualitativos: Pruebas de estrés, tiempos de respuesta, robustez a fallos del entorno…

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 48

Testing (V) ●  Tests unitarios: (granularidad fina)

–  Prueban un trozo de código (método o clase) de la manera más independiente posible (que no dependa de factores externos)

–  Todo Test Unitario ha de ser: ●  Atómico (mínima cantidad de funcionalidad posible.) ●  Independiente (no puede depender de otros para producir un resultado

satisfactorio) ●  Inocuo (no altera el estado del sistema.) ●  Rápido

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 49

Testing (VI) ●  Tests unitarios II

–  FIRST: Fast, Independent, Repeatable, Small y Transparent –  Para poder realizar dichos tests unitarios, de manera idpte e

inocua se suelen usar “dobles” del resto del código o sistema ●  Dummy: Se pasa como argumento pero nunca se usa ●  Fake: implementación que realmente funciona pero, por lo general, toma

algún atajo o cortocircuito que le hace inapropiado para producción (como una base de datos en memoria por ejemplo).

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 50

Testing (VII) –  Stub: proporciona respuestas predefinidas a llamadas hechas

durante los tests. Simula respuestas a consultas. –  Mock: Como un stub, pero además valida el comportamiento en la

colaboración. ●  Si un método ha llamado a otros, cuantas veces, el orden en que han sido

invocados….

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 51

Testing (VIII) ●  Tests Integración (granularidad gruesa)

–  Complemento a los tests unitarios, donde habíamos “falseado” el acceso a datos para limitarnos a trabajar con la lógica de manera aislada

●  Han de ser INOCUOS: Han de dejar el contexto como lo encontraron

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 52

Testing (IX) ●  Tests Integración II

–  Tests de Sistema ●  Tipo de Tests de integración, que prueba todo el sistema, como si

fuese el usuario final (incluido GUI…) ●  Ex Herramientas: Selenium… ●  Son muy frágiles: cualquier cambio en cualquiera de las partes que

componen el sistema, puede romperlos. ●  No se recomienda tener muchos debido al gran coste de

mantenimiento que tienen.

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 53

Análisis Estático ●  La experiencia demuestra que entre el 30% y el 70% de

los defectos, de diseño y código son detectados por las técnicas estáticas: –  Revisión e inspección del código. –  Análisis de métricas. –  Análisis de código mediante herramientas automatizadas:

●  código muerto o variables sin usar, ●  optimizaciones genéricas ●  búsqueda de errores comunes ●  normativa de estilo ●  ….

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 54

Análisis Estático (II) ●  Las revisiones también proporcionan beneficios más

generales: –  Evaluación del progreso del proyecto –  Potencia las capacidades de los participantes –  Mejoran la comunicación entre el equipo de desarrollo,

aumentando su motivación, pues los productos pasan a ser documentos públicos.

–  Proporciona aprendizaje, retroalimentación y prevención –  Forma y educa a los participantes

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 55

Análisis Estático (III)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 56

Entorno de desarrollo

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 57

Entorno de desarrollo (II)

CU

RSO

DE SEG

UR

IDA

D TELEM

ATICA 2011

TITULO

PON

ENC

IA 58

Gracias por su atención !!