390 likes | 511 Views
OWASP Top 10 – 2010 Los Diez Riesgos más importantes en Aplicaciones Web Miguel Guirao Linux+, GCIH, ITIL OWASP México mguirao@gusly.org. ¿Que ha cambiado?. Metodologia de Valoración. 1 2 3. Ejemplo de Inyección. 1.66 valoración de riesgo. OWASP Top Diez (Edición 2010).
E N D
OWASP Top 10 – 2010Los Diez Riesgos más importantes en Aplicaciones WebMiguel GuiraoLinux+, GCIH, ITILOWASP Méxicomguirao@gusly.org
Metodologia de Valoración 1 2 3 Ejemplo de Inyección 1.66 valoración de riesgo
OWASP Top Diez (Edición 2010) http://www.owasp.org/index.php/Top_10
OWASP Top Diez (Edición 2010) http://www.owasp.org/index.php/Top_10
Account: SKU: Account: SKU: Inyección SQL – Ilustrado "SELECT * FROM accounts WHERE acct=‘’ OR 1=1--’" Account Summary Acct:5424-6066-2134-4334 Acct:4128-7574-3921-0192 Acct:5424-9383-2039-4029 Acct:4128-0004-1234-0293 Tabla DB Respuesta HTTP SQL query SolicitudHTTP Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Databases Legacy Systems Web Services Directories Billing Human Resrcs Application Layer APPLICATIONATTACK Custom Code 1. La aplicación presenta una forma al atacante 2. El atacante envía un ataque a traves de los datos de la forma App Server 3. La aplicación reenvía el ataque a la base de datos por medio de una consulta SQL Web Server Hardened OS 4. La base de datos ejecuta la consulta que contiene el ataque y envía los resultados cifrados a la aplicación Network Layer Firewall Firewall 5. La aplicación descifra los datos como normales y envía los resultados al usuario
Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code XSS Ilustrado 1 Atacante coloca la trampa – actualiza perfil App con vuln. XSS almacenado Atacante ingresa script malicioso en sitio web que guarda los datos en el servidor La victima consulta la página – ve el perfil del atacante 2 El script se ejecuta en el browser de la victima con acceso completo al DOM y cookies 3 Silenciosamente el script envía las cookies de sesión de la victima
Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code Perdida de Autenticación Ilustrado 1 Usuario envía credenciales www.boi.com?JSESSIONID=9FA1DB9EA... El sitio usa reescritura de URL (coloca la sesión en el URL) 2 3 Usuario da click en un link a http://www.hacker.com en un foro Hacker verifica las bitacoras de referencia en www.hacker.com y encuentra la JSESSIONID del usuario 4 5 Hacker usa JSESSIONID y se apodera de la cuenta de la victima
Referencia Directa Insegura a Objetos Ilustrado • Atacante se da cuenta que su parametro acct es 6065 ?acct=6065 • Lo modifica a un número cercano ?acct=6066 • Atacante ve la información de la cuenta de la victima https://www.onlinebank.com/user?acct=6065
El Problema Los navegadores web incluyen automaticamente las credenciales en cada consulta Aún para consultas generadas por una forma, script, o imagen en otro sitio Todos los sitios que emplean unicamente en credenciales automaticas son vulnerables! (y la gran mayoria de los sitios son así) Credenciales Enviadas Automaticamente Cookies de sesión Encabezado basico de autenticación Dirección IP Certificados SSL de lado del cliente Autenticación de dominio Windows Patrón de la Vulnerabilidad CSRF
Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code CSRF Ilustrado Atacante coloca la trampa en algún sitio de Internet(o incluso vía e-mail) 1 App con la vulnerabilidad CSRF La etiqueta oculta <img> contiene el ataque contra el sitio vulnerable Mientras está firmado en el sitio vulnerable,la victima consulta el sitio del atacante 2 3 El sitio vulnerable ve la consulta legitima de la victima y ejecuta la acción solicitada La etiqueta <img> cargada por el navegador – envía la solicitud GET (incluyendo credenciales) al sitio vulnerable
Defectuosa Configuración de Seguridad Ilustrado Database Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code App Configuration Development Framework App Server QA Servers Web Server Hardened OS Insider Test Servers Source Control
Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code Almacenamiento Criptográfico Inseguro Ilustrado Victima ingresa número de TDC en la forma 1 Log files El atacante malicioso se rroba 4 millones de números de TDC 4 2 El manejador de errores registra en la bitacora el número de TDC porque el sistema del vendedor no está disponible 3 Las bitacoras son accesibles por todos los miembros del staff de TI para propositos de correción de errores
Falla de Restricción de Acceso a URL Ilustrado • Atacante nota que el URL indica su rol /user/getAccounts • Lo modifica a otro directorio (rol) /admin/getAccounts, o /manager/getAccounts • Atacante consulta más cuentas que solo la propia
Protección Insuficiente en la Capa de Transporte Ilustrado Socios de Negocio Victima Externa Backend Systems Custom Code Empleados 2 1 Atacante externo roba las credenciales y datos de la red Atacante interno roba las credenciales y datos de la red Atacante Externo Atacante Interno
Finance Transactions Accounts Administration Communication Knowledge Mgmt E-Commerce Bus. Functions Custom Code Redirecciones no validados Ilustrado 1 Atacante envía el ataque a la victima a traves de un sitio o email De: Secretaría de HaciendaTema: Su Retorno de Impuestos No ReclamadosNuestros registros indican que no ha reclamado el regreso de sus impuestos. De click aquí para iniciar el tramite. 3 Aplicación redirecciona a la victima al sitio del atacante La victima da clic en el enlace que contiene parametros no validados 2 Solicitud enviada al sitio vulnerable, incluyendo el sitio destino del atacante como un parametro. El redireccionamiento envía a la victima al sitio del atacante. Evil Site 4 El sitio malicioso instala malware en la victima, o busca información privada con phishing http://www.irs.gov/taxrefund/claim.jsp?year=2006&… &dest=www.evilsite.com
Reenvíos no validados Ilustrado 1 Atacante envía ataque a la página vulnerable a la cual tiene acceso La solicitud enviada a la página vulnerable a la cual el usuario tiene acceso. El reenvío toma al usuario directamente a la página privada, pasando por alto los controles de acceso. • public void sensitiveMethod( HttpServletRequest request, HttpServletResponse response) { • try { • // Do sensitive stuff here. • ... } catch ( ... Aplicación autoriza la solicitud, la cual continua a la página vulnerable 2 Filtro La página de reenvío falla en validar el parametro, enviando al atacante a una página no autorizada, pasando por alto los controles de acceso 3 • public void doPost( HttpServletRequest request, HttpServletResponse response) { • try { • String target = request.getParameter( "dest" ) ); ... request.getRequestDispatcher( target ).forward(request, response); } catch ( ...
Resumén: ¿Cómo solucionamos estos problemas? • Desarrollemos Código Seguro • Sigamos las mejores practicas en la Guía para Construir Aplicaciones Web Seguras de OWASP • http://www.owasp.org/index.php/Guide • Utilicemos el Estandar de Verificación de la Seguridad de Aplicaciones de OWASP como una guía de lo que una aplicación requiere para ser segura • http://www.owasp.org/index.php/ASVS • Utilicemos componentes de seguridad estandar que encajen en tu organización • Utilicemos ESAPI de OWASP como una base para nuestros compoenentes estandar • http://www.owasp.org/index.php/ESAPI • Auditemos nuestras aplicaciones • Que un equipo experno audite nuestra aplicación • Revicemos nosotros mismos nuestras aplicaciones siguiendo los lineamientos de OWASP • Guía de Auditoria de Código de OWASP: http://www.owasp.org/index.php/Code_Review_Guide • Guía de Pruebas de OWASP: http://www.owasp.org/index.php/Testing_Guide
Reconocimientos • Documento Original • Dave WichersCOO, Aspect SecurityOWASP Board Memberdave.wichers@aspectsecurity.comdave.wichers@owasp.org • Adaptación y Traducción al Español • Mtro. Miguel Guirao, MGTI, Linux+, GCIH, ITIL • OWASP Capitulo México • mguirao@gusly.org