Copyright © - The OWASP FoundationPermission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License.
The OWASP Foundation
OWASP
http://www.owasp.org
OWASP TOP 10Los diez riesgos más importantes en aplicaciones web
Luis Martínez BachaSofttek AppSec Program ManagerHacker Ético Certificado, [email protected]
Héctor J. EspinozaAuditor de Seguridad en Aplicaciones - SofttekHacker Ético [email protected]
OWASP
OWASP Top 10 (Edición 2010)
http://www.owasp.org/index.php/Top_10
OWASP
A1 – Inyección (SQL)
Fire
wal
l
Hardened OS
Web Server
App ServerFi
rew
all
Dat
abas
esLe
gacy
Sys
tem
sW
eb S
ervi
ces
Dire
ctor
ies
Hum
an R
esrc
sB
illin
g
Custom Code
APPLICATIONATTACK
Cap
a de
Red
Cap
a de
Apl
icac
ión
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
Pedido
HTTP Consulta
SQLTabla BD
Respuesta HTTP
"SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’"
1. Aplicación presenta un formulario Web al atacante
2. Atacante envía un ataque en los datos del formulario
3. Aplicación dirige el ataque a la base de datos en una consulta SQL
Account Summary
Acct:5424-6066-2134-4334Acct:4128-7574-3921-0192Acct:5424-9383-2039-4029Acct:4128-0004-1234-0293
4. Base de datos ejecuta el ataque y envía los resultados cifrados nuevamente a la aplicación
5. Aplicación descifra los datos normalmente y envía los resultados al atacante
Account:
SKU:
Account:
SKU:
OWASP
Las inyecciones (como de SQL, OS y LDAP) ocurren cuando datos no confiables son enviados a un interprete como parte de un comando o consulta. Los datos hostiles del atacante pueden engañar al interprete al ejecutar comandos no previstos u obteniendo datos no autorizados.
_______ImpactoSEVERO
Considere el valor de negocio de los datos afectados y la plataforma sobre la que esta el interprete. Todos los datos podrían ser robados, modificados o borrados. ¿Tu reputación se podría ver afectada?
Las inyecciones pueden resultar en pérdida de datos, falta de contabilidad o denegación de acceso. Las inyecciones algunas veces pueden ocasionar que el servidor sea tomado por atacante por completo.
Los errores de inyección ocurren cuando una aplicación envía datos no confiables a un interprete.
Las inyecciones son muy comunes, particularmente en código heredado, casi siempre encontrado en consultas SQL, LDAP, XPATH y comandos OS, argumentos de programa, etc.
Los errores de inyección son fáciles de descubrir cuando se examina código, pero es más difícil durante pruebas sobre la instancia. Los escáner y fuzzers pueden ayudar a los atacantes a encontrarlos.
El atacante simplemente envía un ataque basado en texto que explota la sintaxis del interprete objetivo. Casi cualquier origen de datos puede ser un vector de inyección, incluyendo orígenes internos.
Considere cualquier persona que pueda mandar datos no confiables al sistema, incluyendo usuarios externos, usuarios internos y administradores.
ExplotableFACIL
DetectablePROMEDIO
PrevalenciaCOMUN_______
A1 - Inyección
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A2 – Scripting de Sitios Cruzados
Aplicación con vulnerabilidad XSS Reflejado
3
2
Atacante establece una trampa – actualizar perfil
Atacante ingresa un script malicioso en una pagina Web que almacena los datos en el servidor
1
Victima visualiza la pagina – accede al perfil
Script silenciosamente envía la sesión de la victima al atacante
Script se ejecuta en el navegador de la victima
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
OWASP
Los errores XSS ocurren siempre que una aplicación toma datos no confiables y los envía al navegador sin una validación y escape apropiado. XSS permite a los atacantes a ejecutar scripts en el navegador de la victima donde pueden adueñarse de sesiones de usuario, modificar sitios Web o redireccionar al usuario a sitios maliciosos.
_______ImpactoMODERADO
Considere el valor de negocio del sistema afectado y todos los datos que este procesa.
También considere el impacto de negocio al ser expuesto a la vulnerabilidad.
Los atacantes puede ejecutar scripts en un navegador de la victima para robar sesiones, modificar sitios Web, insertar contenido hostil, incrustar malware a través del navegador del usuario, etc.
XSS es el error de seguridad en aplicaciones Web mas común. Los errores de XSS ocurren cuando la aplicación incluye datos proporcionados por el usuario en una pagina enviada al navegador sin la validación y escape apropiado. Hay tres tipos conocidos de XSS:1) Almacenado2) Reflejado3) Basado en DOM
La detección de la mayoría de los errores de XSS es fácil ya con pruebas en la instancia de la aplicación o con análisis de código.
El atacante envía ataques de scripts basados en texto que explotan al interprete en el navegador. Casi cualquier origen de datos puede ser un vector de ataque, incluyendo orígenes internos como datos desde la BD.
Considere cualquier persona que pueda mandar datos no confiables al sistema, incluyendo usuarios externos, usuarios internos y administradores.
ExplotablePROMEDIO
DetectableFÁCIL
PrevalenciaMUY ESPARCIDO_______
A2 – Scripting de Sitios Cruzados
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A3 – Pérdida de Autenticación y Gestión de Sesiones
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
1 Usuario envía credenciales
2Sitio utiliza reescritura de URLs(ej., escribe sesión en URL)
3 Usuario hace clic en un link hacia http://www.hacker.com en un foro
www.boi.com?JSESSIONID=9FA1DB9EA...
4
El Atacante verifica encabezados de referencia en los logs de www.hacker.comy encuentra la JSESSIONID del usuario
5 El Atacante utiliza la JSESSIONID y toma posesión de la cuenta del usuario
OWASP
Las funciones de la aplicación relacionadas a la autenticación y el manejo de sesión no siempre son implementadas correctamente, permitiendo a los atacantes a recuperar contraseñas, llaves, identificadores de sesión o explotar otros errores de implementación para adquirir la identidad de otros usuarios.
_______ImpactoSEVERO
Considere el valor de negocio de los datos afectados o las funciones de la aplicación.
También considere el impacto de negocio de al ser expuesto públicamente a este esta vulnerabilidad.
Dichos errores pueden permitir ataques a una o incluso todas las cuentas. Una vez que el ataque a sido exitoso, el atacante puede hacer cualquier cosa que la victima podría hacer. Las cuentas privilegiadas son las que siempre están en la mira.
Los desarrolladores frecuentemente construyen esquemas de autenticación y gestión de sesiones personalizadas, pero construirlas correctamente es difícil. Como un resultado, esos esquemas personalizados frecuentemente tienen errores en áreas como el cierre de sesión, la gestión de contraseñas, temporizador de sesión, funciones de recordatorio de usuario, pregunta secreta, actualización de cuenta, etc. El encontrar esos errores puede ser difícil algunas veces ya que cada implementación es única.
El atacante usa pistas o fallas en la autenticación o en las funciones de gestión de las sesiones (por ejemplo, cuentas expuestas, contraseñas, identificadores de sesión) para personificar otros usuarios.
Considere a atacantes externos anónimos, así como usuarios con sus propias cuentas quienes traten de robar cuentas de otros. También considere usuarios internos esperando por tomar acción.
ExplotablePROMEDIO
DetectablePROMEDIO
PrevalenciaCOMÚN_______
A3 – Pérdida de Autenticación y Gestión
de Sesiones
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A4 – Referencia Directa Insegura a Objetos
Atacante identifica su numero de cuenta 6065 ?acct=6065
Lo modifica a un numero parecido ?acct=6066
Atacante visualiza los datos de la cuenta de la victima
https://www.onlinebank.com/user?acct=6065
OWASP
Una referencia directa a objeto ocurre cuando un desarrollador expone una referencia a una implementación de un objeto interno, como pueden ser un archivo o una llave de base de datos. Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular esas referencias para acceder a datos no autorizados.
_______ImpactoMODERADO
Considere el valor de negocio de los datos expuestos.
También considere el impacto de negocio de al ser expuesto públicamente a este esta vulnerabilidad.
Dichos errores pueden comprometer todos los datos que pueden ser referenciados por el parámetro. A menos que el espacio de nombres sea escaso, es fácil para un atacante el acceder a todas los datos disponibles.
Las aplicaciones frecuentemente usan el nombre actual o llave de un objeto durante la generación de las paginas Web. Las aplicaciones no siempre verifican si el usuario esta autorizado a ver el objeto en cuestión. Esto resulta en un error de referencia directa insegura a objetos. Los auditores pueden fácilmente manipular los valores de los parámetros para detectar dichos errores y el análisis de código rápidamente muestra si la autorización esta propiamente verificada.
El atacante, quienes un usuario autorizado del sistema, simplemente cambia el valor de un parámetro que directamente relaciona el objeto del sistema con otro objeto al que el usuario no esta autorizado.
Considere los tipos de usuarios de su sistema. Existe algún usuario con solo accesos parciales a ciertos tipos de datos del sistema.
ExplotableFÁCIL
DetectableFÁCIL
PrevalenciaCOMÚN_______
A4 – Referencia Directa Insegura a Objetos
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A5 – Falsificación de Petición de Sitios Cruzados
3
2
Atacante establece una trampa en algún sitio Web en la Internet (o simplemente a través de un correo electrónico)1
Mientras que la victima se encuentra conectada al sitio vulnerable, visualiza el sitio del atacante
Sitio vulnerable recibe un pedido legitimo de la victima y ejecuta la acción solicitada
<img> tag es cargado por el navegador – envía un pedido GET (utilizando las credenciales) a un sitio vulnerable
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
Tag oculto <img> contiene ataque contra sitio vulnerable
Aplicación con vulnerabilidad CSRF
OWASP
Un ataque de CSRF fuerza a un navegador de un usuario con sesión activa a mandar una petición HTTP falsa, incluyendo la cookie de la sesión de la victima y cualquier otra información incluida en la autenticación, hacia la aplicación Web vulnerable. Esto permite al atacante a forzar al navegador de la victima a generar peticiones que la aplicación vulnerable piense que son legítimos.
_______ImpactoMODERADO
Considere el valor de negocio de los datos afectados o de las funciones de la aplicación. Imagina el no estar seguro si los usuarios intentaron tomar esas acciones.
Considere el impacto a tu reputación.
Los atacantes pueden ocasionar que las victimas cambien cualquier dato que en teoría seria valido o realizar cualquier función que la victima estaría autorizada a usar.
CSRF toma ventaja de las aplicaciones Web que permiten a los atacantes a predecir todos los detalles de una acción particular.
Ya que los navegadores envían automáticamente credenciales como la cookie de sesión, los atacantes pueden crear paginas Web maliciosas donde puedan generar peticiones falsas que no son distinguibles de las legítimas.
La detección de los errores de CSRF es fácil por pruebas de penetración o análisis de código.
El atacante crea peticiones HTTP falsas y engaña a la victima al enviarlas a través de etiquetas de imagen, XSS u otras numerosas técnicas. Si el usuario es autenticado, el ataque será exitoso.
Considere a cualquier persona que pueda engañar a sus usuarios al enviar una petición a tu sitio Web. Cualquier sitio Web u otro tipo de alimentación en HTML que tus usuarios acceden pueden hacer esto.
ExplotablePROMEDIO
DetectableFÁCIL
PrevalenciaESPARCIDO_______
A5 – Falsificación de Petición de Sitios Cruzados (CSRF)
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A6 – Configuración Defectuosa de Seguridad
Hardened OS
Web Server
App Server
Framework
App Configuration
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istra
tion
Tran
sact
ions
Com
mun
icat
ion
Kno
wle
dge
Mgm
tE-
Com
mer
ceB
us. F
unct
ions
Test Servers
QA Servers
Source Control
Development
Database
AtacanteInterno
OWASP
Tener buena seguridad requiere tener una configuración de seguridad definida e implementada para la aplicación, marcos de trabajo, servidor de aplicación, servidor web, servidor de base de datos, y la plataforma. Todas estas configuraciones deben ser definidas, implementadas, y mantenidas ya que muchas no se envían con seguridad por defecto. Esto incluye mantener todo el software al día, incluyendo las librerías de código que utiliza la aplicación.
_______ImpactoMODERADO
El sistema podría estar completamente comprometido sin que usted lo sepa. Toda su información podría ser robada o modificada lentamente con el tiempo.
Los costos de recuperación podrían ser costosos.
Estos defectos suelen dar a los atacantes acceso no autorizado a algunos datos o alguna funcionalidad del sistema. Ocasionalmente, estos defectos resultan en un ataque que compromete completamente al sistema.
La Configuración Defectuosa de Seguridad puede ocurrir a cualquier nivel de una pila de aplicaciones, incluyendo la plataforma, servidor web, servidor de aplicaciones, marcos de trabajo y código personalizado. Los desarrolladores y administradores de red necesitan trabajar juntos para asegurar que toda la pila esta configurada apropiadamente. Los escáneres automáticos son útiles para la detección de parches faltantes, errores de configuración, el uso de cuentas por defecto, servicios innecesarios, etc.
El atacante accede a las cuentas por defecto, páginas no utilizadas, defectos sin parchar, archivos y directorios sin parchar, etc. para obtener acceso no autorizado al sistema u obtener conocimiento del mismo.
Considere atacantes anónimos externos así como usuarios con sus cuentas propias que pueden tratar de comprometer el sistema. También considere “insiders” que quieran ocultar sus acciones.
ExplotableFÁCIL
DetectableFÁCIL
PrevalenciaCOMÚN_______
A6 – Configuración Defectuosa de
Seguridad
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A7 – Almacenamiento Criptográfico Inseguro
Custom Code
Acc
ount
sFi
nanc
eA
dmin
istr
atio
nTr
ansa
ctio
nsC
omm
unic
atio
nK
now
ledg
e M
gmt
E-C
omm
erce
Bus
. Fun
ctio
ns
1
Victima ingresa su tarjeta de crédito en un formulario web
2El gestionador de errores almacena los datos de la
TC porque el gateway no se encuentra disponible
4 Atacante interno obtiene 4 millones de tarjetas de crédito
Log files
3Logs son accesibles a todos los miembros de IT por
motivos administrativos
OWASP
Muchas aplicaciones web no protegen adecuadamente los datos sensibles, tales como tarjetas de crédito, números de seguro social, y credenciales de autenticación, con la codificación o hashing adecuada. Los atacantes pueden robar o modificar dichos datos débilmente protegidos para llevar a cabo robo de identidad, fraudes de tarjetas de crédito u otros delitos.
_______ImpactoSEVERO
Considere el valor de negocio de la información perdida y el impacto a su reputación. ¿Cuál es su responsabilidad legal si esta información es expuesta? También considere el daño a su reputación.
El fracaso frecuentemente compromete todos los datos que debieron haber sido cifrados. Generalmente esta información incluye datos sensibles como registros de salud, credenciales, datos personales, tarjetas de crédito, etc.
La falla más común en esta área es simplemente no cifrar los datos que merecen ser cifrados. Cuando el cifrado es empleado, la generación y almacenamiento inseguro de llaves, no rotar las llaves, y el uso de algoritmos débiles es común. El uso de hashes débiles o sin “sal” para proteger contraseñas es también común. Atacantes externos tienen dificultades para detectar estos errores debido al acceso limitado. Deben explotar algo más primero para obtener el acceso necesario.
Los atacantes normalmente no pueden romper el cifrado. Rompen algo más, como encontrar las llaves, obtener copias de los datos en texto claro, o acceden datos a través de canales que automáticamente los descifran.
Considere usuarios de su sistema. ¿Les gustaría tener acceso a datos protegidos a los que no están autorizados? ¿Qué pasa con los administradores internos?
ExplotableFÁCIL
DetectableDIFÍCIL
PrevalenciaCOMÚN_______
A7 – Almacenamiento Criptográfico Inseguro
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A8 – Falla de Restricción de Acceso a URL
Atacante identifica que la URL indica su perfil
/user/getAccounts
La modifica apuntando a otra carpeta (perfil)
/admin/getAccounts, o /manager/getAccounts
Atacante visualiza otras cuentas
https://www.onlinebank.com/user/getAccountshttps://www.onlinebank.com/user/getAccounts
OWASP
Muchas aplicaciones web comprueban derechos de acceso a la URL antes de emitir enlaces y botones protegidos. Sin embargo, las aplicaciones necesitan llevar a cabo comprobaciones de control de acceso similares cada vez que estas páginas son accedidas, o un atacante será capaz de forjar las URLs para acceder estas páginas ocultas de todos modos
_______ImpactoMODERADO
Considere el valor de negocio de las funciones expuestas y la información que procesan.
También considere el impacto en su reputación si la vulnerabilidad se hace pública.
Estos defectos puede permitir que algunas o incluso todas las cuentas sean atacadas. Una vez que se tiene éxito, el atacante puede hacer cualquier cosa que la víctima puede hacer. Cuentas privilegiadas son normalmente el objetivo.
Las aplicaciones no siempre están protegiendo las solicitudes de páginas. Algunas veces, la protección de URL es manejada a través de la configuración, y el sistema está mal configurado. Algunas veces, los desarrolladores deben incluir comprobaciones de código adecuadas, y lo olvidan.
Detectar dichos defectos es fácil. La parte más difícil es identificar que páginas (URLs) existen para atacar.
El atacante, que es un usuario autorizado del sistema, simplemente cambia la URL a la de una página privilegiada. ¿Se concede acceso? Usuarios anónimos pueden acceder a páginas privadas que no están protegidas.
Cualquier persona con acceso a la red puede enviar una petición a su aplicación. ¿Podrían usuarios anónimos acceder a una página privada o usuarios regulares a páginas privilegiadas?
ExplotableFÁCIL
DetectablePROMEDIO
PrevalenciaPOCO COMÚN_______
A8 – Falla de Restricción de Acceso a URL
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A9 – Protección insuficiente en la Capa de Transporte
Custom Code
Empleados
Socios de NegociosVictima Externa
Backend Systems
Atacarte Externo
1Atacante Externo obtiene credenciales y datos de la red
2
Atacante Interno obtiene credenciales y datos de la red interna
Atacante Interno
OWASP
Las aplicaciones frecuentemente fallan en autenticar, cifrar y proteger la confidencialidad e integridad del tráfico de red sensible. Cuando lo hacen, en ocasiones utilizan algoritmos débiles, usan certificados expirados o inválidos, o no lo usan correctamente.
_______ImpactoMODERADO
Considere el valor de negocio de la información expuesta en el canal de comunicación en cuanto a las necesidades confidencialidad e integridad, y la necesidad de autenticar a los dos participantes.
Tales defectos exponen la información de usuarios individuales y puede conducir al robo de cuenta. Si una cuenta de administrador es comprometida, el sitio completo podría ser comprometido.
Las aplicaciones frecuentemente no protegen el tráfico de red. Tal vez usen SSL/TLS durante la autenticación, pero no en otra parte, exponiendo los datos y los identificadores de sesión a que sean interceptados. Certificados expirados o mal configurados también pueden ser utilizados.
Detectar las fallas básicas es fácil. Sólo hay que observar el tráfico de red del sitio. Defectos más sutiles requieren inspeccionar el diseño de la aplicación y la configuración del servidor.
Monitorear el tráfico de red de los usuarios puede ser difícil, pero en ocasiones es fácil. La dificultad principal radica en el monitoreo apropiado de tráfico de red mientras los usuarios están accediendo al sitio vulnerable.
Considere cualquier persona que pueda monitorear el tráfico de red de sus usuarios. Si la aplicación está en Internet, nadie sabe como sus usuarios la accederán. No olvide las conexiones en el back-end.
ExplotableDIFÍCIL
DetectableFÁCIL
PrevalenciaCOMÚN_______
A9 – Protección Insuficiente en la Capa
de Transporte
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque
OWASP
A10 – Redirecciones y Destinos No Validados
2
Atacante envía un ataque a la pagina web vulnerable1
La aplicación autoriza el pedido y lo procesa
El pedido es enviado a una pagina web que el atacante tiene acceso.
3La pagina destino falla al validar el parámetro, enviando al atacante directamente hacia una pagina no autorizada, salteando los controles de acceso.
public void doPost( HttpServletRequest request, HttpServletResponse response) {
try {String target =
request.getParameter( "dest" ) );...
request.getRequestDispatcher( target ).forward(request, response);
}catch ( ...
Filtro
public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) {
try {//
Do sensitive stuff here....
}catch ( ...
http://www.ejemplo.com/destino.jsp?fwd=admin.jsp
OWASP
Las aplicaciones web frecuentemente redireccionan y envían a los usuarios a otras páginas y sitios web, y usan datos no confiables para determinar las páginas de destino. Sin una validación adecuada, los atacantes pueden redirigir a las víctimas a sitios de phishing o malware, o usar reenvíos para acceder páginas no autorizadas
_______ImpactoMODERADO
Considere el valor de negocio de conservar la confianza de sus usuarios.
¿Qué si son poseídos por malware?
¿Qué si los atacantes pueden acceder funciones que son internas únicamente?
Tales redireccionamientos pueden intentar instalar malware o engañar alas victimas para que revelen contraseñas u otra información sensible. Reenvíos inseguros pueden permitir que se eluda el control de acceso
Las aplicaciones frecuentemente redirigen a los usuarios a otras páginas, o utilizan reenvíos internos de similar manera. Algunas veces la página de destino se especifica en un parámetro no validado, permitiendo al atacante elegir la página de destino.
El atacante envía enlaces hacía redireccionamientos no validos y engaña a la victima para que haga clic sobre dicho enlace. Las víctimas son más propensas a hacer clic en él, ya que el enlace es a un sitio válido. El objetivo del atacante es utilizar reenvíos inseguros para eludir controles de seguridad.
Considere cualquier persona que puede engañar a los usuarios para que envíen una petición a su sitio web. Cualquier sitio web o cualquier otro tipo de alimentación en HTML que sus usuarios utilicen podría hacer esto.
ExplotableFÁCIL
DetectableFÁCIL
PrevalenciaPOCO COMÚN_______
A10 – Redirecciones y Destinos No Validados
Agentes Atacantes
Impacto de NegocioImpacto TécnicoDebilidad en SeguridadVectores de
Ataque