5Programacion_segura

Páginas: 6 (1366 palabras) Publicado: 1 de octubre de 2015
Seguridad en Sistemas Informáticos
(SSI)

Programación Segura

Carlos Pérez Conde
Departament d'Informàtica
Escola Técnica Superior d'Enginyeria
Universitat de València

17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

1

Bibliografía específica


OWASP Top 10 2007!
Project Lead: Andrew van der Stock
Co-authors: Jeff Williams, Dave Wichershttp://www.owasp.org/index.php/OWASP_Top_Ten_Project



WASC: Threat Classification
Co-authors: Jeff Williams, Dave Wichers
http://www.webappsec.org/projects/threat/



Damn Vulnerable Linux (DVL)
Project Lead: Andrew van der Stock
Co-authors: Jeff Williams, Dave Wichers
http://www.damnvulnerablelinux.org/

17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

2

OWASP Top 10 2007!
A1 – Cross Site Scripting (XSS)
A2 – Injection FlawsA3 – Malicious File Execution
A4 – Insecure Direct Object Reference
A5 – Cross Site Request Forgery (CSRF)
A6 – Information Leakage and Improper Error Handling
A7 – Broken Authentication and Session Management
A8 – Insecure Cryptographic Storage
A9 – Insecure Communications
A10 – Failure to Restrict URL Access
17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

3

A1 – Cross Site Scripting(XSS)
HTML generado por el cliente es ejecutado por el
navegador web






Solución







17/04/08

reflejado: enlaces en correos, páginas web...
almacenado: correo web, foros, blogs...
inyección a través de DOM: manipulando document.URL,
document.location...)

validar y/o codificar todos los parámetros antes de incluirlos en
páginas HTML
validar usando principalmente “listas blancas”evitar errores de canonicalización

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

4

A2 – Injection Flaws
(particularly SQL injection)
Exploits of a Mum
http://xkcd.com/327/

17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

5

Inyección SQL
Navegador web
Login: carlos
Password: *************

Servidor de aplicaciones
SELECT user_id FROM Students
WHERE user_name = 'carlos' anduser_password = 'mi-pw-secreto';

Base de datos
17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

6

Inyección SQL
Navegador web
Login: Robert'); DROP TABLE Students; -Password: ****

Servidor de aplicaciones
SELECT user_id FROM Students
WHERE user_name = 'Robert'); DROP TABLE Students; --' and
user_password = 'aaaa';

Base de datos
17/04/08

Carlos Pérez, Dpto. de Informática, ETSE, UVEG

7 Soluciones para la inyección SQL


No confiar en la validación realizada por el cliente



Normalizar los valores de entrada



Aplicar validación en el servidor



Restringir los tipos de datos aceptados



Codificar y validar la salida que se genera



Usar preferentemente “listas blancas”



Tratar de forma segura los errores



Aplicar el principio del menor privilegio

17/04/08

CarlosPérez, Dpto. de Informática, ETSE, UVEG

8

A3 – Malicious File Execution
Empleo de ficheros o nombres de ficheros
proporcionados por el usuario






Soluciones









17/04/08

include $_REQUEST['filename’];
datos en ficheros de sesión, registros, imágenes subidas...
usar flujos como zlib:// ó ogg:// que ignoran
allow_url_fopen ó allow_url_include

usar referencias indirectasdiferenciar datos validados de los del usuario
validar la entrada usando “listas blancas”
filtrar los intentos de acceso remoto desde el servidor web
usar mecanismos de aislamiento: chroot, jail, máquinas virtuales...
usar mecanismos del lenguaje: tainting, allow_url_fopen...
Carlos Pérez, Dpto. de Informática, ETSE, UVEG

9

A4 – Insecure Direct Object Reference
La aplicación expone una referencia a unobjeto interno



fichero, directorio
registro de una base de datos




Ejemplos:





require_once ($_REQUEST['language’]."lang.php");


manipulable con inyección del byte nulo:
"../../../../etc/passwd%00"

int cartID = Integer.parseInt( request.getParameter( "cartID" ) );
String query = "SELECT * FROM table WHERE...
Leer documento completo

Regístrate para leer el documento completo.

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS