seguridad web

24
Seguridad Web Octubre, 2014 @camposer - Madrid

Upload: camposer

Post on 08-Jul-2015

168 views

Category:

Technology


0 download

DESCRIPTION

Taller de Seguridad para Aplicaciones Web (concienciación)

TRANSCRIPT

Page 1: Seguridad web

Seguridad Web

Octubre, 2014@camposer - Madrid

Page 2: Seguridad web

Seguridad...

● “Dicho de un mecanismo: Que asegura algún buen funcionamiento, precaviendo que este falle, se frustre o se violente.” Real Academia Española

● “Si usted piensa que la tecnología puede resolver sus problemas de seguridad, entonces usted no entiende ni los problemas ni la tecnología” Bruce Schneier

● “La seguridad es una cadena y es tan segura como su eslabón más débil” Bruce Schneier

● “La seguridad es un proceso, no un producto” Bruce Schneier

Page 3: Seguridad web

Conceptos básicos

A continuación se presentan los conceptos básicos relacionados con la seguridad de sistemas:● Agente de amenaza (atacante). ● Vulnerabilidad.● Ataque.● Contramedida.

Page 4: Seguridad web

Aplicaciones Web

Es una aplicación que se accede a través de un Navegador Web sobre una red (Ej. Internet).

Los Navegadores Web interpretan etiquetas HTML y lenguajes de script (Ej. Javascript) permitiendo a sus usuarios visualizar documentos de texto, posiblemente con recursos multimedia incrustados.

Page 5: Seguridad web

Características de las Aplicaciones Web

Las Aplicaciones Web son alojadas en Servidores Web que son accedidos por Navegadores Web a través de peticiones HTTP.

HTTP es un protocolo de ráfaga que no conserva el estado conversacional.

Servidor Web

AplicaciónWeb

Cliente

Petición

Respuesta

Red

Page 6: Seguridad web

Riesgos de Seguridad en Aplicaciones - Top 10 OWASP*

1.Inyección

2.Pérdida de autenticación y gestión de sesiones

3.Secuencia de comandos en sitios cruzados (XSS)

4.Referencia directa insegura a objetos

5.Configuración de seguridad incorrecta

6.Exposición de datos sensibles

7.Ausencia de control de acceso a funciones

8.Falsificación de peticiones en sitios cruzados (CSRF)

9.Utilización de componentes con vulnerabilidades conocidas

10.Redirecciones y reenvíos no validados

* OWASP Top 10 2013

Page 7: Seguridad web

1. Inyección

La inyección de faltas permite a un atacante ejecutar sentencias SQL, LDAP, entre otras, del lado del servidor engañando a sus intérpretes (motores). Por ejemplo: a través de la inyección de sentencias SQL, utilizando campos de un formulario sin validaciones, se podría modificar información contenida en una Base de Datos.

Page 8: Seguridad web

2. Pérdida de autenticación y gestión de sesiones

Las funciones de la aplicación relacionadas a autenticación y gestión de sesiones son frecuentemente implementadas de forma incorrecta, permitiendo a los atacantes comprometer contraseñas, claves, token de sesiones, o explotar otras fallas de implementación para asumir la identidad de otros usuarios.

Page 9: Seguridad web

3. Cross Site Scripting (XSS)

Las fallas XSS ocurren cada vez que una aplicación toma datos no confiables y los envía al navegador web sin una validación y codificación apropiada. XSS permite a los atacantes ejecutar secuencia de comandos en el navegador de la victima los cuales pueden secuestrar las sesiones de usuario, destruir sitios web, o dirigir al usuario hacia un sitio malicioso.

Page 10: Seguridad web

4. Referencia directa insegura a objetos

Una referencia directa a objetos ocurre cuando un desarrollador expone una referencia a un objeto de implementación interno, tal como un fichero, directorio, o base de datos. Sin un chequeo de control de acceso u otra protección, los atacantes pueden manipular estas referencias para acceder datos no autorizados.

Page 11: Seguridad web

5. Configuración de seguridad incorrecta

Una buena seguridad requiere tener definida e implementada una configuración segura para la aplicación, marcos de trabajo, servidor de aplicación, servidor web, base de datos, y plataforma. Todas estas configuraciones deben ser definidas, implementadas, y mantenidas ya que por lo general no son seguras por defecto. Esto incluye mantener todo el software actualizado, incluidas las librerías de código utilizadas por la aplicación.

Page 12: Seguridad web

6. Exposición de datos sensibles

Muchas aplicaciones web no protegen adecuadamente datos sensibles tales como números de tarjetas de crédito o credenciales de autenticación. Los atacantes pueden robar o modificar tales datos para llevar a cabo fraudes, robos de identidad u otros delitos. Los datos sensibles requieren de métodos de protección adicionales tales como el cifrado de datos, así como también de precauciones especiales en un intercambio de datos con el navegador.

Page 13: Seguridad web

7. Ausencia de control de acceso a funciones

La mayoría de aplicaciones web verifican los derechos de acceso a nivel de función antes de hacer visible en la misma interfaz de usuario. A pesar de esto, las aplicaciones necesitan verificar el control de acceso en el servidor cuando se accede a cada función. Si las solicitudes de acceso no se verifican, los atacantes podrán realizar peticiones sin la autorización apropiada.

Page 14: Seguridad web

8. Cross Site Request Forgery (CSRF)

Un ataque CSRF podría obligar a una víctima a realizar peticiones a aplicaciones Web donde previamente ha iniciado sesión. Por ejemplo: al mantener varias sesiones abiertas con diferentes sitios, se podría acceder a un sitio malicioso, que incluya elementos dentro de sus páginas, que realicen peticiones a otros sitios donde el usuario mantiene una sesión abierta.

Page 15: Seguridad web

9. Utilización de componentes con vulnerabilidades conocidas

Algunos componentes tales como las librerías, los frameworks y otros módulos de software casi siempre funcionan con todos los privilegios. Si se ataca un componente vulnerable esto podría facilitar la intrusión en el servidor o una perdida seria de datos. Las aplicaciones que utilicen componentes con vulnerabilidades conocidas debilitan las defensas de la aplicación y permiten ampliar el rango de posibles ataques e impactos.

Page 16: Seguridad web

10. Redirecciones y reenvíos no validados

Las aplicaciones web frecuentemente redirigen y reenvían a los usuarios hacia otras páginas o sitios web, y utilizan datos no confiables para determinar la página de destino. Sin una validación apropiada, los atacantes pueden redirigir a las víctimas hacia sitios de phishing o malware, o utilizar reenvíos para acceder páginas no autorizadas.

Page 17: Seguridad web

Detección de vulnerabilidades

Las vulnerabilidades de una Aplicación Web pueden ser detectadas utilizando los siguientes métodos:

1.Escaneo de vulnerabilidades.

2.Revisión de código.

3.Pruebas de penetración.

4.Análisis estático.

Page 18: Seguridad web

1. Escaneo de vulnerabilidades

A continuación se presentan algunos enlaces donde podrá conseguir herramientas para el escaneo de vulnerabilidades:● Los 10 mejores Escaners de Vulnerabilidades Web .● Centro de descarga de OWASP (Open Web

Application Security Project).

Se sugiere la descarga de Nikto2.

Page 19: Seguridad web

2. Revisión de código

A continuación se presentan algunos enlaces donde podrá conseguir herramientas para la revisión de código:● Guía para la revisión de código de OWASP.● CodeCrawler. Herramienta de revisión de

código automática.

Page 20: Seguridad web

3. Pruebas de penetración

Un Penetration Testing o Test de Penetración, es un procedimiento metodológico y sistemático en el que se simula un ataque real a una red o sistema, con el fin de descubrir y reparar sus problemas de seguridad, a continuación veremos la documentación mas recomendada para aprender a realizar correctamente un test de penetración.

* ¿Cómo se realiza un Pentest?

Page 21: Seguridad web

4. Análisis estático

Ver todas las técnicas de verificación:● Pair programming● Code review● Peer review● Expert review● Checklists

Page 22: Seguridad web

Contramedidas

Las contramedidas son acciones a ejecutar tras la detección de alguna vulnerabilidad. Luego, existen algunos principios importantes a considerar en todo momento:● Aplicar defensa profunda (en varias capas).● Utilizar un modelo de seguridad positiva. ● Manejar de forma adecuada los errores.● Correr aplicaciones con permisería restringida.● Evitar la seguridad a través de la oscuridad.● Mantener la seguridad simple.● Detectar intrusiones.● No confiar en la infraestructura.● No confiar en los servicios.● Establecer seguridad por omisión.

Page 23: Seguridad web

Contramedidas inmediatas

Hay algunas contramedidas que puede implementar de forma inmediata para asegurar sus aplicaciones:● Documentar y probar todos sus Sistemas.

¿Integración Continua?● Utilizar entornos de desarrollo y de trabajo

estándares (Ej. Symfony, Spring, Rails). ● Utilizar firewalls para aplicaciones Web (Ej.

ModSecurity2).

Page 24: Seguridad web

¡Muchas gracias por su atención!