● Definiciones.● Mitos de seguridad.● Como documentarse.● Como analizar tu website.● NodeGoat.● Recomendaciones.
Temas
Seguridad
- Es relativa. Será tan efectiva como el valor de lo que se quiere proteger.
- Incluye a todos los componentes que integran el sistema (hardware, software, personas, etc.).
- Es un estado temporal. Debe reevaluarse periodicamente.
Source: The Protection of Information in Computer Systems. – Jeromoe Saltzer & Michael Schroeder.
Mito
Las claves necesitan números, símbolos y mayúsculas para ser seguras.
"durante 20 años de esfuerzo, hemos entrenado a todo el mundo a usar claves que son difíciles de recordar para los humanos y fáciles de adivinar para las computadoras"
- XKCD
Mito
Usar un framework (o un lenguaje) hace que mi aplicación sea segura.
Ing. Lead Programador Senior
OWASP Top 101. Ataques de Inyección.2. Problemas de autenticación y manejo de sesiones.3. Cross-Site Scripting (XSS).4. Accesos a recursos no autorizados.5. Mala configuración de servicios.6. Data sensible expuesta.7. Uso no autorizado de funcionalidades.8. Cross-Site Request Forgery.9. Uso de componentes con vulnerabilidades conocidas.
10. Redireccionamientos no validados.
OWASP Top 101. Ataques de Inyección.2. Problemas de autenticación y manejo de sesiones.3. Cross-Site Scripting (XSS).4. Accesos a recursos no autorizados.5. Mala configuración de servicios.6. Data sensible expuesta.7. Uso no autorizado de funcionalidades.8. Cross-Site Request Forgery.9. Uso de componentes con vulnerabilidades conocidas.
10. Redireccionamientos no validados.
2. Mal manejo de la autenticación
● Arregla problemas de XSS, Inyección, validación, etc.
● Usa HTTPS.● Usa HTTP-Only y expira las cookies en un
tiempo prudente.● Cuando el usuario haga login, dale un
session ID nuevo. (Session Fixation)
OWASP Top 10 en R.D.5. Mala configuración de servicios.6. Data sensible expuesta.9. Uso de componentes con vulnerabilidades conocidas.0. Mal manejo de subida de archivos (defacement)
Servidor Público
Cliente
1. El cliente envía el dato confidencial por HTTPS
Más información: https://www.pcicomplianceguide.org/pci-dss-v3-1-and-ssl-what-you-should-do-now/
2. El servidor público encripta la información de la tarjeta usando el certificado público.
Servidor Público
Más información: https://github.com/quartzjer/ursa
3. El servidor público envía los datos del usuario y la información encriptada al servidor privado.
DATA: { idUsuario:
tarjeta:}
Servidor Público
Servidor Privado
Nota: El servidor público solo tiene acceso de escritura al servidor privado Más información: http://www.noelherrick.com/blog/creating-users-granting-permissions-in-mysql
4. El Operador accesa el Servidor Administrativo.
OperadorServidor
Administrativo
DATA: { usuario: ******
clave: ********}
5. El Servidor Administrativo genera un token aleatorio y lo encripta usando el Certificado Público.
Servidor Administrativo
6. El Servidor Administrativo envía el token encriptado al operador.
OperadorServidor
Administrativo
7. El Operador espera a Chrome que Chrome busque los certificados en un dispositivo externo.
Más información: https://developer.chrome.com/apps/app_usb
OperadorChrome
USB
Certificados
8. Chrome usa el Certificado Privado para desencriptar el token.
Más información: https://www.chromium.org/administrators/certificate-management-extension-api-on-chrome-os
Chrome
9. El Operador envía el token desencriptado al Servidor Administrativo.
OperadorServidor
Administrativo
10. El Servidor Administrativo compara los tokens y pide la información privada de un usuario específico al
servidor privado.
Servidor Administrativo Servidor
Privado
DATA: { idUsuario:}
11. El Servidor Privado responde con la información necesaria y el Servidor Administrativo la pasa al
Operador.
Servidor Administrativo
Servidor Privado
Operador
DATA: { idUsuario:
tarjeta:}
13. El Operador recive la Información Privada desencriptada y realiza la transacción deseada.
OperadorChrome
Analizando vulnerabilidades
Herramientas de prueba de vulnerabilidades.
OWASP ZAP (Open Source)
ACUNETIX(Comercial)
PhantomJS(Open Source, Manual)
Recomendaciones
● Documentarse bien sobre el tema.● Minimizar el uso de componentes externos
de poca confianza.● Usar solo los servicios necesarios.● Implementar Unit Testings.