10 Principales Controles Proactivos de OWASP,
The goal of the OWASP Top 10 Proactive Controls project (OPC) is to raise awareness about
application security by describing the most important areas of concern that software
developers must be aware of. We encourage you to use the OWASP Proactive Controls to get your developers started with application security. Developers can learn from the mistakes of other organizations. We hope that the OWASP Proactive Controls is useful to your efforts in building secure software.
1. root@b3h1qu3:~# CONTROLES
PROACTIVOS DE OWASP ■
M e t o d ó l o g o y J e f e d e P r o y e c t o s d e H a c k i n g É t i c o | D i r e c c i ó n d e
S e g u r i d a d I n f o r m á t i c a | V i c e r r e c t o r í a d e T e c n o l o g í a | U n i v e r s i d a d
d e l a s C i e n c i a s I n f o r m á t i c a s | B l o g > B e h i q u e D i g i t a l
Msc. Henry Raúl González Brito
3. VERIFICA LA SEGURIDAD ANTES Y
DESPUÉS
• Ten en cuenta la seguridad desde etapas tempranas de
concepción del proyecto.
• No existe una tecnología que sea inmune a las
vulnerabilidades. Desde el comienzo debes tener en
cuenta que tu aplicación deberá permitir que le sea
que actualizada la base tecnológica.
• Selecciona una base tecnológica de fabricantes que
suministran soporte.
5. PARAMETRIZA LAS CONSULTAS
• Los ataques de inyección de código SQL son unos de
los más importantes problemas de seguridad a nivel
mundial.
• La inserción de un simple código SQL puede permitir
que la base de datos entera sea robada, eliminada o
modificada.
• Si tenemos en cuenta que normalmente las bases de
datos de varias aplicaciones web son gestionadas por
el mismo SGBD. Puede afirmarse que un ataque contra
una aplicación puede afectar al resto de las
aplicaciones que consuman servicios del SGBD común.
7. CODIFICA LOS DATOS
• Convertir caracteres especiales de una forma que
evite la ejecución de código ofuscado en el cliente.
• Debe aplicarse en el momento en que se adicionen los
datos al documento HTML.
9. VALIDA TODAS LAS ENTRADAS
• Todos los datos provenientes del clientes deben ser
tratados como no confiables y deben ser analizados
antes de ejecutar cualquier operación con ellos.
• La validación debe ser sintáctica y semántica.
• La validación final siempre tiene que ejecutarse en el
servidor de aplicaciones.
10. VALIDA TODAS LAS ENTRADAS
• Campos de formularios.
• Encabezados HTTP
• Cookies.
• Parámetros GET y POST
(incluyendo campos
ocultos)
• Archivos.
• Servicios (Web service,
XML-RPC, etc.)
• ¿Otros métodos HTTP?
11. VALIDA TODAS LAS ENTRADAS
• Utiliza listas negras de contenido malicioso.
• Utiliza listas blancas de contenido “confiable”.
• Recuerda que la validación no hace necesariamente
las entradas más seguras.
• La seguridad de la aplicación tiene que reforzarse
donde las entradas son empleadas.
13. IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
• Implementa un mecanismo racional ante ataques de
fuerza bruta.
• Implementa un mecanismo seguro de recuperación de
contraseñas.
• Evita que las contraseñas sean recordadas y
cacheadas.
14. IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
• ¿Cómo se generan, activan, expiran y transmiten los ID
de sesión? (Ataques: Fijación de sesiones, secuestro
de sesiones, predicción de ID de sesiones, etc.)
• Repetir el proceso de autenticación ante operaciones
sensibles como la confirmación de una compra o el
cambio de contraseña.
15. • Envía siempre las credenciales a través de canales
seguros.
IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
16. • Evita usar credenciales por defecto y la predicción de
las existentes.
IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
17. • Evita la enumeración de credenciales de usuarios.
IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
18. • Evita el envío constante de credenciales primarias de
usuarios.
IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
19. • ¿Cómo expiran las cookies de sesión?
IMPLEMENTA CONTROLES DE IDENTIDAD
Y AUTENTICACIÓN
21. IMPLEMENTA CONTROLES DE ACCESO
• No confundir la autorización con la autenticación.
• Los controles de acceso son simples: Solo tienen que
decir si el usuario tiene o no acceso a un determinado
recurso.
22. • Obliga todas las peticiones a pasar por un mecanismo
único de autorización.
• Deniega el acceso a los recursos por defecto.
• Aplica el principio de menor privilegio.
• Evita mezclar él código de la lógica de procesos con el
código de la lógica de autorización: This makes
auditing or proving the security of that software
very difficult and time consuming.
IMPLEMENTA CONTROLES DE ACCESO
23. • Realiza chequeos de autorización dato/usuario en
lugar de dato/rol.
IMPLEMENTA CONTROLES DE ACCESO
24. • Los datos necesarios para la autorización deben provenir
del servidor y no del cliente.
IMPLEMENTA CONTROLES DE ACCESO
26. PROTEGE LOS DATOS
• Determina cuales son los datos sensibles y encríptalos
(Ej. Contraseñas almacenadas en la BD)
• Encripta los datos transmitidos usando mecanismo
como TLS (HTTPS).
• Trata de que los datos no sean expuestos
accidentalmente.
• Evita la captura de información mediante técnicas de
enumeración.
• Si vas a crear un método de encriptación propio, más
vale que sepas lo que haces.
28. IMPLEMENTA MECANISMOS DE REGISTROS
DE EVENTOS Y DETECCIÓN DE INTRUSOS
• Monitoreo de la aplicación
• Estadísticas de procesos.
• Auditoría informática.
• Detección de Intrusos (IDS)
• Actividades forenses.
29. • Debe colectarse la información necesaria, ni mucha ni
poca.
• Registrar los ¿Quién, Qué, Cuando, Cómo?
• No registrar datos confidenciales (Desde contraseñas
de usuarios hasta información secreta)
• Estar al tanto de las alertas y registros de actividades.
• Implementar firewall de aplicaciones.
IMPLEMENTA MECANISMOS DE REGISTROS
DE EVENTOS Y DETECCIÓN DE INTRUSOS
31. FORTALECE Y APÓYATE EN LA
SEGURIDAD DE LA TECNOLOGÍA BASE
• Casi siempre la tecnología base viene con un conjunto
de prácticas de seguridad implementadas.
• Los fabricantes mantienen un control sobre las
vulnerabilidades descubiertas y liberan nuevas
versiones para corregir estas.
• La tecnología base viene con una arquitectura de
seguridad predefinida que es preferible comprender y
usar antes de forzarla a utilizar métodos
personalizados.
32. FORTALECE Y APÓYATE EN LA
SEGURIDAD DE LA TECNOLOGÍA BASE
• Infórmate periódicamente sobre las vulnerabilidades
y actualizaciones disponibles para aplicar los parches
necesarios.
• Planificar la actualización de la base tecnológica
según los plazos de soporte de los fabricantes.
• Desarrollar teniendo en cuenta que tienes que
actualizar la tecnología base y sigue las pautas de los
fabricantes.
• Asume el cambio como algo permanente.
34. GESTIONA CORRECTAMENTE LOS ERRORES
• Los errores exponen estructuras internas de las
aplicaciones web, permitiendo adquirir un mejor
conocimiento de esta en función de diversificar las
opciones de ataques disponibles.
• Los mensajes de error específicos pueden ayudar a un
atacante a tomar decisiones durante la intrusión.
• Los errores pueden colocar el sistema en un estado
inestable.
35. Existe el usuario pero la
Contraseña no es incorrecta
El usuario no existe
• Los mensajes de errores deben contener
informaciones generales pero deben permitir que el
usuario pueda guiarse.
GESTIONA CORRECTAMENTE LOS ERRORES
36. • Gestiona los errores de forma centralizada y evitando
bloques duplicados try/catch.
• Registra los errores producidos en el log de la
aplicación web.
GESTIONA CORRECTAMENTE LOS ERRORES
40. CONCLUSIONES
• La seguridad informática es un proceso.
• Hay que estar actualizado sobre los incidentes y
nuevas vulnerabilidades descubiertas.
• Profundiza en las buenas prácticas, componentes y
soluciones para reforzar y mantener actualizada la
seguridad de tus aplicaciones.
41. root@b3h1qu3:~# CONTROLES
PROACTIVOS DE OWASP ■
M e t o d ó l o g o y J e f e d e P r o y e c t o s d e H a c k i n g É t i c o | D i r e c c i ó n d e
S e g u r i d a d I n f o r m á t i c a | V i c e r r e c t o r í a d e T e c n o l o g í a | U n i v e r s i d a d
d e l a s C i e n c i a s I n f o r m á t i c a s | B l o g > B e h i q u e D i g i t a l
Msc. Henry Raúl González Brito