Password reset ● Las funcionalidades de password reset son muy sensibles y, en algunos casos, inseguras. En este escenario la vulnerabilidad más buscada es cambiar la contraseña de un usuario arbitrario. ● En general la funcionalidad de password reset se implementa así: ○ Usuario inicia el proceso ingresando su dirección de email ○ Aplicación envía un token generado al azar al email del usuario ○ Usuario prueba su identidad enviando el token a la aplicación y cambia su contraseña
Soluciones ● Utilizar tokens más largos: 128 chars [a-zA-Z0-9] ● Implementar límite de tres intentos para cada proceso (AVoywo13) de password reset POST /recover/as/code/ HTTP/1.1 Host: beta.facebook.com lsd=AVoywo13&n={code}
Password reset En general la funcionalidad de password reset se implementa así: ○ Usuario inicia el proceso ingresando su dirección de email ○ Aplicación envía un token generado al azar al email del usuario ○ Usuario prueba su identidad enviando el token a la aplicación y cambia su contraseña Cuales son las Top 3 peores fallas que pueden existir en este proceso?
Reserva un Uber POST /api/dial/v2/requests HTTP/1.1 Host: dial.uber.com {"start_latitude":12.925151699999999, "start_longitude":77.6657536, "product_id":"db6779d6-d8da-479f-8ac7-8068f4dade6f", "payment_method_id":"563d569b-b598-4cf4-88c1-94a56bd4d73c"} Durante un proceso de reserva de un auto de Uber se envían múltiples peticiones HTTP desde la aplicación mobile a la REST API. Una de esas peticiones está asociada al pago:
Viaja gratis POST /api/dial/v2/requests HTTP/1.1 Host: dial.uber.com {"start_latitude":12.925151699999999, "start_longitude":77.6657536, "product_id":"db6779d6-d8da-479f-8ac7-8068f4dade6f", "payment_method_id":"xyz"} En algunos casos el manejo incorrecto de excepciones o casos de borde terminan mal. En esta vulnerabilidad vemos como el manejo del caso "no se encontró el método de pago" termina en no cobrar el viaje:
SQL injection / Not So Bad Hackers detectaron una vulnerabilidad de SQL injection en ts02.uberinternal.com 1. Fuera del datacenter de Uber 2. Aplicación desarrollada por un tercero: appliance para análisis de riesgo 3. Contiene informacion (no tan sensible) sobre empleados de Uber
No budget ● Todas las aplicaciones van a ser atacadas ● Eventualmente los atacantes van a identificar vulnerabilidades y explotarlas ● No hay suficiente presupuesto: priorizar
Repositorio SVN en sitio productivo Una vez detectado que en el sitio productivo se encuentra disponible la metadata de SVN en el directorio .svn es posible bajarse el código: Con acceso al código el atacante es trivial detectar otras vulnerabilidades. svn co http://www.pornhub.com/.svn/trunk
Luego de investigar y probar... Fue posible para el atacante identificar: ● URL del servidor donde hostean el código y se realiza el desarrollo ● Usuario stefan ● Por medio de fuerza bruta, contraseña para el usuario stefan: 123456 Con estas credenciales el atacante podría haber realizado modificaciones sobre el código de la aplicación Web, posiblemente para capturar tarjetas de crédito en la sección de pago de suscripciones.
For hire ¿Necesitas alguno de estos servicios? ● Application Penetration Test ● Secure Coding Training for Developers ● Source Code Review ● Cloud Security Assessment Escribime, puedo ayudarte a desarrollar y mantener seguras tus aplicaciones web.