5Programacion_segura
Páginas: 6 (1366 palabras)
Publicado: 1 de octubre de 2015
(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
7Soluciones 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.